optimize zustang

This commit is contained in:
PhilReact 2025-03-26 00:47:33 +02:00
parent 2898eeabf0
commit 78a0110f11
5 changed files with 42 additions and 38 deletions

View File

@ -113,18 +113,23 @@ export const MemorizedComponent = ({
retryAttempts = 2, retryAttempts = 2,
onResults onResults
}: PropsResourceListDisplay) => { }: PropsResourceListDisplay) => {
const { filterOutDeletedResources } = useCacheStore();
const {identifierOperations, lists} = useGlobal() const {identifierOperations, lists} = useGlobal()
const deletedResources = useCacheStore().deletedResources
const memoizedParams = useMemo(() => JSON.stringify(search), [search]); const memoizedParams = useMemo(() => JSON.stringify(search), [search]);
const addList = useListStore().addList
const removeFromList = useListStore().removeFromList
const temporaryResources = useCacheStore().getTemporaryResources(listName) const temporaryResources = useCacheStore().getTemporaryResources(listName)
const addItems = useListStore().addItems const list = useListStore((state) => state.lists[listName]?.items) || [];
const list = useListStore().getListByName(listName)
const [isLoading, setIsLoading] = useState(list?.length > 0 ? false : true); const [isLoading, setIsLoading] = useState(list?.length > 0 ? false : true);
const isListExpired = useCacheStore().isListExpired(listName) const isListExpired = useCacheStore().isListExpired(listName)
const filterOutDeletedResources = useCacheStore((s) => s.filterOutDeletedResources);
const deletedResources = useCacheStore((s) => s.deletedResources);
const addList = useListStore((s) => s.addList);
const removeFromList = useListStore((s) => s.removeFromList);
const addItems = useListStore((s) => s.addItems);
const [isLoadingMore, setIsLoadingMore] = useState(false) const [isLoadingMore, setIsLoadingMore] = useState(false)
const initialized = useRef(false) const initialized = useRef(false)
const [generatedIdentifier, setGeneratedIdentifier] = useState("") const [generatedIdentifier, setGeneratedIdentifier] = useState("")
@ -174,8 +179,6 @@ export const MemorizedComponent = ({
parsedParams.identifier = generatedIdentifier parsedParams.identifier = generatedIdentifier
const responseData = await lists.fetchResources(parsedParams, listName, returnType, true); // Awaiting the async function const responseData = await lists.fetchResources(parsedParams, listName, returnType, true); // Awaiting the async function
addList(listName, responseData || []); addList(listName, responseData || []);
} catch (error) { } catch (error) {
@ -200,8 +203,9 @@ export const MemorizedComponent = ({
const {elementRef} = useScrollTracker(listName, list?.length > 0, disableScrollTracker); const {elementRef} = useScrollTracker(listName, list?.length > 0, disableScrollTracker);
const setSearchCacheExpiryDuration = useCacheStore().setSearchCacheExpiryDuration const setSearchCacheExpiryDuration = useCacheStore((s) => s.setSearchCacheExpiryDuration);
const setResourceCacheExpiryDuration = useCacheStore().setResourceCacheExpiryDuration const setResourceCacheExpiryDuration = useCacheStore((s) => s.setResourceCacheExpiryDuration);
useEffect(()=> { useEffect(()=> {
if(searchCacheDuration){ if(searchCacheDuration){
setSearchCacheExpiryDuration(searchCacheDuration) setSearchCacheExpiryDuration(searchCacheDuration)
@ -213,7 +217,7 @@ export const MemorizedComponent = ({
} }
}, []) }, [])
const listToDisplay = useMemo(()=> { const listToDisplay = useMemo(()=> {
return filterOutDeletedResources([...temporaryResources, ...list]) return filterOutDeletedResources([...temporaryResources, ...(list || [])])
}, [list, listName, deletedResources, temporaryResources]) }, [list, listName, deletedResources, temporaryResources])
useEffect(()=> { useEffect(()=> {
@ -384,7 +388,7 @@ export const ListItemWrapper: React.FC<ListItemWrapperProps> = ({
defaultLoaderParams, defaultLoaderParams,
renderListItemLoader, renderListItemLoader,
}) => { }) => {
const getResourceCache = useCacheStore().getResourceCache; const getResourceCache = useCacheStore((s)=> s.getResourceCache)
const findCachedResource = getResourceCache( const findCachedResource = getResourceCache(
`${item.service}-${item.name}-${item.identifier}`, `${item.service}-${item.name}-${item.identifier}`,

View File

@ -5,8 +5,8 @@ import { EnumCollisionStrength, hashWord } from "../utils/encryption";
export const useAppInfo = (appName?: string, publicSalt?: string) => { export const useAppInfo = (appName?: string, publicSalt?: string) => {
const setAppState = useAppStore().setAppState const setAppState = useAppStore((state)=> state.setAppState)
const appNameHashed = useAppStore().appNameHashed const appNameHashed = useAppStore((state)=> state.appNameHashed)
const handleAppInfoSetup = useCallback(async (name: string, salt: string)=> { const handleAppInfoSetup = useCallback(async (name: string, salt: string)=> {

View File

@ -27,20 +27,21 @@ export interface UseAuthProps {
} }
export const useAuth = ({ balanceSetting, authenticateOnMount }: UseAuthProps) => { export const useAuth = ({ balanceSetting, authenticateOnMount }: UseAuthProps) => {
const { const address = useAuthStore((s) => s.address);
address, const publicKey = useAuthStore((s) => s.publicKey);
publicKey, const name = useAuthStore((s) => s.name);
name, const avatarUrl = useAuthStore((s) => s.avatarUrl);
avatarUrl, const balance = useAuthStore((s) => s.balance);
balance,
isLoadingUser, const isLoadingUser = useAuthStore((s) => s.isLoadingUser);
isLoadingInitialBalance, const isLoadingInitialBalance = useAuthStore((s) => s.isLoadingInitialBalance);
errorLoadingUser, const errorLoadingUser = useAuthStore((s) => s.errorLoadingUser);
setErrorLoadingUser,
setIsLoadingUser, const setErrorLoadingUser = useAuthStore((s) => s.setErrorLoadingUser);
setUser, const setIsLoadingUser = useAuthStore((s) => s.setIsLoadingUser);
setBalance const setUser = useAuthStore((s) => s.setUser);
} = useAuthStore(); const setBalance = useAuthStore((s) => s.setBalance);
const balanceSetIntervalRef = useRef<null | ReturnType<typeof setInterval>>(null); const balanceSetIntervalRef = useRef<null | ReturnType<typeof setInterval>>(null);

View File

@ -23,8 +23,8 @@ export const usePublish = (
const [isLoading, setIsLoading] = useState(true); const [isLoading, setIsLoading] = useState(true);
const [error, setError] = useState<null | string>(null); const [error, setError] = useState<null | string>(null);
const publish = usePublishStore().getPublish(metadata || null, true); const publish = usePublishStore().getPublish(metadata || null, true);
const setPublish = usePublishStore().setPublish; const setPublish = usePublishStore((state)=> state.setPublish)
const getPublish = usePublishStore().getPublish; const getPublish = usePublishStore(state=> state.getPublish)
const [hasResource, setHasResource] = useState<boolean | null>(null); const [hasResource, setHasResource] = useState<boolean | null>(null);
const fetchRawData = useCallback(async (item: QortalGetMetadata) => { const fetchRawData = useCallback(async (item: QortalGetMetadata) => {

View File

@ -20,14 +20,13 @@ export interface Resource {
data: any; data: any;
} }
export const useResources = (retryAttempts: number = 2) => { export const useResources = (retryAttempts: number = 2) => {
const { const setSearchCache = useCacheStore((s) => s.setSearchCache);
setSearchCache, const getSearchCache = useCacheStore((s) => s.getSearchCache);
getSearchCache, const getResourceCache = useCacheStore((s) => s.getResourceCache);
getResourceCache, const setResourceCache = useCacheStore((s) => s.setResourceCache);
setResourceCache, const addTemporaryResource = useCacheStore((s) => s.addTemporaryResource);
addTemporaryResource, const markResourceAsDeleted = useCacheStore((s) => s.markResourceAsDeleted);
markResourceAsDeleted
} = useCacheStore();
const deleteList = useListStore(state => state.deleteList) const deleteList = useListStore(state => state.deleteList)
const requestControllers = new Map<string, AbortController>(); const requestControllers = new Map<string, AbortController>();