From 2ca2dd4790361fa971055416785dcc89707ed64e Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Tue, 7 Jan 2025 16:51:52 +1100 Subject: [PATCH] fix: allow promoted state to be reset to NOT_SENT --- package.json | 2 +- preload.js | 2 +- ts/components/MemberListItem.tsx | 4 +- .../utils/job_runners/jobs/GroupInviteJob.ts | 29 ++++-------- .../utils/job_runners/jobs/GroupPromoteJob.ts | 5 +-- ts/state/ducks/metaGroups.ts | 44 ------------------- yarn.lock | 6 +-- 7 files changed, 16 insertions(+), 76 deletions(-) diff --git a/package.json b/package.json index e8537644e..da9e1a73c 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "fs-extra": "9.0.0", "glob": "10.3.10", "image-type": "^4.1.0", - "libsession_util_nodejs": "https://github.com/session-foundation/libsession-util-nodejs/releases/download/v0.4.10/libsession_util_nodejs-v0.4.10.tar.gz", + "libsession_util_nodejs": "https://github.com/session-foundation/libsession-util-nodejs/releases/download/v0.4.11/libsession_util_nodejs-v0.4.11.tar.gz", "libsodium-wrappers-sumo": "^0.7.9", "linkify-it": "^4.0.1", "lodash": "^4.17.21", diff --git a/preload.js b/preload.js index 7857da846..30a43299f 100644 --- a/preload.js +++ b/preload.js @@ -41,7 +41,7 @@ window.sessionFeatureFlags = { useOnionRequests: true, useTestNet: isTestNet() || isTestIntegration(), useClosedGroupV2: true, // TODO DO NOT MERGE Remove after QA - useClosedGroupV2QAButtons: false, // TODO DO NOT MERGE Remove after QA + useClosedGroupV2QAButtons: true, // TODO DO NOT MERGE Remove after QA replaceLocalizedStringsWithKeys: false, debug: { debugLogging: !_.isEmpty(process.env.SESSION_DEBUG), diff --git a/ts/components/MemberListItem.tsx b/ts/components/MemberListItem.tsx index d879d57c2..3f54d4276 100644 --- a/ts/components/MemberListItem.tsx +++ b/ts/components/MemberListItem.tsx @@ -259,14 +259,12 @@ const ResendButton = ({ groupPk, pubkey }: { pubkey: PubkeyType; groupPk: GroupP window.log.warn('tried to resend invite but we do not have correct details'); return; } - await MetaGroupWrapperActions.memberSetInviteNotSent(groupPk, pubkey); // if we tried to invite that member as admin right away, let's retry it as such. - const inviteAsAdmin = member.nominatedAdmin; await GroupInvite.addJob({ groupPk, member: pubkey, - inviteAsAdmin, + inviteAsAdmin: member.nominatedAdmin, forceUnrevoke: true, }); }} diff --git a/ts/session/utils/job_runners/jobs/GroupInviteJob.ts b/ts/session/utils/job_runners/jobs/GroupInviteJob.ts index ac84a7283..3bf752cfb 100644 --- a/ts/session/utils/job_runners/jobs/GroupInviteJob.ts +++ b/ts/session/utils/job_runners/jobs/GroupInviteJob.ts @@ -68,7 +68,15 @@ async function addJob({ groupPk, member, inviteAsAdmin, forceUnrevoke }: JobExtr forceUnrevoke, nextAttemptTimestamp: Date.now(), }); - window.log.debug(`addGroupInviteJob: adding group invite for ${groupPk}:${member} `); + window.log.debug( + `addGroupInviteJob: adding group invite for ${groupPk}:${member}. inviteAsAdmin:${inviteAsAdmin} ` + ); + if (inviteAsAdmin) { + // this resets the promotion status to not_sent, so that the sending state can be applied + await MetaGroupWrapperActions.memberSetPromoted(groupPk, member); + } else { + await MetaGroupWrapperActions.memberSetInviteNotSent(groupPk, member); + } window?.inboxStore?.dispatch( groupInfoActions.refreshGroupDetailsFromWrapper({ groupPk }) as any @@ -76,16 +84,6 @@ async function addJob({ groupPk, member, inviteAsAdmin, forceUnrevoke }: JobExtr await LibSessionUtil.saveDumpsToDb(groupPk); await runners.groupInviteJobRunner.addJob(groupInviteJob); - - if (inviteAsAdmin) { - window?.inboxStore?.dispatch( - groupInfoActions.setPromotionPending({ groupPk, pubkey: member, sending: true }) - ); - } else { - window?.inboxStore?.dispatch( - groupInfoActions.setInvitePending({ groupPk, pubkey: member, sending: true }) - ); - } } } @@ -279,15 +277,6 @@ class GroupInviteJob extends PersistedJob { updateFailedStateForMember(groupPk, member, failed); - if (inviteAsAdmin) { - window?.inboxStore?.dispatch( - groupInfoActions.setPromotionPending({ groupPk, pubkey: member, sending: false }) - ); - } else { - window?.inboxStore?.dispatch( - groupInfoActions.setInvitePending({ groupPk, pubkey: member, sending: false }) - ); - } window?.inboxStore?.dispatch( groupInfoActions.refreshGroupDetailsFromWrapper({ groupPk }) as any ); diff --git a/ts/session/utils/job_runners/jobs/GroupPromoteJob.ts b/ts/session/utils/job_runners/jobs/GroupPromoteJob.ts index ff76a2395..2346c3ab7 100644 --- a/ts/session/utils/job_runners/jobs/GroupPromoteJob.ts +++ b/ts/session/utils/job_runners/jobs/GroupPromoteJob.ts @@ -46,7 +46,7 @@ async function addJob({ groupPk, member }: JobExtraArgs) { window.log.debug(`addGroupPromoteJob: adding group promote for ${groupPk}:${member} `); await runners.groupPromoteJobRunner.addJob(groupPromoteJob); window?.inboxStore?.dispatch( - groupInfoActions.setPromotionPending({ groupPk, pubkey: member, sending: true }) + groupInfoActions.refreshGroupDetailsFromWrapper({ groupPk }) as any ); } } @@ -111,9 +111,6 @@ class GroupPromoteJob extends PersistedJob { failed = false; } } finally { - window?.inboxStore?.dispatch( - groupInfoActions.setPromotionPending({ groupPk, pubkey: member, sending: false }) - ); try { if (failed) { await MetaGroupWrapperActions.memberSetPromotionFailed(groupPk, member); diff --git a/ts/state/ducks/metaGroups.ts b/ts/state/ducks/metaGroups.ts index 05bb277ec..66499cacd 100644 --- a/ts/state/ducks/metaGroups.ts +++ b/ts/state/ducks/metaGroups.ts @@ -7,7 +7,6 @@ import { PubkeyType, UserGroupsGet, WithGroupPubkey, - WithPubkey, } from 'libsession_util_nodejs'; import { concat, intersection, isEmpty, uniq } from 'lodash'; import { from_hex } from 'libsodium-wrappers-sumo'; @@ -1212,36 +1211,6 @@ function deleteGroupPkEntriesFromState(state: GroupState, groupPk: GroupPubkeyTy delete state.members[groupPk]; } -function applySendingStateChange({ - groupPk, - pubkey, - sending, - state, - changeType, -}: WithGroupPubkey & - WithPubkey & { sending: boolean; changeType: 'invite' | 'promote'; state: GroupState }) { - if (changeType === 'invite' && !state.membersInviteSending[groupPk]) { - state.membersInviteSending[groupPk] = []; - } else if (changeType === 'promote' && !state.membersPromoteSending[groupPk]) { - state.membersPromoteSending[groupPk] = []; - } - const arrRef = - changeType === 'invite' - ? state.membersInviteSending[groupPk] - : state.membersPromoteSending[groupPk]; - - const foundAt = arrRef.findIndex(p => p === pubkey); - - if (sending && foundAt === -1) { - arrRef.push(pubkey); - return state; - } - if (!sending && foundAt >= 0) { - arrRef.splice(foundAt, 1); - } - return state; -} - function refreshConvosModelProps(convoIds: Array) { /** * @@ -1263,19 +1232,6 @@ const metaGroupSlice = createSlice({ name: 'metaGroup', initialState: initialGroupState, reducers: { - setInvitePending( - state: GroupState, - { payload }: PayloadAction<{ sending: boolean } & WithGroupPubkey & WithPubkey> - ) { - return applySendingStateChange({ changeType: 'invite', ...payload, state }); - }, - - setPromotionPending( - state: GroupState, - { payload }: PayloadAction<{ pubkey: PubkeyType; groupPk: GroupPubkeyType; sending: boolean }> - ) { - return applySendingStateChange({ changeType: 'promote', ...payload, state }); - }, removeGroupDetailsFromSlice( state: GroupState, { payload }: PayloadAction<{ groupPk: GroupPubkeyType }> diff --git a/yarn.lock b/yarn.lock index 9f21297c9..a77540814 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4944,9 +4944,9 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -"libsession_util_nodejs@https://github.com/session-foundation/libsession-util-nodejs/releases/download/v0.4.10/libsession_util_nodejs-v0.4.10.tar.gz": - version "0.4.10" - resolved "https://github.com/session-foundation/libsession-util-nodejs/releases/download/v0.4.10/libsession_util_nodejs-v0.4.10.tar.gz#9a420fa0ad4dc9067de17b2ec9fa3676a1c10056" +"libsession_util_nodejs@https://github.com/session-foundation/libsession-util-nodejs/releases/download/v0.4.11/libsession_util_nodejs-v0.4.11.tar.gz": + version "0.4.11" + resolved "https://github.com/session-foundation/libsession-util-nodejs/releases/download/v0.4.11/libsession_util_nodejs-v0.4.11.tar.gz#ea6ab3fc11088ede3c79ddc5b702b17af842f774" dependencies: cmake-js "7.2.1" node-addon-api "^6.1.0"