From 415cad25b34d202f395ac92abd6f9a15121a9d58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wojciech=20Pi=C4=85tkowski?= Date: Wed, 3 Dec 2025 12:31:49 +0100 Subject: [PATCH] fix: some improvements to handling cases when keyholders gets disconnected --- .../OpenLockedBox/hooks/useInitiateCounter.ts | 5 ++++ fe/src/stores/boxStore/joinLockedBoxStore.ts | 8 +++++ fe/src/stores/boxStore/openLockedBoxStore.ts | 30 ++++++++++++++----- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/fe/src/components/Box/sub-pages/RestoreBoxes/OpenLockedBox/hooks/useInitiateCounter.ts b/fe/src/components/Box/sub-pages/RestoreBoxes/OpenLockedBox/hooks/useInitiateCounter.ts index 16e7d55..8781751 100644 --- a/fe/src/components/Box/sub-pages/RestoreBoxes/OpenLockedBox/hooks/useInitiateCounter.ts +++ b/fe/src/components/Box/sub-pages/RestoreBoxes/OpenLockedBox/hooks/useInitiateCounter.ts @@ -41,6 +41,11 @@ export function useInitiateCounter({ ); }, [sharesRequiredToStartCounter, shareAccessKeyMapByKeyHolderId]); + console.log("------"); + console.log("isTresholdReached", isTresholdReached); + console.log("sharesRequiredToStartCounter", sharesRequiredToStartCounter); + console.log("shareAccessKeyMapByKeyHolderId", shareAccessKeyMapByKeyHolderId); + const prevIsTresholdReached = usePrevious(isTresholdReached); useEffect(() => { diff --git a/fe/src/stores/boxStore/joinLockedBoxStore.ts b/fe/src/stores/boxStore/joinLockedBoxStore.ts index c8534a7..e592bba 100644 --- a/fe/src/stores/boxStore/joinLockedBoxStore.ts +++ b/fe/src/stores/boxStore/joinLockedBoxStore.ts @@ -258,6 +258,14 @@ export const useJoinLockedBoxStore = create()( ), ); + const shareAccessKeyByKeyHolderId = { + ...state.shareAccessKeyByKeyHolderId, + }; + + for (const newOfflineKeyholders of newOffLineKeyHolders) { + delete shareAccessKeyByKeyHolderId[newOfflineKeyholders.id]; + } + filteredPayload.onlineKeyHolders = newOnlineKeyHolders; filteredPayload.offLineKeyHolders = newOffLineKeyHolders; } diff --git a/fe/src/stores/boxStore/openLockedBoxStore.ts b/fe/src/stores/boxStore/openLockedBoxStore.ts index 235379d..0d19b32 100644 --- a/fe/src/stores/boxStore/openLockedBoxStore.ts +++ b/fe/src/stores/boxStore/openLockedBoxStore.ts @@ -180,15 +180,27 @@ export const useOpenLockedBoxStore = create()( const onlineKeyHoldersCount = newOnlineKeyHolders.length; + const shareAccessKeyByKeyHolderId = { + ...state.shareAccessKeyByKeyHolderId, + }; + + const shareAccessKeyMapByKeyHolderId = { + ...Object.fromEntries( + Object.entries(state.shareAccessKeyMapByKeyHolderId).map( + ([keyHolderId, shareAccesKeyMap]) => { + delete shareAccesKeyMap[disconnectedKeyHolderId]; + return [keyHolderId, shareAccesKeyMap]; + }, + ), + ), + }; + + delete shareAccessKeyByKeyHolderId[disconnectedKeyHolderId]; + delete shareAccessKeyMapByKeyHolderId[disconnectedKeyHolderId]; + const newState = { - shareAccessKeyByKeyHolderId: { - ...state.shareAccessKeyByKeyHolderId, - [disconnectedKeyHolderId]: false, - }, - shareAccessKeyMapByKeyHolderId: { - ...state.shareAccessKeyMapByKeyHolderId, - [disconnectedKeyHolderId]: {}, - }, + shareAccessKeyByKeyHolderId, + shareAccessKeyMapByKeyHolderId, onlineKeyHolders: newOnlineKeyHolders, offLineKeyHolders: [ disconnectedKeyHolder, @@ -196,6 +208,8 @@ export const useOpenLockedBoxStore = create()( ], }; + console.log(newState); + if ( onlineKeyHoldersCount === 0 && state.getTopLobbyMetaStatus() !== "keyholder-able-to-unlock"