Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ configurations.configureEach {
exclude(module = "commons-logging")
}

val canonicalVersionCode = 421
val canonicalVersionName = "1.28.0"
val canonicalVersionCode = 423
val canonicalVersionName = "1.28.1"

val postFixSize = 10
val abiPostFix = mapOf(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ data class OpenGroup(
val room: String,
@SerialName("displayName") // This rename caters for existing data
val name: String,
val description: String?,
val description: String? = null,
val publicKey: String,
val imageId: String?,
val infoUpdates: Int,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import android.database.Cursor
import kotlinx.coroutines.channels.BufferOverflow
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableSharedFlow
import net.zetetic.database.sqlcipher.SQLiteDatabase
import org.json.JSONArray
import org.json.JSONException
import org.session.libsignal.utilities.JsonUtil.SaneJSONObject
Expand Down Expand Up @@ -86,15 +87,15 @@ class ReactionDatabase(context: Context, helper: Provider<SQLCipherOpenHelper>)
@JvmField
val CREATE_MESSAGE_ID_MMS_INDEX = arrayOf("CREATE INDEX IF NOT EXISTS reaction_message_id_mms_idx ON $TABLE_NAME ($MESSAGE_ID, $IS_MMS)")

@JvmField
val MIGRATE_REACTION_TABLE_TO_USE_RECIPIENT_SETTINGS = arrayOf(
fun migrateToDropForeignConstraint(db: SQLiteDatabase) {
// Create the new table with updated schema
"""
db.rawExecSQL(
"""
CREATE TABLE ${TABLE_NAME}_new (
$ROW_ID INTEGER PRIMARY KEY,
$MESSAGE_ID INTEGER NOT NULL,
$IS_MMS INTEGER NOT NULL,
$AUTHOR_ID INTEGER NOT NULL REFERENCES ${RecipientSettingsDatabase.TABLE_NAME} (${RecipientSettingsDatabase.COL_ADDRESS}) ON DELETE CASCADE,
$AUTHOR_ID TEXT NOT NULL,
$EMOJI TEXT NOT NULL,
$SERVER_ID TEXT NOT NULL,
$COUNT INTEGER NOT NULL,
Expand All @@ -103,27 +104,34 @@ class ReactionDatabase(context: Context, helper: Provider<SQLCipherOpenHelper>)
$DATE_RECEIVED INTEGER NOT NULL,
UNIQUE($MESSAGE_ID, $IS_MMS, $EMOJI, $AUTHOR_ID) ON CONFLICT REPLACE
)
""",
"""
)

// Copy data from the old table to the new table
"""
INSERT INTO ${TABLE_NAME}_new ($ROW_ID, $MESSAGE_ID, $IS_MMS, $AUTHOR_ID, $EMOJI, $SERVER_ID, $COUNT, $SORT_ID, $DATE_SENT, $DATE_RECEIVED)
SELECT $ROW_ID, $MESSAGE_ID, $IS_MMS, ${AUTHOR_ID}, $EMOJI, $SERVER_ID, $COUNT, $SORT_ID, $DATE_SENT, $DATE_RECEIVED
db.rawExecSQL(
"""
INSERT OR REPLACE INTO ${TABLE_NAME}_new ($ROW_ID, $MESSAGE_ID, $IS_MMS, $AUTHOR_ID, $EMOJI, $SERVER_ID, $COUNT, $SORT_ID, $DATE_SENT, $DATE_RECEIVED)
SELECT $ROW_ID, $MESSAGE_ID, $IS_MMS, $AUTHOR_ID, $EMOJI, $SERVER_ID, $COUNT, $SORT_ID, $DATE_SENT, $DATE_RECEIVED
FROM $TABLE_NAME
""",
""")

// Drop the old table and their triggers
"DROP TABLE $TABLE_NAME",
"DROP TRIGGER reactions_sms_delete",
"DROP TRIGGER reactions_mms_delete",
db.rawExecSQL("DROP TABLE $TABLE_NAME")
db.rawExecSQL("DROP TRIGGER IF EXISTS reactions_sms_delete")
db.rawExecSQL("DROP TRIGGER IF EXISTS reactions_mms_delete")

// Rename the new table to the original table name
"ALTER TABLE ${TABLE_NAME}_new RENAME TO $TABLE_NAME",
db.rawExecSQL("ALTER TABLE ${TABLE_NAME}_new RENAME TO $TABLE_NAME")

// Add the necessary indexes and triggers to the new table
*CREATE_INDEXS,
*CREATE_REACTION_TRIGGERS,
)
for (indexCmd in CREATE_INDEXS) {
db.rawExecSQL(indexCmd)
}

for (triggerCmd in CREATE_REACTION_TRIGGERS) {
db.rawExecSQL(triggerCmd)
}
}

private fun readReaction(cursor: Cursor): ReactionRecord {
return ReactionRecord(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -248,8 +248,8 @@ public void onCreate(SQLiteDatabase db) {
db.execSQL(ThreadDatabase.ADD_SNIPPET_CONTENT_COLUMN);

executeStatements(db, RecipientSettingsDatabase.Companion.getMIGRATION_CREATE_TABLE());
ReactionDatabase.Companion.migrateToDropForeignConstraint(db);
db.execSQL(RecipientSettingsDatabase.MIGRATE_DROP_OLD_TABLE);
executeStatements(db, ReactionDatabase.MIGRATE_REACTION_TABLE_TO_USE_RECIPIENT_SETTINGS);
db.execSQL(BlindedIdMappingDatabase.DROP_TABLE_COMMAND);
db.execSQL(ExpirationConfigurationDatabase.DROP_TABLE_COMMAND);
db.execSQL(SessionContactDatabase.getDropTableCommand());
Expand Down Expand Up @@ -570,8 +570,8 @@ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

executeStatements(db, RecipientSettingsDatabase.Companion.getMIGRATION_CREATE_TABLE());
db.execSQL(RecipientSettingsDatabase.MIGRATE_MOVE_DATA_FROM_OLD_TABLE);
ReactionDatabase.Companion.migrateToDropForeignConstraint(db);
db.execSQL(RecipientSettingsDatabase.MIGRATE_DROP_OLD_TABLE);
executeStatements(db, ReactionDatabase.MIGRATE_REACTION_TABLE_TO_USE_RECIPIENT_SETTINGS);
db.execSQL(BlindedIdMappingDatabase.DROP_TABLE_COMMAND);
db.execSQL(ExpirationConfigurationDatabase.DROP_TABLE_COMMAND);
db.execSQL(SessionContactDatabase.getDropTableCommand());
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ kotlinVersion = "2.2.20"
kryoVersion = "5.6.2"
kspVersion = "2.2.10-2.0.2"
legacySupportV13Version = "1.0.0"
libsessionUtilAndroidVersion = "1.0.8"
libsessionUtilAndroidVersion = "1.0.8-1-g27817b4"
media3ExoplayerVersion = "1.8.0"
mockitoCoreVersion = "5.20.0"
navVersion = "2.9.4"
Expand Down