diff --git a/packages/suite/src/actions/suite/metadataActions.ts b/packages/suite/src/actions/suite/metadataActions.ts index 694d5328fda..c85cecf7e34 100644 --- a/packages/suite/src/actions/suite/metadataActions.ts +++ b/packages/suite/src/actions/suite/metadataActions.ts @@ -37,7 +37,7 @@ export type MetadataAction = } | { type: typeof METADATA.REMOVE_PROVIDER; - payload: MetadataProvider; + payload: Pick; } | { type: typeof METADATA.ADD_PROVIDER; @@ -46,15 +46,15 @@ export type MetadataAction = | { type: typeof METADATA.SET_DATA; payload: { - provider: MetadataProvider; - data: Record; + provider: Omit & Pick, 'data'>; + data: Record | undefined; }; } | { type: typeof METADATA.SET_SELECTED_PROVIDER; payload: { dataType: DataType; - clientId: string; + clientId: string | undefined; }; } | { @@ -100,7 +100,7 @@ export const disposeMetadataKeys = () => (dispatch: Dispatch, getState: GetState }); devices.forEach(device => { - if (device.state) { + if (device.state?.staticSessionId) { // set metadata as disabled for this device, remove all metadata related information dispatch({ type: METADATA.SET_DEVICE_METADATA, @@ -134,7 +134,7 @@ export const setMetadata = }: { provider: MetadataProvider; fileName: string; - data: WalletLabels | AccountLabels | PasswordManagerState | undefined; + data: WalletLabels | AccountLabels | PasswordManagerState; // | undefined; }) => (dispatch: Dispatch) => { dispatch({ diff --git a/packages/suite/src/actions/suite/metadataPasswordsActions.ts b/packages/suite/src/actions/suite/metadataPasswordsActions.ts index c2dc9984475..462e3337215 100644 --- a/packages/suite/src/actions/suite/metadataPasswordsActions.ts +++ b/packages/suite/src/actions/suite/metadataPasswordsActions.ts @@ -28,11 +28,11 @@ export const fetchPasswords = // this triggers renewal of access token if needed. Otherwise multiple requests // to renew access token are issued by every provider.getFileContent - const response = await provider.getProviderDetails(); - if (!response.success) { + const providerDetails = await provider.getProviderDetails(); + if (!providerDetails.success) { return dispatch( metadataProviderActions.handleProviderError({ - error: response, + error: providerDetails, action: ProviderErrorAction.LOAD, clientId: provider.clientId, }), @@ -55,7 +55,7 @@ export const fetchPasswords = dispatch({ type: METADATA.SET_DATA, payload: { - provider, + provider: providerDetails.payload, data: { [keys.fileName]: decrypted, }, @@ -76,7 +76,7 @@ export const fetchPasswords = export const init = () => async (dispatch: Dispatch, getState: GetState) => { let device = selectSelectedDevice(getState()); - if (!device?.state) { + if (!device?.state?.staticSessionId) { console.error('no device state!'); return Promise.resolve(); diff --git a/packages/suite/src/actions/suite/metadataProviderActions.ts b/packages/suite/src/actions/suite/metadataProviderActions.ts index 80184d15692..1ebcd77e5c5 100644 --- a/packages/suite/src/actions/suite/metadataProviderActions.ts +++ b/packages/suite/src/actions/suite/metadataProviderActions.ts @@ -130,7 +130,7 @@ export const disconnectProvider = // flush reducer dispatch({ type: METADATA.REMOVE_PROVIDER, - payload: provider, + payload: { clientId }, }); dispatch({ type: METADATA.SET_SELECTED_PROVIDER, diff --git a/packages/suite/src/reducers/suite/metadataReducer.ts b/packages/suite/src/reducers/suite/metadataReducer.ts index 27f74600cc8..ee165dd59bd 100644 --- a/packages/suite/src/reducers/suite/metadataReducer.ts +++ b/packages/suite/src/reducers/suite/metadataReducer.ts @@ -77,6 +77,10 @@ const metadataReducer = (state = initialState, action: Action): MetadataState => ); break; case METADATA.SET_SELECTED_PROVIDER: + if (!action.payload.clientId) { + delete draft.selectedProvider[action.payload.dataType]; + break; + } draft.selectedProvider[action.payload.dataType] = action.payload.clientId; break; case METADATA.SET_EDITING: diff --git a/suite-common/metadata-types/src/metadataTypes.ts b/suite-common/metadata-types/src/metadataTypes.ts index ac481e89674..e8f5213fbae 100644 --- a/suite-common/metadata-types/src/metadataTypes.ts +++ b/suite-common/metadata-types/src/metadataTypes.ts @@ -194,7 +194,7 @@ export interface WalletLabels { walletLabel?: string; } -export type Labels = AccountLabels | WalletLabels; +export type Labels = AccountLabels | WalletLabels | PasswordManagerState; export type DeviceMetadata = DeviceEntityKeys;