fix: allow promoted state to be reset to NOT_SENT

pull/3281/head
Audric Ackermann 4 months ago
parent 53e579427a
commit 2ca2dd4790
No known key found for this signature in database

@ -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",

@ -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),

@ -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,
});
}}

@ -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<GroupInvitePersistedData> {
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
);

@ -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<GroupPromotePersistedData> {
failed = false;
}
} finally {
window?.inboxStore?.dispatch(
groupInfoActions.setPromotionPending({ groupPk, pubkey: member, sending: false })
);
try {
if (failed) {
await MetaGroupWrapperActions.memberSetPromotionFailed(groupPk, member);

@ -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<string>) {
/**
*
@ -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 }>

@ -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"

Loading…
Cancel
Save