Page MenuHomePhorge

D7657.1768456894.diff
No OneTemporary

Size
4 KB
Referenced Files
None
Subscribers
None

D7657.1768456894.diff

diff --git a/keyserver/src/creators/account-creator.js b/keyserver/src/creators/account-creator.js
--- a/keyserver/src/creators/account-creator.js
+++ b/keyserver/src/creators/account-creator.js
@@ -32,6 +32,7 @@
import createIDs from './id-creator.js';
import createMessages from './message-creator.js';
+import { createOlmSession } from './olm-session-creator.js';
import {
createThread,
createPrivateThread,
@@ -81,7 +82,11 @@
WHERE LCASE(username) = LCASE(${request.username})
`;
const promises = [dbQuery(usernameQuery)];
- const { calendarQuery, signedIdentityKeysBlob } = request;
+ const {
+ calendarQuery,
+ signedIdentityKeysBlob,
+ initialNotificationsEncryptedMessage,
+ } = request;
if (calendarQuery) {
promises.push(verifyCalendarQueryThreadIDs(calendarQuery));
}
@@ -128,6 +133,16 @@
await setNewSession(viewer, calendarQuery, 0);
}
+ const olmSessionPromise = (async () => {
+ if (userViewerData.cookieID && initialNotificationsEncryptedMessage) {
+ await createOlmSession(
+ initialNotificationsEncryptedMessage,
+ 'notifications',
+ userViewerData.cookieID,
+ );
+ }
+ })();
+
await Promise.all([
updateThread(
createScriptViewer(ashoat.id),
@@ -138,6 +153,7 @@
{ forceAddMembers: true, silenceMessages: true, ignorePermissions: true },
),
viewerAcknowledgmentUpdater(viewer, policyTypes.tosAndPrivacyPolicy),
+ olmSessionPromise,
]);
const [privateThreadResult, ashoatThreadResult] = await Promise.all([
diff --git a/keyserver/src/responders/user-responders.js b/keyserver/src/responders/user-responders.js
--- a/keyserver/src/responders/user-responders.js
+++ b/keyserver/src/responders/user-responders.js
@@ -246,6 +246,7 @@
// old clients, but we no longer do anything with it.
primaryIdentityPublicKey: t.maybe(tRegex(primaryIdentityPublicKeyRegex)),
signedIdentityKeysBlob: t.maybe(signedIdentityKeysBlobValidator),
+ initialNotificationsEncryptedMessage: t.maybe(t.String),
});
export const registerResponseValidator: TInterface<RegisterResponse> =
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
@@ -56,6 +56,7 @@
+deviceTokenUpdateRequest?: ?DeviceTokenUpdateRequest,
+platformDetails: PlatformDetails,
+signedIdentityKeysBlob?: SignedIdentityKeysBlob,
+ +initialNotificationsEncryptedMessage?: string,
};
export type RegisterResponse = {
diff --git a/native/account/register-panel.react.js b/native/account/register-panel.react.js
--- a/native/account/register-panel.react.js
+++ b/native/account/register-panel.react.js
@@ -37,6 +37,7 @@
import { useSelector } from '../redux/redux-utils.js';
import { nativeLogInExtraInfoSelector } from '../selectors/account-selectors.js';
import type { KeyPressEvent } from '../types/react-native.js';
+import { useInitialNotificationsEncryptedMessage } from '../utils/crypto-utils.js';
import { type StateContainer } from '../utils/state-container.js';
export type RegisterState = {
@@ -55,6 +56,7 @@
+logInExtraInfo: () => Promise<LogInExtraInfo>,
+dispatchActionPromise: DispatchActionPromise,
+register: (registerInfo: RegisterInfo) => Promise<RegisterResult>,
+ +initialNotificationsEncryptedMessage: () => Promise<string>,
};
type State = {
+confirmPasswordFocused: boolean,
@@ -289,9 +291,14 @@
} else {
Keyboard.dismiss();
const extraInfo = await this.props.logInExtraInfo();
+ const initialNotificationsEncryptedMessage =
+ await this.props.initialNotificationsEncryptedMessage();
this.props.dispatchActionPromise(
registerActionTypes,
- this.registerAction(extraInfo),
+ this.registerAction({
+ ...extraInfo,
+ initialNotificationsEncryptedMessage,
+ }),
undefined,
({ calendarQuery: extraInfo.calendarQuery }: LogInStartingPayload),
);
@@ -457,6 +464,8 @@
const dispatchActionPromise = useDispatchActionPromise();
const callRegister = useServerCall(register);
+ const callInitialNotificationsEncryptedMessage =
+ useInitialNotificationsEncryptedMessage();
return (
<RegisterPanel
@@ -465,6 +474,9 @@
logInExtraInfo={logInExtraInfo}
dispatchActionPromise={dispatchActionPromise}
register={callRegister}
+ initialNotificationsEncryptedMessage={
+ callInitialNotificationsEncryptedMessage
+ }
/>
);
});

File Metadata

Mime Type
text/plain
Expires
Thu, Jan 15, 6:01 AM (20 h, 22 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5936439
Default Alt Text
D7657.1768456894.diff (4 KB)

Event Timeline