Hide encryption history + FTUE flow (#839)
* First attempt at implementing encrypted history banner and removing old UTDs * Get the right behavior in the timeline * Implement the designs * Extract post-processing logic, add tests * Add encryption banner to timeline screenshots * Create FTUE feature to handle welcome screen and analytics * Move classes to their own packages, add tests for `DefaultFtueState`. * Remove unnecessary private MutableStateFlow * Move some FTUE related methods and classes back to the `impl` module * Handle back press at each FTUE step * Remove unneeded `TestScope` receiver for `createState` in tests. * Use light & dark previews for the banner view. * Move color customization from `TextStyle` to `Text` component. * Rename `InfoList` design components, use them in `AnalyticsOptInView` too. * Cleanup MatrixClient. * Fix copy&paste error Co-authored-by: Benoit Marty <benoit@matrix.org> * Fix typo * Fix Maestro tests --------- Co-authored-by: ElementBot <benoitm+elementbot@element.io> Co-authored-by: Benoit Marty <benoit@matrix.org>
This commit is contained in:
parent
b42343fd3c
commit
2488432805
62 changed files with 1714 additions and 123 deletions
|
|
@ -17,19 +17,22 @@
|
|||
package io.element.android.libraries.sessionstorage.impl
|
||||
|
||||
import io.element.android.libraries.sessionstorage.api.SessionData
|
||||
import java.util.Date
|
||||
import io.element.android.libraries.matrix.session.SessionData as DbSessionData
|
||||
|
||||
internal fun SessionData.toDbModel(): io.element.android.libraries.matrix.session.SessionData {
|
||||
return io.element.android.libraries.matrix.session.SessionData(
|
||||
internal fun SessionData.toDbModel(): DbSessionData {
|
||||
return DbSessionData(
|
||||
userId = userId,
|
||||
deviceId = deviceId,
|
||||
accessToken = accessToken,
|
||||
refreshToken = refreshToken,
|
||||
homeserverUrl = homeserverUrl,
|
||||
slidingSyncProxy = slidingSyncProxy,
|
||||
loginTimestamp = loginTimestamp?.time,
|
||||
)
|
||||
}
|
||||
|
||||
internal fun io.element.android.libraries.matrix.session.SessionData.toApiModel(): SessionData {
|
||||
internal fun DbSessionData.toApiModel(): SessionData {
|
||||
return SessionData(
|
||||
userId = userId,
|
||||
deviceId = deviceId,
|
||||
|
|
@ -37,5 +40,6 @@ internal fun io.element.android.libraries.matrix.session.SessionData.toApiModel(
|
|||
refreshToken = refreshToken,
|
||||
homeserverUrl = homeserverUrl,
|
||||
slidingSyncProxy = slidingSyncProxy,
|
||||
loginTimestamp = loginTimestamp?.let { Date(it) }
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,9 +4,11 @@ CREATE TABLE SessionData (
|
|||
accessToken TEXT NOT NULL,
|
||||
refreshToken TEXT,
|
||||
homeserverUrl TEXT NOT NULL,
|
||||
slidingSyncProxy TEXT
|
||||
slidingSyncProxy TEXT,
|
||||
loginTimestamp INTEGER
|
||||
);
|
||||
|
||||
|
||||
selectFirst:
|
||||
SELECT * FROM SessionData LIMIT 1;
|
||||
|
||||
|
|
@ -17,7 +19,7 @@ selectByUserId:
|
|||
SELECT * FROM SessionData WHERE userId = ?;
|
||||
|
||||
insertSessionData:
|
||||
INSERT INTO SessionData(userId, deviceId, accessToken, refreshToken, homeserverUrl, slidingSyncProxy) VALUES ?;
|
||||
INSERT INTO SessionData VALUES ?;
|
||||
|
||||
removeSession:
|
||||
DELETE FROM SessionData WHERE userId = ?;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
CREATE TABLE SessionData (
|
||||
userId TEXT NOT NULL PRIMARY KEY,
|
||||
deviceId TEXT NOT NULL,
|
||||
accessToken TEXT NOT NULL,
|
||||
refreshToken TEXT,
|
||||
homeserverUrl TEXT NOT NULL,
|
||||
slidingSyncProxy TEXT
|
||||
);
|
||||
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE SessionData ADD COLUMN loginTimestamp INTEGER;
|
||||
|
|
@ -35,7 +35,8 @@ class DatabaseSessionStoreTests {
|
|||
accessToken = "accessToken",
|
||||
refreshToken = "refreshToken",
|
||||
homeserverUrl = "homeserverUrl",
|
||||
slidingSyncProxy = null
|
||||
slidingSyncProxy = null,
|
||||
loginTimestamp = null,
|
||||
)
|
||||
|
||||
@Before
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue