Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion ts/components/leftpane/LeftPaneSectionHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ export const LeftPaneBanner = () => {
const dispatch = getAppDispatch();

const showRecoveryPhraseModal = async () => {
await window.setSettingValue(SettingsKey.dismissedRecoveryPhrasePrompt, true);
await window.setSettingValue(SettingsKey.showRecoveryPhrasePrompt, false);
dispatch(userSettingsModal({ userSettingsPage: 'recovery-password' }));
};
Expand Down Expand Up @@ -215,7 +216,7 @@ export const LeftPaneSectionHeader = () => {
</SectionTitle>
{!leftOverlayMode && <MenuButton />}
</StyledLeftPaneSectionHeader>
{showRecoveryPhrasePrompt && <LeftPaneBanner />}
{showRecoveryPhrasePrompt ? <LeftPaneBanner /> : null}
</Flex>
);
};
1 change: 1 addition & 0 deletions ts/data/settings-key.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ export const SettingsKey = {
proBadgesSent,
audioAutoplay: 'audioAutoplay',
showRecoveryPhrasePrompt: 'showRecoveryPhrasePrompt',
dismissedRecoveryPhrasePrompt: 'dismissedRecoveryPhrasePrompt',
hideMessageRequests: 'hideMessageRequests',
identityKey: 'identityKey',
blocked: 'blocked',
Expand Down
32 changes: 31 additions & 1 deletion ts/session/conversations/ConversationController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@ import { PubKey } from '../types';
import { ConfigDumpData } from '../../data/configDump/configDump';
import { deleteAllMessagesByConvoIdNoConfirmation } from '../../interactions/conversationInteractions';
import { groupInfoActions } from '../../state/ducks/metaGroups';
import { getCurrentlySelectedConversationOutsideRedux } from '../../state/selectors/conversations';
import {
getCurrentlySelectedConversationOutsideRedux,
getLeftPaneConversationIdsCount,
} from '../../state/selectors/conversations';
import { assertUnreachable, stringify } from '../../types/sqlSharedTypes';
import {
MetaGroupWrapperActions,
Expand All @@ -45,9 +48,34 @@ import { ConversationTypeEnum } from '../../models/types';
import { NetworkTime } from '../../util/NetworkTime';
import { timeoutWithAbort } from '../utils/Promise';
import { DURATION } from '../constants';
import { isSignWithRecoveryPhrase } from '../../util/storage';
import {
getDismissedRecoveryPhrasePrompt,
getShowRecoveryPhrasePrompt,
} from '../../state/selectors/settings';
import { SettingsKey } from '../../data/settings-key';

let instance: ConvoController | null;

export async function handleShowRecoveryPhrasePrompt() {
if (isSignWithRecoveryPhrase()) {
return;
}
const state = window.inboxStore?.getState();
if (state) {
const showRecoveryPhrasePrompt = getShowRecoveryPhrasePrompt(state);
const dismissedRecoveryPhrasePrompt = getDismissedRecoveryPhrasePrompt(state);
if (!dismissedRecoveryPhrasePrompt && !showRecoveryPhrasePrompt) {
const numberOfConvos = getLeftPaneConversationIdsCount(state);
if (numberOfConvos > 3) {
await window.setSettingValue(SettingsKey.dismissedRecoveryPhrasePrompt, true);
} else if (numberOfConvos > 2) {
await window.setSettingValue(SettingsKey.showRecoveryPhrasePrompt, true);
}
}
}
}

const getConvoHub = () => {
if (instance) {
return instance;
Expand Down Expand Up @@ -153,6 +181,8 @@ class ConvoController {
})
);

void handleShowRecoveryPhrasePrompt();

return conversation;
};

Expand Down
7 changes: 6 additions & 1 deletion ts/state/ducks/settings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ const SettingsBoolsKeyTrackedInRedux = [
SettingsKey.showOnboardingAccountJustCreated,
SettingsKey.audioAutoplay,
SettingsKey.showRecoveryPhrasePrompt,
SettingsKey.dismissedRecoveryPhrasePrompt,
SettingsKey.hideMessageRequests,
] as const;

Expand All @@ -29,7 +30,8 @@ export function getSettingsInitialState() {
hideRecoveryPassword: false,
showOnboardingAccountJustCreated: true,
audioAutoplay: false,
showRecoveryPhrasePrompt: true,
showRecoveryPhrasePrompt: false,
dismissedRecoveryPhrasePrompt: false,
hideMessageRequests: false,
},
};
Expand Down Expand Up @@ -64,6 +66,7 @@ const settingsSlice = createSlice({
showOnboardingAccountJustCreated: boolean;
audioAutoplay: boolean;
showRecoveryPhrasePrompt: boolean;
dismissedRecoveryPhrasePrompt: boolean;
hideMessageRequests: boolean;
}>
) {
Expand All @@ -76,6 +79,7 @@ const settingsSlice = createSlice({
showOnboardingAccountJustCreated,
audioAutoplay,
showRecoveryPhrasePrompt,
dismissedRecoveryPhrasePrompt,
hideMessageRequests,
} = payload;

Expand All @@ -87,6 +91,7 @@ const settingsSlice = createSlice({
state.settingsBools.showOnboardingAccountJustCreated = showOnboardingAccountJustCreated;
state.settingsBools.audioAutoplay = audioAutoplay;
state.settingsBools.showRecoveryPhrasePrompt = showRecoveryPhrasePrompt;
state.settingsBools.dismissedRecoveryPhrasePrompt = dismissedRecoveryPhrasePrompt;
state.settingsBools.hideMessageRequests = hideMessageRequests;

return state;
Expand Down
3 changes: 3 additions & 0 deletions ts/state/selectors/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ export const getAudioAutoplay = (state: StateType): boolean =>
export const getShowRecoveryPhrasePrompt = (state: StateType): boolean =>
state.settings.settingsBools[SettingsKey.showRecoveryPhrasePrompt];

export const getDismissedRecoveryPhrasePrompt = (state: StateType): boolean =>
state.settings.settingsBools[SettingsKey.dismissedRecoveryPhrasePrompt];

export const getHideMessageRequestBanner = (state: StateType): boolean =>
state.settings.settingsBools[SettingsKey.hideMessageRequests];

Expand Down
6 changes: 5 additions & 1 deletion ts/state/startup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,11 @@ export const doAppStartUp = async () => {
true
),
audioAutoplay: Storage.getBoolOr(SettingsKey.audioAutoplay, false),
showRecoveryPhrasePrompt: Storage.getBoolOr(SettingsKey.showRecoveryPhrasePrompt, true),
showRecoveryPhrasePrompt: Storage.getBoolOr(SettingsKey.showRecoveryPhrasePrompt, false),
dismissedRecoveryPhrasePrompt: Storage.getBoolOr(
SettingsKey.dismissedRecoveryPhrasePrompt,
false
),
hideMessageRequests: Storage.getBoolOr(SettingsKey.hideMessageRequests, false),
})
);
Expand Down
Loading