Skip to content

Commit 7e0782a

Browse files
authored
Merge pull request #1582 from session-foundation/fix-jobs-restore-crash
fix: make sure we restore pending jobs if not processed
2 parents 92799e6 + 44247c7 commit 7e0782a

File tree

6 files changed

+30
-18
lines changed

6 files changed

+30
-18
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "session-desktop",
33
"productName": "Session",
44
"description": "Private messaging from your desktop",
5-
"version": "1.16.6",
5+
"version": "1.16.7",
66
"license": "GPL-3.0",
77
"author": {
88
"name": "Session Foundation",

ts/session/utils/job_runners/JobDeserialization.ts

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,50 @@ import {
66
import { AvatarDownload } from './jobs/AvatarDownloadJob';
77
import { UserSync } from './jobs/UserSyncJob';
88
import { PersistedJob, TypeOfPersistedData } from './PersistedJob';
9+
import { assertUnreachable } from '../../../types/sqlSharedTypes';
10+
import { AvatarMigrate } from './jobs/AvatarMigrateJob';
11+
import { FetchMsgExpirySwarm } from './jobs/FetchMsgExpirySwarmJob';
12+
import { GroupInvite } from './jobs/GroupInviteJob';
13+
import { GroupPendingRemovals } from './jobs/GroupPendingRemovalsJob';
14+
import { GroupSync } from './jobs/GroupSyncJob';
15+
import { UpdateMsgExpirySwarm } from './jobs/UpdateMsgExpirySwarmJob';
916

1017
export function persistedJobFromData<T extends TypeOfPersistedData>(
1118
data: T
1219
): PersistedJob<T> | null {
1320
if (!data || isEmpty(data.jobType) || !isString(data?.jobType)) {
1421
return null;
1522
}
23+
const { jobType } = data;
1624

17-
switch (data.jobType) {
25+
switch (jobType) {
1826
case 'UserSyncJobType':
1927
return new UserSync.UserSyncJob(data) as unknown as PersistedJob<T>;
2028
case 'AvatarDownloadJobType':
2129
return new AvatarDownload.AvatarDownloadJob(data) as unknown as PersistedJob<T>;
30+
case 'AvatarMigrateJobType':
31+
return new AvatarMigrate.AvatarMigrateJob(data) as unknown as PersistedJob<T>;
32+
case 'FetchMsgExpirySwarmJobType':
33+
return new FetchMsgExpirySwarm.FetchMsgExpirySwarmJob(data) as unknown as PersistedJob<T>;
34+
case 'GroupInviteJobType':
35+
return new GroupInvite.GroupInviteJob(data) as unknown as PersistedJob<T>;
36+
case 'GroupPendingRemovalJobType':
37+
return new GroupPendingRemovals.GroupPendingRemovalsJob(data) as unknown as PersistedJob<T>;
38+
case 'GroupSyncJobType':
39+
return new GroupSync.GroupSyncJob(data) as unknown as PersistedJob<T>;
40+
case 'UpdateMsgExpirySwarmJobType':
41+
return new UpdateMsgExpirySwarm.UpdateMsgExpirySwarmJob(data) as unknown as PersistedJob<T>;
42+
2243
case 'FakeSleepForJobType':
2344
return new FakeSleepForJob(data) as unknown as PersistedJob<T>;
2445
case 'FakeSleepForJobMultiType':
2546
return new FakeSleepForMultiJob(data) as unknown as PersistedJob<T>;
2647
default:
27-
window?.log?.error('unknown persisted job type:', (data as any).jobType);
48+
try {
49+
assertUnreachable(jobType, `persistedJobFromData unknown job type: "${jobType}"`);
50+
} catch (e) {
51+
window?.log?.warn('assertUnreachable failed:', e.message);
52+
}
2853
return null;
2954
}
3055
}

ts/session/utils/job_runners/JobRunner.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {
88
FetchMsgExpirySwarmPersistedData,
99
GroupInvitePersistedData,
1010
GroupPendingRemovalsPersistedData,
11-
GroupPromotePersistedData,
1211
GroupSyncPersistedData,
1312
PersistedJob,
1413
RunJobResult,
@@ -390,11 +389,6 @@ const avatarMigrateRunner = new PersistedJobRunner<AvatarMigratePersistedData>('
390389

391390
const groupInviteJobRunner = new PersistedJobRunner<GroupInvitePersistedData>('GroupInviteJob', 4);
392391

393-
const groupPromoteJobRunner = new PersistedJobRunner<GroupPromotePersistedData>(
394-
'GroupPromoteJob',
395-
4
396-
);
397-
398392
const groupPendingRemovalJobRunner = new PersistedJobRunner<GroupPendingRemovalsPersistedData>(
399393
'GroupPendingRemovalJob',
400394
4
@@ -416,6 +410,5 @@ export const runners = {
416410
avatarDownloadRunner,
417411
avatarMigrateRunner,
418412
groupInviteJobRunner,
419-
groupPromoteJobRunner,
420413
groupPendingRemovalJobRunner,
421414
};

ts/session/utils/job_runners/PersistedJob.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ export type PersistedJobType =
77
| 'AvatarDownloadJobType'
88
| 'AvatarMigrateJobType'
99
| 'GroupInviteJobType'
10-
| 'GroupPromoteJobType'
1110
| 'GroupPendingRemovalJobType'
1211
| 'FetchMsgExpirySwarmJobType'
1312
| 'UpdateMsgExpirySwarmJobType'
@@ -51,12 +50,6 @@ export interface GroupInvitePersistedData extends PersistedJobData {
5150
inviteAsAdmin: boolean;
5251
}
5352

54-
export interface GroupPromotePersistedData extends PersistedJobData {
55-
jobType: 'GroupPromoteJobType';
56-
groupPk: GroupPubkeyType;
57-
member: PubkeyType;
58-
}
59-
6053
export interface GroupPendingRemovalsPersistedData extends PersistedJobData {
6154
jobType: 'GroupPendingRemovalJobType';
6255
groupPk: GroupPubkeyType;
@@ -90,7 +83,6 @@ export type TypeOfPersistedData =
9083
| FakeSleepForMultiJobData
9184
| GroupSyncPersistedData
9285
| GroupInvitePersistedData
93-
| GroupPromotePersistedData
9486
| GroupPendingRemovalsPersistedData;
9587

9688
export type AddJobCheckReturn = 'skipAddSameJobPresent' | null;

ts/session/utils/job_runners/jobs/AvatarMigrateJob.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,4 +222,5 @@ async function scheduleAllAvatarMigrateJobs() {
222222

223223
export const AvatarMigrate = {
224224
scheduleAllAvatarMigrateJobs,
225+
AvatarMigrateJob,
225226
};

ts/session/utils/job_runners/jobs/GroupPendingRemovalsJob.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,4 +287,5 @@ class GroupPendingRemovalsJob extends PersistedJob<GroupPendingRemovalsPersisted
287287
export const GroupPendingRemovals = {
288288
addJob,
289289
getPendingRevokeParams,
290+
GroupPendingRemovalsJob,
290291
};

0 commit comments

Comments
 (0)