diff --git a/src/layouts/Main.tsx b/src/layouts/Main.tsx index 9cdc549..0fd5526 100644 --- a/src/layouts/Main.tsx +++ b/src/layouts/Main.tsx @@ -39,6 +39,7 @@ export const MainLayout = () => { const [loadingSpinnerDesc, setLoadingSpinnerDesc] = useState(`Loading App`) const isLoggedIn = useAppSelector((state) => state.auth?.loggedIn) const authState = useAppSelector((state) => state.auth) + const usersAppData = useAppSelector((state) => state.userAppData) // Ref to track if `subscribeForSigits` has been called const hasSubscribed = useRef(false) @@ -174,12 +175,10 @@ export const MainLayout = () => { }, [dispatch]) /** - * When authState change user logged in / or app reloaded - * we set robohash avatar in the global state based on user npub - * so that avatar will be consistent across the app when kind 0 is empty + * Subscribe for the sigits */ useEffect(() => { - if (authState && isLoggedIn) { + if (authState && isLoggedIn && usersAppData) { const pubkey = authState.usersPubkey || authState.keyPair?.public if (pubkey && !hasSubscribed.current) { @@ -190,6 +189,17 @@ export const MainLayout = () => { // Mark `subscribeForSigits` as called hasSubscribed.current = true } + } + }, [authState, isLoggedIn, usersAppData]) + + /** + * When authState change user logged in / or app reloaded + * we set robohash avatar in the global state based on user npub + * so that avatar will be consistent across the app when kind 0 is empty + */ + useEffect(() => { + if (authState && isLoggedIn) { + const pubkey = authState.usersPubkey || authState.keyPair?.public if (pubkey) { dispatch(setUserRobotImage(getRoboHashPicture(pubkey))) diff --git a/src/utils/nostr.ts b/src/utils/nostr.ts index fb96186..ec8c97e 100644 --- a/src/utils/nostr.ts +++ b/src/utils/nostr.ts @@ -875,7 +875,10 @@ export const subscribeForSigits = async (pubkey: string) => { } const processReceivedEvent = async (event: Event, difficulty: number = 5) => { - const processedEvents = store.getState().userAppData?.processedGiftWraps || [] + const processedEvents = store.getState().userAppData?.processedGiftWraps + + // Abort processing if userAppData is undefined + if (!processedEvents) return if (processedEvents.includes(event.id)) return