diff --git a/app/sql.js b/app/sql.js index 225fb7e45..73dbdb5da 100644 --- a/app/sql.js +++ b/app/sql.js @@ -812,6 +812,7 @@ const LOKI_SCHEMA_VERSIONS = [ updateToLokiSchemaVersion6, updateToLokiSchemaVersion7, updateToLokiSchemaVersion8, + updateToLokiSchemaVersion9, ]; async function updateToLokiSchemaVersion1(currentVersion, instance) { @@ -1075,6 +1076,26 @@ async function updateToLokiSchemaVersion8(currentVersion, instance) { console.log('updateToLokiSchemaVersion8: success!'); } +async function updateToLokiSchemaVersion9(currentVersion, instance) { + if (currentVersion >= 9) { + return; + } + console.log('updateToLokiSchemaVersion9: starting...'); + await instance.run('BEGIN TRANSACTION;'); + + await removePrefixFromGroupConversations(instance); + + await instance.run( + `INSERT INTO loki_schema ( + version + ) values ( + 9 + );` + ); + await instance.run('COMMIT TRANSACTION;'); + console.log('updateToLokiSchemaVersion9: success!'); +} + async function updateLokiSchema(instance) { const result = await instance.get( "SELECT name FROM sqlite_master WHERE type = 'table' AND name='loki_schema';" @@ -3039,3 +3060,39 @@ async function removeKnownAttachments(allAttachments) { return Object.keys(lookup); } + +async function removePrefixFromGroupConversations(instance) { + const rows = await instance.all( + `SELECT json FROM conversations WHERE + type = 'group' AND + id LIKE '__textsecure_group__!%';` + ); + + const objs = map(rows, row => jsonToObject(row.json)); + + await Promise.all( + objs.map(async o => { + const oldId = o.id; + const newId = oldId.replace('__textsecure_group__!', ''); + + console.log(`migrating conversation, ${oldId} to ${newId}`); + + const morphedObject = { + ...o, + id: newId, + }; + + await instance.run( + `UPDATE ${CONVERSATIONS_TABLE} SET + id = $newId, + json = $json + WHERE id = $oldId;`, + { + $newId: newId, + $json: objectToJSON(morphedObject), + $oldId: oldId, + } + ); + }) + ); +} diff --git a/js/models/messages.js b/js/models/messages.js index 1345f895a..d762d95c3 100644 --- a/js/models/messages.js +++ b/js/models/messages.js @@ -1283,10 +1283,8 @@ (dataMessage.attachments && dataMessage.attachments.length)) ); const shouldNotifyPushServer = - hasBodyOrAttachments && - isSessionOrClosedMessage && - sentMessage.ttl === - window.libsession.Constants.TTL_DEFAULT.REGULAR_MESSAGE; + hasBodyOrAttachments && isSessionOrClosedMessage; + if (shouldNotifyPushServer) { // notify the push notification server if needed if (!wrappedEnvelope) { diff --git a/preload.js b/preload.js index ff5848175..ae826f80b 100644 --- a/preload.js +++ b/preload.js @@ -490,7 +490,7 @@ if (config.environment.includes('test-integration')) { useOnionRequests: false, useFileOnionRequests: false, debugMessageLogs: true, - enableSenderKeys: true, + enableSenderKeys: false, useMultiDevice: false, }; /* eslint-disable global-require, import/no-extraneous-dependencies */ diff --git a/ts/receiver/dataMessage.ts b/ts/receiver/dataMessage.ts index 813b8b883..ea8049a71 100644 --- a/ts/receiver/dataMessage.ts +++ b/ts/receiver/dataMessage.ts @@ -644,10 +644,11 @@ export async function handleMessageEvent(event: MessageEvent): Promise { // - group.id if it is a group message let conversationId = id; if (isGroupMessage) { - /* handle one part of the group logic here: - handle requesting info of a new group, - dropping an admin only update from a non admin, ... - */ + // remove the prefix from the source object so this is correct for all other + message.group.id = message.group.id.replace( + PubKey.PREFIX_GROUP_TEXTSECURE, + '' + ); conversationId = message.group.id; }