Sliding Sync + New Timeline API (#189)

* Begin adopting new Timeline API.

* Add edited indicator and reactions.

* vector-im/element-x-ios/issues/65 - Sliding sync support
* Fix missing room display name, wrong placeholder avatar text color and various other warnings that would fail the build on the CI

* Various tweaks:
* using release version of the demo branch of the sdk
* enabled home screen last room messages
* switched debug mode rust logging to warn
* enabled redactions
* enabled new logout flows and soft logout
* enabled replies

* Fix room member display name and avatar crashes / race condition, fix unit tests
* Make the ClientProxy and the UserSession MainActors
* Remove unused MatrixRustSDK imports, we should strive to keep these only in top level services and proxies
* Don't start either of the syncs while in soft logout

* #181: Style the session verification banner to match Figma.
* #181: Update verification modal.
* #181: Update snapshot tests.

* Make session verification state machine less pedantic
* Remove unnecessary weak selfs
* Various tweaks following code review:
* add start and stop sync client proxy methods
* move ss proxy url the build settings
* made media provider load results discardable
* added publishers for the roomSummaryProvider's total number of rooms and state

* Fix when sender details are shown
* Disable sync v2, causes duplicates in the timeline (as expected)
* Move ClientProxy media loading off the main queue and into a detached task
* Another attempt at moving image loading off the main queue
* Moved home screen diffing and latest room fetching to the background
* Prevent the timeline composer from becoming the first responder when not needed

* Bump to a newer version of the RustSDK

* Fixes vector-im/element-x-ios/issues/107 - New home screen design
* Implement thumbnail loading instead of full image avatars.
* Revert "Disable sync v2, causes duplicates in the timeline (as expected)"
* Add support for local echoes, dispatching detached tasks to a concurrenc GCD queue
* Move the session verification banner to a List Section to avoid UI glitches
* Optimise room mapping after sliding sync updates and thumbnail fetching
* Replace home screen List with a LazyVStack in an attempt to fix performance. Moved move summary provider room updating to a background thread

* Fixes vector-im/element-x-ios/issues/177 - New Bubbles Design
* Define in group state for timeline items
* Add replies into the bubble
* Add timeline width environment value
* Add `RoundedCorner` shape with specific corners rounding
* Add in group state for previews
* Implement bubble grouping logic
* Timeline avatar layout changes
* Fix placeholder avatars for dark mode
* New bubbles design
* Update mock timeline items
* Update timeline separator design
* Update room screen reference screenshots
* Add changelog
* Formatting fixes
* Add some space before single or beginning outgoing items

* Redesign the message composer

* Handle the msgtype enum.

* Update room name label line limit and incoming bubble background. Disabled syncv2, ss withCommonExtensions and session verification controller checking

* Increase default back pagination limit.
* Stop parsing links and tidy up composer button.
* Also fix the frame of an image whilst loading.
* Bump SDK package version.

* Remove app states about settings
* Add strings
* Use colors on placeholder avatars
* Tiny changes for placeholder avatars
* Update settings screen design
* Provide a user display name from the mock client
* Settings screen presentation logic
* Add changelog
* Update reference screenshots

Co-authored-by: Doug <douglase@element.io>
Co-authored-by: ismailgulek <ismailgulek@users.noreply.github.com>
Co-authored-by: ismailgulek <ismailg@matrix.org>
This commit is contained in:
Stefan Ceriu
2022-09-21 11:21:58 +03:00
committed by GitHub
parent a88491be1a
commit 5ebe923991
124 changed files with 2502 additions and 1838 deletions
@@ -22,10 +22,8 @@ class SessionVerificationUITests: XCTestCase {
let app = Application.launch()
app.goToScreenWithIdentifier(.sessionVerification)
XCTAssert(app.navigationBars[ElementL10n.verificationVerifyDevice].exists)
XCTAssert(app.buttons["startButton"].exists)
XCTAssert(app.buttons["dismissButton"].exists)
XCTAssert(app.buttons["closeButton"].exists)
XCTAssert(app.staticTexts["titleLabel"].exists)
app.assertScreenshot(.sessionVerification)
@@ -33,72 +31,63 @@ class SessionVerificationUITests: XCTestCase {
app.buttons["startButton"].tap()
XCTAssert(app.activityIndicators["requestingVerificationProgressView"].exists)
XCTAssert(app.buttons["cancelButton"].exists)
XCTAssert(app.buttons["challengeAcceptButton"].waitForExistence(timeout: 5.0))
XCTAssert(app.buttons["challengeDeclineButton"].waitForExistence(timeout: 5.0))
XCTAssert(app.buttons["cancelButton"].waitForExistence(timeout: 5.0))
app.buttons["challengeAcceptButton"].tap()
XCTAssert(app.activityIndicators["acceptingChallengeProgressView"].exists)
XCTAssert(app.buttons["cancelButton"].exists)
XCTAssert(app.images["sessionVerificationSucceededIcon"].waitForExistence(timeout: 5.0))
XCTAssert(app.buttons["dismissButton"].exists)
app.buttons["dismissButton"].tap()
XCTAssert(app.buttons["finishButton"].exists)
XCTAssert(app.buttons["closeButton"].exists)
app.buttons["closeButton"].tap()
}
func testChallengeDoesNotMatch() {
let app = Application.launch()
app.goToScreenWithIdentifier(.sessionVerification)
XCTAssert(app.navigationBars[ElementL10n.verificationVerifyDevice].exists)
XCTAssert(app.buttons["startButton"].exists)
XCTAssert(app.buttons["dismissButton"].exists)
XCTAssert(app.buttons["closeButton"].exists)
XCTAssert(app.staticTexts["titleLabel"].exists)
app.buttons["startButton"].tap()
XCTAssert(app.activityIndicators["requestingVerificationProgressView"].exists)
XCTAssert(app.buttons["cancelButton"].exists)
XCTAssert(app.buttons["challengeAcceptButton"].waitForExistence(timeout: 5.0))
XCTAssert(app.buttons["challengeDeclineButton"].waitForExistence(timeout: 5.0))
XCTAssert(app.buttons["cancelButton"].waitForExistence(timeout: 5.0))
app.buttons["challengeDeclineButton"].tap()
XCTAssert(app.images["sessionVerificationFailedIcon"].exists)
XCTAssert(app.buttons["restartButton"].exists)
XCTAssert(app.buttons["dismissButton"].exists)
app.buttons["dismissButton"].tap()
XCTAssert(app.buttons["closeButton"].exists)
app.buttons["closeButton"].tap()
}
func testSessionVerificationCancelation() {
let app = Application.launch()
app.goToScreenWithIdentifier(.sessionVerification)
XCTAssert(app.navigationBars[ElementL10n.verificationVerifyDevice].exists)
XCTAssert(app.buttons["startButton"].exists)
XCTAssert(app.buttons["dismissButton"].exists)
XCTAssert(app.buttons["closeButton"].exists)
XCTAssert(app.staticTexts["titleLabel"].exists)
app.buttons["startButton"].tap()
XCTAssert(app.activityIndicators["requestingVerificationProgressView"].waitForExistence(timeout: 1))
XCTAssert(app.buttons["cancelButton"].exists)
app.buttons["cancelButton"].tap()
app.buttons["closeButton"].tap()
XCTAssert(app.images["sessionVerificationFailedIcon"].waitForExistence(timeout: 1))
XCTAssert(app.buttons["restartButton"].exists)
XCTAssert(app.buttons["dismissButton"].exists)
app.buttons["dismissButton"].tap()
XCTAssert(app.buttons["closeButton"].exists)
app.buttons["closeButton"].tap()
}
}
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:65411f747c74e10f406884245395873861aa62723f9e80887444003bf0687b76
size 106569
oid sha256:ab72bd1f5eeba3e7310148e088d47e8166c2aec1940914befe01d953c17aa230
size 179710
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:649263627fab93c7935261e22ae6f2d186eac98e198856938a4299920e622db2
size 106725
oid sha256:95e40aea82cf2dc6fc7a6da2c46328288b62e4677ef5fcc78ad602e9368e953d
size 180213
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:223ec364fe7ac2c034467b4fbf576ed2bdfe28bd498879f56975758da7d653fa
size 96373
oid sha256:29ac322852f64822340fafe556dec80c2d6e1a2785e7ac0a45d55632a63b8fd2
size 91786
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a15c6fd4900684cbd027efb4524e199fb8e83f884728d5e0f85298737cd47bac
size 91151
oid sha256:391c1ab2b0acfb78643925683ea83e0e5bec14b8c6ca37a937371bf44e85145e
size 104279
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ac66380757fb5492b031005df9cc61ab81e1eff082fdc95d5349e77e81fa5fd0
size 135105
oid sha256:797dc8ca92fe40120ddb66f3368fa7cf9f1ed2af4e2a6ce21f0f598a04b96f67
size 275383
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8e578a0c50e39ee37348da998a2cf20c985dafd36fe83b28fab08f28fb65e15c
size 135170
oid sha256:10e8dd701fee045c5a8a65f49f88c0000ab5d2087162cd81cd8ea17b2e67dc39
size 276199
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bfe3ac39aa9ba811c71f7c560754a9f73271fffc1ffe09e3ec15438a2e75bd00
size 124558
oid sha256:4023584a45db5ac9dd3b46dee7a744c3de9459185373842349704c1af9129b6d
size 115260
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:42844501aeb4bf2c3532ef588f1d7ce9895ebbe9f190ea47917e7cba3246dd23
size 111782
oid sha256:715457882656559dca2ec8305bc1745fcf3a555a4e856f1f4567d2fc306e1bd3
size 135210
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5ef80dc65e958a3c883d720563afe4264c88f718483cb9ea65898b160e90585c
size 106134
oid sha256:f6ff042bf5131386b978e5445794726ebd39f64233a0dd13b177fa360b90573d
size 179281
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2b480be07ff7d03638a85397445baf1dfdb8fbb8036d4cee68800bd60de1be8f
size 106287
oid sha256:332006c46bd36c85aa5447657e182484e566b1a86ea723e5054243c6d3a17a76
size 179777
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:72c7dd8e7c84c4d2ed2468a8b3b2a75166e86e420ea11999dfb92e65f17b742b
size 88654
oid sha256:d4694112e7b0edcccac8d82041490e0e720a8c284a887a9862f999d2e41125f5
size 85500
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fa65b3d416530492f6f5b427edce94d8cc3c7fca415b8919f92f8b19a5fb0021
size 87559
oid sha256:cc305f05d923778155d785b595f7a9a776e690652e84f7288559826cef18e849
size 104989
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3dc8c1d9f96740dd0589a816973a742653baa447b5a0ca37a3b63cb4ae6b8c72
size 134309
oid sha256:1a09f2deb866181b689891a37ac64d9b4e4c033956688149a85f637a73cc58f2
size 274466
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6dbdeb72f968f2cb31ae1b9e200dc5ffd0153dda4a2bd63120b9b00de1eb3602
size 134370
oid sha256:e3720cf84874e05deafdeab9abd8c707bd5afde6911e630df3475093a41540df
size 275253
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:91056e0613160fc0089bf2d34e485c25b2a579b06b741ef1b7d56a85c6df08b3
size 111426
oid sha256:8411ada29a2799c18ab4870561defd28069ed64c08fd2d58f1b607b8e54532b1
size 106254
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9aca831b2e11d2649792c0404cd5411a5f346cd6ebeba98a6899a4be1c1a1a47
size 106872
oid sha256:41ba1c0a3b7ae66f166daa9b3009056a2bdc43de115dd4469b543d29554606f0
size 134952
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ffc574282697847ee0fea857387979cbf5b5555b15ef4de9a2d842da3a4aaf5c
size 106337
oid sha256:e32c0e11d7a862b0c6822aae6c37a353a70b773351c00bf26d2cac54d43e346f
size 179464
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:214757cc447a5505480489b7bd3306621a59850012eae5d7061e68623a0e3641
size 106490
oid sha256:e356c25fce49d9f0ce4777f977587aa2c5767f1efa17a7db7053fa0b965bb2dc
size 179956
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dd4504a73c07f016a58885be6421d6e44b54c24dda61182874eef5fa3b072ecf
size 93546
oid sha256:eaf1e474481bb1cf922028d01dc4a6908ebf108725f27986dd68705f2e944763
size 90584
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:176b470ba2e65515fadf4bc3a6c41258fa0503d5e9b6beeb972c64f2fa2599df
size 91099
oid sha256:2060c8d80d4934790fb2cd1f24a5efe37d0e17d1ea35776517db4ef987e93691
size 105403
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fbd03af660d10c41794bf2a9f541a4c799cc302a1279802a9eadfa6947f8bfdd
size 134604
oid sha256:857e89d001c41d8b715fbf6c2530f27bdeebe4fd5e73ff951758e91d05a9cbdf
size 274849
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:79112f8b685c1e8f6a32a324b3e1e354d352d359316e41fc8eeb4f58eb082fec
size 134669
oid sha256:8dff5bdc24963c9f64039176bcc17a98d2db9902e36c78144b1235de534cf764
size 275646
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ebd7dfa3bace1fe7c80b5c258a6a32135158f151ee7cbf455b23082c6e4604fe
size 118603
oid sha256:46dfaec839bfeecbdfaec5d99370beb320cc54c4053b48b1c54b2b08ab2fe225
size 112952
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:793711e3e040940e9d778760352f3e11df9b123539f95ab3b09dcfeff8098133
size 112048
oid sha256:1e2679e5d9d7f780e1561d15ee0cc94f4c551cfa9556c6d474c65f4789dda915
size 136740