diff options
author | dan <dan.abramov@gmail.com> | 2023-11-17 17:31:26 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-17 09:31:26 -0800 |
commit | c858b583072d7858f50ee0d56bb76dbce5a9c13d (patch) | |
tree | 6fa7e969abc71b1b21c7586856bf013b8a3a96c8 /src/state | |
parent | 9c8a1b8a3118f6a6994a3c6cf8e5b70ef10049ab (diff) | |
download | voidsky-c858b583072d7858f50ee0d56bb76dbce5a9c13d.tar.zst |
Do less work (#1953)
Diffstat (limited to 'src/state')
-rw-r--r-- | src/state/cache/post-shadow.ts | 10 | ||||
-rw-r--r-- | src/state/cache/profile-shadow.ts | 10 | ||||
-rw-r--r-- | src/state/queries/preferences/index.ts | 20 |
3 files changed, 17 insertions, 23 deletions
diff --git a/src/state/cache/post-shadow.ts b/src/state/cache/post-shadow.ts index c49097700..d20f6ebaa 100644 --- a/src/state/cache/post-shadow.ts +++ b/src/state/cache/post-shadow.ts @@ -1,4 +1,4 @@ -import {useEffect, useState, useCallback, useRef} from 'react' +import {useEffect, useState, useMemo, useCallback, useRef} from 'react' import EventEmitter from 'eventemitter3' import {AppBskyFeedDefs} from '@atproto/api' import {Shadow} from './types' @@ -55,9 +55,11 @@ export function usePostShadow( firstRun.current = false }, [post]) - return state.ts > ifAfterTS - ? mergeShadow(post, state.value) - : {...post, isShadowed: true} + return useMemo(() => { + return state.ts > ifAfterTS + ? mergeShadow(post, state.value) + : {...post, isShadowed: true} + }, [post, state, ifAfterTS]) } export function updatePostShadow(uri: string, value: Partial<PostShadow>) { diff --git a/src/state/cache/profile-shadow.ts b/src/state/cache/profile-shadow.ts index 59f79634d..5323effaf 100644 --- a/src/state/cache/profile-shadow.ts +++ b/src/state/cache/profile-shadow.ts @@ -1,4 +1,4 @@ -import {useEffect, useState, useCallback, useRef} from 'react' +import {useEffect, useState, useMemo, useCallback, useRef} from 'react' import EventEmitter from 'eventemitter3' import {AppBskyActorDefs} from '@atproto/api' import {Shadow} from './types' @@ -56,9 +56,11 @@ export function useProfileShadow( firstRun.current = false }, [profile]) - return state.ts > ifAfterTS - ? mergeShadow(profile, state.value) - : {...profile, isShadowed: true} + return useMemo(() => { + return state.ts > ifAfterTS + ? mergeShadow(profile, state.value) + : {...profile, isShadowed: true} + }, [profile, state, ifAfterTS]) } export function updateProfileShadow( diff --git a/src/state/queries/preferences/index.ts b/src/state/queries/preferences/index.ts index fe719225d..e7fa3b15b 100644 --- a/src/state/queries/preferences/index.ts +++ b/src/state/queries/preferences/index.ts @@ -1,11 +1,6 @@ -import {useEffect, useState} from 'react' +import {useMemo} from 'react' import {useQuery, useMutation, useQueryClient} from '@tanstack/react-query' -import { - LabelPreference, - BskyFeedViewPreference, - ModerationOpts, -} from '@atproto/api' -import isEqual from 'lodash.isequal' +import {LabelPreference, BskyFeedViewPreference} from '@atproto/api' import {track} from '#/lib/analytics/analytics' import {getAge} from '#/lib/strings/time' @@ -91,21 +86,16 @@ export function usePreferencesQuery() { export function useModerationOpts() { const {currentAccount} = useSession() - const [opts, setOpts] = useState<ModerationOpts | undefined>() const prefs = usePreferencesQuery() - useEffect(() => { + const opts = useMemo(() => { if (!prefs.data) { return } - // only update this hook when the moderation options change - const newOpts = getModerationOpts({ + return getModerationOpts({ userDid: currentAccount?.did || '', preferences: prefs.data, }) - if (!isEqual(opts, newOpts)) { - setOpts(newOpts) - } - }, [prefs.data, currentAccount, opts, setOpts]) + }, [currentAccount?.did, prefs.data]) return opts } |