Merge pull request #5755 from element-hq/feature/bma/cleanupDb

Remove unused `slidingSyncProxy` from DB.
This commit is contained in:
Benoit Marty
2025-11-18 17:42:09 +01:00
committed by GitHub
14 changed files with 43 additions and 37 deletions

View File

@@ -39,7 +39,6 @@ class DefaultMessageParser(
accessToken = accessToken,
deviceId = deviceId,
refreshToken = null,
slidingSyncProxy = null
)
}
}

View File

@@ -84,5 +84,4 @@ internal fun anExternalSession(
accessToken = "access_token",
deviceId = "device_id",
refreshToken = null,
slidingSyncProxy = null
)

View File

@@ -37,7 +37,6 @@ private fun aSessionData(
refreshToken = "aRefreshToken",
homeserverUrl = "aHomeserverUrl",
oidcData = null,
slidingSyncProxy = null,
loginTimestamp = null,
isTokenValid = isTokenValid,
loginType = LoginType.UNKNOWN,

View File

@@ -17,5 +17,4 @@ data class ExternalSession(
val accessToken: String,
val refreshToken: String?,
val homeserverUrl: String,
val slidingSyncProxy: String?
)

View File

@@ -28,7 +28,6 @@ internal fun Session.toSessionData(
refreshToken = refreshToken,
homeserverUrl = homeserverUrl ?: this.homeserverUrl,
oidcData = oidcData,
slidingSyncProxy = null,
loginTimestamp = Date(),
isTokenValid = isTokenValid,
loginType = loginType,
@@ -54,7 +53,6 @@ internal fun ExternalSession.toSessionData(
refreshToken = refreshToken,
homeserverUrl = homeserverUrl,
oidcData = null,
slidingSyncProxy = slidingSyncProxy,
loginTimestamp = Date(),
isTokenValid = isTokenValid,
loginType = loginType,

View File

@@ -19,7 +19,6 @@ import io.element.android.libraries.matrix.test.A_SECRET
import io.element.android.libraries.matrix.test.A_USER_ID
import io.element.android.libraries.sessionstorage.api.LoginType
import org.junit.Test
import org.matrix.rustcomponents.sdk.SlidingSyncVersion
import java.io.File
class SessionKtTest {
@@ -38,7 +37,6 @@ class SessionKtTest {
assertThat(result.homeserverUrl).isEqualTo(A_HOMESERVER_URL)
assertThat(result.isTokenValid).isTrue()
assertThat(result.oidcData).isNull()
assertThat(result.slidingSyncProxy).isNull()
assertThat(result.loginType).isEqualTo(LoginType.PASSWORD)
assertThat(result.loginTimestamp).isNotNull()
assertThat(result.passphrase).isEqualTo(A_SECRET)
@@ -70,20 +68,6 @@ class SessionKtTest {
assertThat(result.homeserverUrl).isEqualTo(A_HOMESERVER_URL_2)
}
@Test
fun `toSessionData copy the sliding sync url if present`() {
val result = aRustSession(
proxy = SlidingSyncVersion.NATIVE
).toSessionData(
isTokenValid = true,
loginType = LoginType.PASSWORD,
passphrase = A_SECRET,
sessionPaths = SessionPaths(File("/a/file"), File("/a/cache")),
homeserverUrl = A_HOMESERVER_URL_2,
)
assertThat(result.slidingSyncProxy).isNull()
}
@Test
fun `ExternalSession toSessionData compute the expected result`() {
val result = anExternalSession().toSessionData(
@@ -99,7 +83,6 @@ class SessionKtTest {
assertThat(result.homeserverUrl).isEqualTo(A_HOMESERVER_URL)
assertThat(result.isTokenValid).isTrue()
assertThat(result.oidcData).isNull()
assertThat(result.slidingSyncProxy).isNull()
assertThat(result.loginType).isEqualTo(LoginType.PASSWORD)
assertThat(result.loginTimestamp).isNotNull()
assertThat(result.passphrase).isEqualTo(A_SECRET)
@@ -125,12 +108,10 @@ private fun anExternalSession(
accessToken: String = "accessToken",
refreshToken: String? = null,
homeserverUrl: String = A_HOMESERVER_URL,
slidingSyncProxy: String? = null,
) = ExternalSession(
userId = userId,
deviceId = deviceId,
accessToken = accessToken,
refreshToken = refreshToken,
homeserverUrl = homeserverUrl,
slidingSyncProxy = slidingSyncProxy,
)

View File

@@ -26,8 +26,6 @@ data class SessionData(
val homeserverUrl: String,
/** The Open ID Connect info for this session, if any. */
val oidcData: String?,
/** The Sliding Sync Proxy URL for this session, if any. */
val slidingSyncProxy: String?,
/** The timestamp of the last login. May be `null` in very old sessions. */
val loginTimestamp: Date?,
/** Whether the [accessToken] is valid or not. */

View File

@@ -21,7 +21,6 @@ internal fun SessionData.toDbModel(): DbSessionData {
refreshToken = refreshToken,
homeserverUrl = homeserverUrl,
oidcData = oidcData,
slidingSyncProxy = slidingSyncProxy,
loginTimestamp = loginTimestamp?.time,
isTokenValid = if (isTokenValid) 1L else 0L,
loginType = loginType.name,
@@ -43,7 +42,6 @@ internal fun DbSessionData.toApiModel(): SessionData {
refreshToken = refreshToken,
homeserverUrl = homeserverUrl,
oidcData = oidcData,
slidingSyncProxy = slidingSyncProxy,
loginTimestamp = loginTimestamp?.let { Date(it) },
isTokenValid = isTokenValid == 1L,
loginType = LoginType.fromName(loginType ?: LoginType.UNKNOWN.name),

View File

@@ -14,7 +14,6 @@ CREATE TABLE SessionData (
accessToken TEXT NOT NULL,
refreshToken TEXT,
homeserverUrl TEXT NOT NULL,
slidingSyncProxy TEXT,
-- added in version 2
loginTimestamp INTEGER,
-- added in version 3

View File

@@ -0,0 +1,43 @@
-- Migrate DB from version 10
-- Remove field slidingSyncProxy
-- Equivalent to (DROP not supported by sqldelight):
-- ALTER TABLE SessionData DROP slidingSyncProxy;
CREATE TABLE SessionData_bak (
userId TEXT NOT NULL PRIMARY KEY,
deviceId TEXT NOT NULL,
accessToken TEXT NOT NULL,
refreshToken TEXT,
homeserverUrl TEXT NOT NULL,
loginTimestamp INTEGER,
oidcData TEXT,
isTokenValid INTEGER NOT NULL DEFAULT 1,
loginType TEXT,
passphrase TEXT,
sessionPath TEXT NOT NULL DEFAULT "",
cachePath TEXT NOT NULL DEFAULT "",
position INTEGER NOT NULL DEFAULT 0,
lastUsageIndex INTEGER NOT NULL DEFAULT 0,
userDisplayName TEXT,
userAvatarUrl TEXT
);
INSERT INTO SessionData_bak SELECT
userId,
deviceId,
accessToken,
refreshToken,
homeserverUrl,
loginTimestamp,
oidcData,
isTokenValid,
loginType,
passphrase,
sessionPath,
cachePath,
position,
lastUsageIndex,
userDisplayName,
userAvatarUrl FROM SessionData;
DROP TABLE SessionData;
ALTER TABLE SessionData_bak RENAME TO SessionData;

View File

@@ -220,7 +220,6 @@ class DatabaseSessionStoreTest {
accessToken = "accessToken",
refreshToken = "refreshToken",
homeserverUrl = "homeserverUrl",
slidingSyncProxy = "slidingSyncProxy",
loginTimestamp = 1,
oidcData = "aOidcData",
isTokenValid = 1,
@@ -239,7 +238,6 @@ class DatabaseSessionStoreTest {
accessToken = "accessTokenAltered",
refreshToken = "refreshTokenAltered",
homeserverUrl = "homeserverUrlAltered",
slidingSyncProxy = "slidingSyncProxyAltered",
loginTimestamp = 2,
oidcData = "aOidcDataAltered",
isTokenValid = 1,
@@ -266,7 +264,6 @@ class DatabaseSessionStoreTest {
assertThat(alteredSession.accessToken).isEqualTo(secondSessionData.accessToken)
assertThat(alteredSession.refreshToken).isEqualTo(secondSessionData.refreshToken)
assertThat(alteredSession.homeserverUrl).isEqualTo(secondSessionData.homeserverUrl)
assertThat(alteredSession.slidingSyncProxy).isEqualTo(secondSessionData.slidingSyncProxy)
// Check that alteredSession.loginTimestamp is not altered, so equal to firstSessionData.loginTimestamp
assertThat(alteredSession.loginTimestamp).isEqualTo(firstSessionData.loginTimestamp)
assertThat(alteredSession.oidcData).isEqualTo(secondSessionData.oidcData)
@@ -286,7 +283,6 @@ class DatabaseSessionStoreTest {
accessToken = "accessToken",
refreshToken = "refreshToken",
homeserverUrl = "homeserverUrl",
slidingSyncProxy = "slidingSyncProxy",
loginTimestamp = 1,
oidcData = "aOidcData",
isTokenValid = 1,
@@ -305,7 +301,6 @@ class DatabaseSessionStoreTest {
accessToken = "accessTokenAltered",
refreshToken = "refreshTokenAltered",
homeserverUrl = "homeserverUrlAltered",
slidingSyncProxy = "slidingSyncProxyAltered",
loginTimestamp = 2,
oidcData = "aOidcDataAltered",
isTokenValid = 1,

View File

@@ -19,7 +19,6 @@ internal fun aDbSessionData(
accessToken = "accessToken",
refreshToken = "refreshToken",
homeserverUrl = "homeserverUrl",
slidingSyncProxy = null,
loginTimestamp = null,
oidcData = "aOidcData",
isTokenValid = 1,

View File

@@ -31,7 +31,6 @@ fun aSessionData(
refreshToken = refreshToken,
homeserverUrl = "aHomeserverUrl",
oidcData = null,
slidingSyncProxy = null,
loginTimestamp = null,
isTokenValid = isTokenValid,
loginType = LoginType.UNKNOWN,