diff --git a/web/database/sqlite-data-handler.js b/web/database/sqlite-data-handler.js --- a/web/database/sqlite-data-handler.js +++ b/web/database/sqlite-data-handler.js @@ -2,6 +2,7 @@ import * as React from 'react'; +import { getMessageForException } from 'lib/utils/errors.js'; import { useDispatch } from 'lib/utils/redux-utils.js'; import { getDatabaseModule } from './database-module-provider.js'; @@ -19,28 +20,52 @@ const handleSensitiveData = React.useCallback(async () => { const databaseModule = await getDatabaseModule(); + let currentDBUserID, + errorGettingUserID = false; try { const currentUserData = await databaseModule.schedule({ type: workerRequestMessageTypes.GET_CURRENT_USER_ID, }); - const currentDBUserID = currentUserData?.userID; + currentDBUserID = currentUserData?.userID; + } catch (error) { + errorGettingUserID = true; + console.error( + `Error setting current user ID: ${ + getMessageForException(error) ?? 'unknown' + }`, + ); + } - if (currentDBUserID === currentLoggedInUserID) { - return; - } + if (currentDBUserID === currentLoggedInUserID && !errorGettingUserID) { + return; + } - if (currentDBUserID) { + if (currentDBUserID || errorGettingUserID) { + try { await databaseModule.init({ clearDatabase: true }); + } catch (error) { + console.error( + `Error clearing sensitive data: ${ + getMessageForException(error) ?? 'unknown' + }`, + ); + // We return here to avoid assigning new user to old data + return; } - if (currentLoggedInUserID) { + } + if (currentLoggedInUserID) { + try { await databaseModule.schedule({ type: workerRequestMessageTypes.SET_CURRENT_USER_ID, userID: currentLoggedInUserID, }); + } catch (error) { + console.error( + `Error setting current user ID: ${ + getMessageForException(error) ?? 'unknown' + }`, + ); } - } catch (error) { - console.error(error); - throw error; } }, [currentLoggedInUserID]);