From 02093fdfbf53f9c0182433e6a7ebcc844ec9047c Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Wed, 6 Nov 2024 14:57:39 +1100 Subject: [PATCH] fix: legacy groups are kind of working again at least as much as they ever did --- preload.js | 2 +- ts/components/conversation/SessionConversation.tsx | 5 ++--- ts/components/dialog/UpdateGroupMembersDialog.tsx | 2 +- ts/models/conversation.ts | 2 +- ts/receiver/contentMessage.ts | 10 ++++++---- ts/session/apis/snode_api/swarmPolling.ts | 2 +- ts/session/sending/MessageSender.ts | 5 ++++- 7 files changed, 16 insertions(+), 12 deletions(-) diff --git a/preload.js b/preload.js index 5507a3216..c59a6e34e 100644 --- a/preload.js +++ b/preload.js @@ -40,7 +40,7 @@ window.saveLog = additionalText => ipc.send('save-debug-log', additionalText); window.sessionFeatureFlags = { useOnionRequests: true, useTestNet: isTestNet() || isTestIntegration(), - useClosedGroupV2: true, // TODO DO NOT MERGE Remove after QA + useClosedGroupV2: false, // TODO DO NOT MERGE Remove after QA useClosedGroupV2QAButtons: true, // TODO DO NOT MERGE Remove after QA replaceLocalizedStringsWithKeys: false, debug: { diff --git a/ts/components/conversation/SessionConversation.tsx b/ts/components/conversation/SessionConversation.tsx index 8a28b137d..6ca1d35b6 100644 --- a/ts/components/conversation/SessionConversation.tsx +++ b/ts/components/conversation/SessionConversation.tsx @@ -662,10 +662,9 @@ function OutdatedLegacyGroupBanner(props: { return isLegacyGroup ? ( { - showLinkVisitWarningDialog('', dispatch); - throw new Error('TODO'); // fixme audric + showLinkVisitWarningDialog('https://getsession.org/blog/session-groups-v2', dispatch); }} icon="externalLink" dataTestId="legacy-group-banner" diff --git a/ts/components/dialog/UpdateGroupMembersDialog.tsx b/ts/components/dialog/UpdateGroupMembersDialog.tsx index 27ba8be61..3558fad20 100644 --- a/ts/components/dialog/UpdateGroupMembersDialog.tsx +++ b/ts/components/dialog/UpdateGroupMembersDialog.tsx @@ -219,7 +219,7 @@ export const UpdateGroupMembersDialog = (props: Props) => { return ( - {hasClosedGroupV2QAButtons() && weAreAdmin ? ( + {hasClosedGroupV2QAButtons() && weAreAdmin && PubKey.is03Pubkey(conversationId) ? ( <> Also remove messages: { if (this.isClosedGroup()) { if (this.matchesDisappearingMode('deleteAfterRead')) { - throw new Error('Group disappearing messages must be deleteAterSend'); + throw new Error('Group disappearing messages must be deleteAfterSend'); } const chatMessageMediumGroup = new VisibleMessage(chatMessageParams); const closedGroupVisibleMessage = new ClosedGroupVisibleMessage({ diff --git a/ts/receiver/contentMessage.ts b/ts/receiver/contentMessage.ts index 39b0be5ae..8e227327b 100644 --- a/ts/receiver/contentMessage.ts +++ b/ts/receiver/contentMessage.ts @@ -10,8 +10,8 @@ import { IncomingMessageCache } from './cache'; import { Data } from '../data/data'; import { SettingsKey } from '../data/settings-key'; import { - deleteMessagesFromSwarmAndCompletelyLocally, - deleteMessagesFromSwarmAndMarkAsDeletedLocally, + deleteMessagesFromSwarmAndCompletelyLocally, + deleteMessagesFromSwarmAndMarkAsDeletedLocally, } from '../interactions/conversations/unsendingInteractions'; import { findCachedBlindedMatchOrLookupOnAllServers } from '../session/apis/open_group_api/sogsv3/knownBlindedkeys'; import { ConvoHub } from '../session/conversations'; @@ -29,8 +29,8 @@ import { BlockedNumberController } from '../util'; import { ReadReceipts } from '../util/readReceipts'; import { Storage } from '../util/storage'; import { - ContactsWrapperActions, - MetaGroupWrapperActions, + ContactsWrapperActions, + MetaGroupWrapperActions, } from '../webworker/workers/browser/libsession_worker_interface'; import { handleCallMessage } from './callMessage'; import { getAllCachedECKeyPair, sentAtMoreRecentThanWrapper } from './closedGroups'; @@ -103,6 +103,8 @@ async function decryptForClosedGroup( true ); if (res?.decryptedContent.byteLength) { + decryptedContent = res.decryptedContent; + break; } decryptedContent = res.decryptedContent; diff --git a/ts/session/apis/snode_api/swarmPolling.ts b/ts/session/apis/snode_api/swarmPolling.ts index 785b0e11b..47a022221 100644 --- a/ts/session/apis/snode_api/swarmPolling.ts +++ b/ts/session/apis/snode_api/swarmPolling.ts @@ -454,7 +454,7 @@ export class SwarmPolling { resultsFromAllNamespaces ); window.log.debug( - `received confMessages:${confMessages?.length || 0}, revokedMessages:${revokedMessages?.length || 0}, ` + `received confMessages:${confMessages?.length || 0}, revokedMessages:${revokedMessages?.length || 0}, , otherMessages:${otherMessages?.length || 0}, ` ); // We always handle the config messages first (for groups 03 or our own messages) await this.handleUserOrGroupConfMessages({ confMessages, pubkey, type }); diff --git a/ts/session/sending/MessageSender.ts b/ts/session/sending/MessageSender.ts index fab2cb049..1143c907c 100644 --- a/ts/session/sending/MessageSender.ts +++ b/ts/session/sending/MessageSender.ts @@ -124,9 +124,12 @@ async function messageToRequest05({ createdAtNetworkTimestamp: networkTimestamp, plainTextBuffer, }; - if (namespace === SnodeNamespaces.Default || namespace === SnodeNamespaces.LegacyClosedGroup) { + if (namespace === SnodeNamespaces.Default) { return new StoreUserMessageSubRequest(shared05Arguments); } + if (namespace === SnodeNamespaces.LegacyClosedGroup) { + return new StoreLegacyGroupMessageSubRequest(shared05Arguments); + } if (SnodeNamespace.isUserConfigNamespace(namespace)) { return new StoreUserConfigSubRequest(shared05Arguments); }