Page MenuHomePhorge

D10603.1765099223.diff
No OneTemporary

Size
10 KB
Referenced Files
None
Subscribers
None

D10603.1765099223.diff

diff --git a/lib/actions/user-actions.js b/lib/actions/user-actions.js
--- a/lib/actions/user-actions.js
+++ b/lib/actions/user-actions.js
@@ -11,7 +11,6 @@
import { IdentityClientContext } from '../shared/identity-client-context.js';
import threadWatcher from '../shared/thread-watcher.js';
import type {
- LogOutResult,
LogInInfo,
LogInResult,
RegisterResult,
@@ -24,6 +23,7 @@
KeyserverAuthInfo,
KeyserverAuthRequest,
ClientLogInResponse,
+ KeyserverLogOutResult,
} from '../types/account-types.js';
import type {
UpdateUserAvatarRequest,
@@ -72,6 +72,11 @@
anonymous: true,
};
+export type KeyserverLogOutInput = {
+ +preRequestUserState: PreRequestUserState,
+ +keyserverIDs?: $ReadOnlyArray<string>,
+};
+
const logOutActionTypes = Object.freeze({
started: 'LOG_OUT_STARTED',
success: 'LOG_OUT_SUCCESS',
@@ -81,10 +86,12 @@
(
callKeyserverEndpoint: CallKeyserverEndpoint,
allKeyserverIDs: $ReadOnlyArray<string>,
- ): ((input: PreRequestUserState) => Promise<LogOutResult>) =>
- async preRequestUserState => {
+ ): ((input: KeyserverLogOutInput) => Promise<KeyserverLogOutResult>) =>
+ async input => {
+ const { preRequestUserState } = input;
+ const keyserverIDs = input.keyserverIDs ?? allKeyserverIDs;
const requests: { [string]: {} } = {};
- for (const keyserverID of allKeyserverIDs) {
+ for (const keyserverID of keyserverIDs) {
requests[keyserverID] = {};
}
@@ -99,15 +106,18 @@
]);
} catch {}
const currentUserInfo = response ? loggedOutUserInfo : null;
- return { currentUserInfo, preRequestUserState };
+ return { currentUserInfo, preRequestUserState, keyserverIDs };
};
-function useLogOut(): () => Promise<LogOutResult> {
+function useLogOut(): (
+ keyserverIDs?: $ReadOnlyArray<string>,
+) => Promise<KeyserverLogOutResult> {
const preRequestUserState = useSelector(preRequestUserStateSelector);
const callKeyserverLogOut = useKeyserverCall(logOut);
return React.useCallback(
- () => callKeyserverLogOut(preRequestUserState),
+ (keyserverIDs?: $ReadOnlyArray<string>) =>
+ callKeyserverLogOut({ preRequestUserState, keyserverIDs }),
[callKeyserverLogOut, preRequestUserState],
);
}
@@ -147,21 +157,34 @@
(
callKeyserverEndpoint: CallKeyserverEndpoint,
allKeyserverIDs: $ReadOnlyArray<string>,
- ): ((input: PreRequestUserState) => Promise<LogOutResult>) =>
- async preRequestUserState => {
+ ): ((input: KeyserverLogOutInput) => Promise<KeyserverLogOutResult>) =>
+ async input => {
+ const { preRequestUserState } = input;
+ const keyserverIDs = input.keyserverIDs ?? allKeyserverIDs;
const requests: { [string]: {} } = {};
- for (const keyserverID of allKeyserverIDs) {
+ for (const keyserverID of keyserverIDs) {
requests[keyserverID] = {};
}
await callKeyserverEndpoint('delete_account', requests);
- return { currentUserInfo: loggedOutUserInfo, preRequestUserState };
+ return {
+ currentUserInfo: loggedOutUserInfo,
+ preRequestUserState,
+ keyserverIDs,
+ };
};
function useDeleteKeyserverAccount(): (
- input: PreRequestUserState,
-) => Promise<LogOutResult> {
- return useKeyserverCall(deleteKeyserverAccount);
+ keyserverIDs?: $ReadOnlyArray<string>,
+) => Promise<KeyserverLogOutResult> {
+ const preRequestUserState = useSelector(preRequestUserStateSelector);
+ const callKeyserverDeleteAccount = useKeyserverCall(deleteKeyserverAccount);
+
+ return React.useCallback(
+ (keyserverIDs?: $ReadOnlyArray<string>) =>
+ callKeyserverDeleteAccount({ preRequestUserState, keyserverIDs }),
+ [callKeyserverDeleteAccount, preRequestUserState],
+ );
}
const deleteIdentityAccountActionTypes = Object.freeze({
diff --git a/lib/types/account-types.js b/lib/types/account-types.js
--- a/lib/types/account-types.js
+++ b/lib/types/account-types.js
@@ -38,6 +38,11 @@
+preRequestUserState: PreRequestUserState,
};
+export type KeyserverLogOutResult = $ReadOnly<{
+ ...LogOutResult,
+ +keyserverIDs: $ReadOnlyArray<string>,
+}>;
+
export type LogOutResponse = {
+currentUserInfo: LoggedOutUserInfo,
};
diff --git a/lib/types/redux-types.js b/lib/types/redux-types.js
--- a/lib/types/redux-types.js
+++ b/lib/types/redux-types.js
@@ -2,6 +2,7 @@
import type {
LogOutResult,
+ KeyserverLogOutResult,
LogInStartingPayload,
LogInResult,
RegisterResult,
@@ -196,7 +197,7 @@
}
| {
+type: 'LOG_OUT_SUCCESS',
- +payload: LogOutResult,
+ +payload: KeyserverLogOutResult,
+loadingInfo: LoadingInfo,
}
| {
@@ -228,7 +229,7 @@
}
| {
+type: 'DELETE_KEYSERVER_ACCOUNT_SUCCESS',
- +payload: LogOutResult,
+ +payload: KeyserverLogOutResult,
+loadingInfo: LoadingInfo,
}
| {
diff --git a/native/crash.react.js b/native/crash.react.js
--- a/native/crash.react.js
+++ b/native/crash.react.js
@@ -19,10 +19,8 @@
sendReport,
} from 'lib/actions/report-actions.js';
import { logOutActionTypes, useLogOut } from 'lib/actions/user-actions.js';
-import { preRequestUserStateSelector } from 'lib/selectors/account-selectors.js';
-import type { LogOutResult } from 'lib/types/account-types.js';
+import type { KeyserverLogOutResult } from 'lib/types/account-types.js';
import { type ErrorData, reportTypes } from 'lib/types/report-types.js';
-import type { PreRequestUserState } from 'lib/types/session-types.js';
import { actionLogger } from 'lib/utils/action-logger.js';
import {
useDispatchActionPromise,
@@ -42,7 +40,6 @@
import ConnectedStatusBar from './connected-status-bar.react.js';
import { commCoreModule } from './native-modules.js';
import { persistConfig, codeVersion } from './redux/persist.js';
-import { useSelector } from './redux/redux-utils.js';
import { wipeAndExit } from './utils/crash-utils.js';
const errorTitles = ['Oh no!!', 'Womp womp womp...'];
@@ -52,12 +49,10 @@
};
type Props = {
...BaseProps,
- // Redux state
- +preRequestUserState: PreRequestUserState,
// Redux dispatch functions
+dispatchActionPromise: DispatchActionPromise,
// async functions that hit server APIs
- +logOut: (preRequestUserState: PreRequestUserState) => Promise<LogOutResult>,
+ +logOut: () => Promise<KeyserverLogOutResult>,
+crashReportingEnabled: boolean,
};
type State = {
@@ -200,7 +195,7 @@
async logOutAndExit() {
try {
- await this.props.logOut(this.props.preRequestUserState);
+ await this.props.logOut();
} catch (e) {}
await wipeAndExit();
}
@@ -284,15 +279,12 @@
const ConnectedCrash: React.ComponentType<BaseProps> = React.memo<BaseProps>(
function ConnectedCrash(props: BaseProps) {
- const preRequestUserState = useSelector(preRequestUserStateSelector);
-
const dispatchActionPromise = useDispatchActionPromise();
const callLogOut = useLogOut();
const crashReportingEnabled = useIsReportEnabled('crashReports');
return (
<Crash
{...props}
- preRequestUserState={preRequestUserState}
dispatchActionPromise={dispatchActionPromise}
logOut={callLogOut}
crashReportingEnabled={crashReportingEnabled}
diff --git a/native/profile/delete-account.react.js b/native/profile/delete-account.react.js
--- a/native/profile/delete-account.react.js
+++ b/native/profile/delete-account.react.js
@@ -10,7 +10,6 @@
useDeleteIdentityAccount,
useDeleteKeyserverAccount,
} from 'lib/actions/user-actions.js';
-import { preRequestUserStateSelector } from 'lib/selectors/account-selectors.js';
import {
createLoadingStatusSelector,
combineLoadingStatuses,
@@ -45,7 +44,6 @@
keyserverLoadingStatus,
identityLoadingStatus,
);
- const preRequestUserState = useSelector(preRequestUserStateSelector);
const styles = useStyles(unboundStyles);
@@ -69,7 +67,7 @@
const deleteKeyserverAction = React.useCallback(async () => {
try {
await deleteNativeCredentialsFor();
- return await callDeleteKeyserverAccount(preRequestUserState);
+ return await callDeleteKeyserverAccount();
} catch (e) {
Alert.alert(
'Unknown error deleting keyserver account',
@@ -81,7 +79,7 @@
);
throw e;
}
- }, [callDeleteKeyserverAccount, preRequestUserState]);
+ }, [callDeleteKeyserverAccount]);
const deleteIdentityAction = React.useCallback(async () => {
try {
diff --git a/native/profile/profile-screen.react.js b/native/profile/profile-screen.react.js
--- a/native/profile/profile-screen.react.js
+++ b/native/profile/profile-screen.react.js
@@ -7,7 +7,7 @@
import { useStringForUser } from 'lib/hooks/ens-cache.js';
import { createLoadingStatusSelector } from 'lib/selectors/loading-selectors.js';
import { accountHasPassword } from 'lib/shared/account-utils.js';
-import type { LogOutResult } from 'lib/types/account-types.js';
+import type { KeyserverLogOutResult } from 'lib/types/account-types.js';
import { type CurrentUserInfo } from 'lib/types/user-types.js';
import {
useDispatchActionPromise,
@@ -152,7 +152,7 @@
+colors: Colors,
+styles: $ReadOnly<typeof unboundStyles>,
+dispatchActionPromise: DispatchActionPromise,
- +logOut: () => Promise<LogOutResult>,
+ +logOut: () => Promise<KeyserverLogOutResult>,
+staffCanSee: boolean,
+stringForUser: ?string,
+isAccountWithPassword: boolean,
diff --git a/web/settings/account-delete-modal.react.js b/web/settings/account-delete-modal.react.js
--- a/web/settings/account-delete-modal.react.js
+++ b/web/settings/account-delete-modal.react.js
@@ -10,7 +10,6 @@
} from 'lib/actions/user-actions.js';
import { useModalContext } from 'lib/components/modal-provider.react.js';
import SWMansionIcon from 'lib/components/SWMansionIcon.react.js';
-import { preRequestUserStateSelector } from 'lib/selectors/account-selectors.js';
import { createLoadingStatusSelector } from 'lib/selectors/loading-selectors.js';
import { useDispatchActionPromise } from 'lib/utils/redux-promise-utils.js';
import { usingCommServicesAccessToken } from 'lib/utils/services-utils.js';
@@ -29,7 +28,6 @@
const AccountDeleteModal: React.ComponentType<{}> = React.memo<{}>(
function AccountDeleteModal(): React.Node {
- const preRequestUserState = useSelector(preRequestUserStateSelector);
const isDeleteKeyserverAccountLoading = useSelector(
state => deleteKeyserverAccountLoadingStatusSelector(state) === 'loading',
);
@@ -69,7 +67,7 @@
const deleteKeyserverAction = React.useCallback(async () => {
try {
setKeyserverErrorMessage('');
- const response = await callDeleteKeyserverAccount(preRequestUserState);
+ const response = await callDeleteKeyserverAccount();
// This check ensures that we don't call `popModal()` twice
if (!usingCommServicesAccessToken) {
popModal();
@@ -81,7 +79,7 @@
);
throw e;
}
- }, [callDeleteKeyserverAccount, preRequestUserState, popModal]);
+ }, [callDeleteKeyserverAccount, popModal]);
const deleteIdentityAction = React.useCallback(async () => {
try {

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 7, 9:20 AM (10 h, 10 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5843289
Default Alt Text
D10603.1765099223.diff (10 KB)

Event Timeline