diff --git a/src/App.tsx b/src/App.tsx index c9698eb..712cdf6 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -818,6 +818,7 @@ function App() { chrome.runtime.sendMessage({ action: "logout" }, (response) => { if (response) { resetAllStates(); + executeEvent("logout-event", {}); } }); } catch (error) {} @@ -864,6 +865,8 @@ function App() { setHasLocalNode(false); setOpenAdvancedSettings(false); setConfirmUseOfLocal(false) + setTxList([]) + setMemberGroups([]) }; const authenticateWallet = async () => { diff --git a/src/components/Group/Group.tsx b/src/components/Group/Group.tsx index 200e478..ee5390e 100644 --- a/src/components/Group/Group.tsx +++ b/src/components/Group/Group.tsx @@ -909,6 +909,66 @@ export const Group = ({ unsubscribeFromEvent("openDirectMessage", openDirectChatFromNotification); }; }, [directs, selectedDirect]); + + const resetAllStatesAndRefs = () => { + // Reset all useState values to their initial states + setSecretKey(null); + setSecretKeyPublishDate(null); + setSecretKeyDetails(null); + setNewEncryptionNotification(null); + setMemberCountFromSecretKeyData(null); + setSelectedGroup(null); + setSelectedDirect(null); + setGroups([]); + setDirects([]); + setAdmins([]); + setAdminsWithNames([]); + setMembers([]); + setGroupOwner(null); + setTriedToFetchSecretKey(false); + setOpenAddGroup(false); + setIsInitialGroups(false); + setOpenManageMembers(false); + setMemberGroups([]); // Assuming you're clearing the context here as well + setTimestampEnterData({}); + setChatMode("groups"); + setNewChat(false); + setOpenSnack(false); + setInfoSnack(null); + setIsLoadingNotifyAdmin(false); + setIsLoadingGroups(false); + setIsLoadingGroup(false); + setFirstSecretKeyInCreation(false); + setGroupSection("home"); + setGroupAnnouncements({}); + setDefaultThread(null); + + // Reset all useRef values to their initial states + hasInitialized.current = false; + hasInitializedWebsocket.current = false; + lastGroupNotification.current = null; + isFocusedRef.current = true; + selectedGroupRef.current = null; + selectedDirectRef.current = null; + groupSectionRef.current = null; + checkGroupInterval.current = null; + isLoadingOpenSectionFromNotification.current = false; + setupGroupWebsocketInterval.current = null; + settimeoutForRefetchSecretKey.current = null; + }; + + + const logoutEventFunc = ()=> { + resetAllStatesAndRefs() + } + + useEffect(() => { + subscribeToEvent("logout-event", logoutEventFunc); + + return () => { + unsubscribeFromEvent("logout-event", logoutEventFunc); + }; + }, []); const openGroupChatFromNotification = (e) => { if (isLoadingOpenSectionFromNotification.current) return;