fix: remove convo volatile update from v34 migration since it's not related to disappearing messages

pull/2971/head
William Grant 2 years ago
parent 03c0d74820
commit 4aba2493e5

@ -3,12 +3,10 @@ import * as BetterSqlite3 from '@signalapp/better-sqlite3';
import { import {
ContactInfoSet, ContactInfoSet,
ContactsConfigWrapperNode, ContactsConfigWrapperNode,
ConvoInfoVolatileWrapperNode,
DisappearingMessageConversationType, DisappearingMessageConversationType,
} from 'libsession_util_nodejs'; } from 'libsession_util_nodejs';
import { isEmpty, isEqual, isFinite, isNumber } from 'lodash'; import { isEmpty, isEqual } from 'lodash';
import { CONVERSATION_PRIORITIES } from '../../../models/conversationAttributes'; import { CONVERSATION_PRIORITIES } from '../../../models/conversationAttributes';
import { MESSAGES_TABLE, toSqliteBoolean } from '../../database_utility';
import { fromHexToArray } from '../../../session/utils/String'; import { fromHexToArray } from '../../../session/utils/String';
import { checkTargetMigration, hasDebugEnvVariable } from '../utils'; import { checkTargetMigration, hasDebugEnvVariable } from '../utils';
import { ConfigDumpRow, CONFIG_DUMP_TABLE } from '../../../types/sqlSharedTypes'; import { ConfigDumpRow, CONFIG_DUMP_TABLE } from '../../../types/sqlSharedTypes';
@ -122,12 +120,10 @@ function getContactInfoFromDBValues({
return wrapperContact; return wrapperContact;
} }
function insertContactIntoContactWrapper( function updateContactInContactWrapper(
contact: any, contact: any,
blockedNumbers: Array<string>, blockedNumbers: Array<string>,
contactsConfigWrapper: ContactsConfigWrapperNode | null, // set this to null to only insert into the convo volatile wrapper (i.e. for ourConvo case) contactsConfigWrapper: ContactsConfigWrapperNode,
volatileConfigWrapper: ConvoInfoVolatileWrapperNode,
db: BetterSqlite3.Database,
version: number version: number
) { ) {
checkTargetMigration(version, targetVersion); checkTargetMigration(version, targetVersion);
@ -189,36 +185,10 @@ function insertContactIntoContactWrapper(
} }
} }
} }
try {
const rows = db
.prepare(
`
SELECT MAX(COALESCE(sent_at, 0)) AS max_sent_at
FROM ${MESSAGES_TABLE} WHERE
conversationId = $conversationId AND
unread = $unread;
`
)
.get({
conversationId: contact.id,
unread: toSqliteBoolean(false), // we want to find the message read with the higher sentAt timestamp
});
const maxRead = rows?.max_sent_at;
const lastRead = isNumber(maxRead) && isFinite(maxRead) ? maxRead : 0;
hasDebugEnvVariable &&
console.info(`Inserting contact into volatile wrapper maxread: ${contact.id} :${lastRead}`);
volatileConfigWrapper.set1o1(contact.id, lastRead, false);
} catch (e) {
console.error(
`volatileConfigWrapper.set1o1 during migration failed with ${e.message} for id: ${contact.id}. skipping`
);
}
} }
export const V34 = { export const V34 = {
fetchConfigDumps, fetchConfigDumps,
writeConfigDumps, writeConfigDumps,
insertContactIntoContactWrapper, updateContactInContactWrapper,
}; };

@ -1767,36 +1767,23 @@ function updateToSessionSchemaVersion34(currentVersion: number, db: BetterSqlite
publicKeyHex, publicKeyHex,
'ContactsConfig' 'ContactsConfig'
); );
const volatileInfoConfigWrapperDump = MIGRATION_HELPERS.V34.fetchConfigDumps(
db,
targetVersion,
publicKeyHex,
'ConvoInfoVolatileConfig'
);
if (contactsWrapperDump && volatileInfoConfigWrapperDump) { if (contactsWrapperDump) {
const contactsData = contactsWrapperDump.data; const contactsData = contactsWrapperDump.data;
const contactsConfigWrapper = new ContactsConfigWrapperNode( const contactsConfigWrapper = new ContactsConfigWrapperNode(
privateEd25519, privateEd25519,
contactsData contactsData
); );
const volatileInfoData = volatileInfoConfigWrapperDump.data;
const volatileInfoConfigWrapper = new ConvoInfoVolatileWrapperNode(
privateEd25519,
volatileInfoData
);
console.info( console.info(
`===================== Starting contact update into wrapper ${contactsToUpdateInWrapper?.length} =======================` `===================== Starting contact update into wrapper ${contactsToUpdateInWrapper?.length} =======================`
); );
contactsToUpdateInWrapper.forEach(contact => { contactsToUpdateInWrapper.forEach(contact => {
MIGRATION_HELPERS.V34.insertContactIntoContactWrapper( MIGRATION_HELPERS.V34.updateContactInContactWrapper(
contact, contact,
blockedNumbers, blockedNumbers,
contactsConfigWrapper, contactsConfigWrapper,
volatileInfoConfigWrapper,
db,
targetVersion targetVersion
); );
}); });
@ -1817,22 +1804,9 @@ function updateToSessionSchemaVersion34(currentVersion: number, db: BetterSqlite
console.log( console.log(
'===================== contacts config wrapper dump updated =======================' '===================== contacts config wrapper dump updated ======================='
); );
// dump the wrapper content and save it to the DB
MIGRATION_HELPERS.V34.writeConfigDumps(
db,
targetVersion,
publicKeyHex,
'ConvoInfoVolatileConfig',
volatileInfoConfigWrapper.dump()
);
console.log(
'===================== convo info volatile config wrapper dump updated ======================='
);
} else { } else {
console.log( console.log(
'===================== contacts config or convo info volatile config wrapper dump found =======================' '===================== contacts config config wrapper dump found ======================='
); );
} }
} }
@ -1846,6 +1820,7 @@ function updateToSessionSchemaVersion34(currentVersion: number, db: BetterSqlite
expirationType = $expirationType expirationType = $expirationType
WHERE type = 'group' AND id LIKE '05%' AND expireTimer > 0;` WHERE type = 'group' AND id LIKE '05%' AND expireTimer > 0;`
).run({ expirationType: 'deleteAfterSend' }); ).run({ expirationType: 'deleteAfterSend' });
// endregion // endregion
// Message changes // Message changes

Loading…
Cancel
Save