Commit Graph

44 Commits

Author SHA1 Message Date
Stefan Ceriu
82cd35b2d8 Set visible ranges on the home screen sliding sync view (#342)
* Set visible ranges on the home screen sliding sync view
* Prevent the visible items from being updated while in search mode
* Enable diffs on invalidations as they seem to fix duplicated events in the home screen room list
* Promoted some diffing logs to info from verbose
2022-11-25 17:50:43 +02:00
Stefan Ceriu
e10235a8bc Crash fixes (#337)
* Add diffing logs and be more aggresive about unexpected states
* Move diff collection on a serial queue
* Handle now optional `addTimelineListener` result
* Treat RoomSummaryProvider invalidations separately
* Bump RustSDK to v0.0.9-demo
2022-11-24 15:32:23 +02:00
Stefan Ceriu
ad54b9e07b Bump the RustSDK to v0.0.8-demo 2022-11-24 10:35:53 +02:00
Stefan Ceriu
8d2e30c0b6 SwiftUI NavigationController and UserNotificationControllers (#309)
* Fixes #286 - Adopted the new SwiftUI NavigationStack based NavigationController throughout the application
* Fixes #315 - Implemented new user notification components on top of SwiftUI and the new navigation flows
* Add home screen fade animation between skeletons and real rooms
* Bump the danger-swift version used on the CI and swiftlint with it
* Renamed Splash to Onboarding, Empty to Splash
2022-11-16 13:37:34 +00:00
ismailgulek
84794164da File messages on timeline (#311)
* Create media player screen

* Introduce `FileCache` to cache message attachments

* Add file loading functionality into the media provider

* Process tap action on timeline items

* Pass item taps to view model

* Navigate to media player on view model callback

* Commit project file

* Add changelog

* Add file messages into the timeline

* Create file preview screen

* Display files in the preview screen

* Commit project file

* Update Rust SDK to 1.0.19-alpha

* Add changelog

* Bump the RustSDK to `v1.0.20-alpha`

* Configure audio session on video playback

Co-authored-by: Stefan Ceriu <stefanc@matrix.org>
2022-11-16 11:34:37 +00:00
ismailgulek
34a5b53038 Video messages on timeline (#304)
* Create timeline item and view for video

* Create video timeline items in factory, do not bubble them

* Add changelog

* Update packages

* Revert DTCoreText update
2022-11-10 13:45:35 +03:00
Stefan Ceriu
6ba4c09819 Fixes #239 - Use new restoration token format, pass stored homeserver url to the client builder when restoring, dropping the need for a network request
- bumped the rust sdk to v1.0.17-alpha
- move all UserSession related files to Services/UserSession
2022-11-04 15:44:18 +02:00
Stefan Ceriu
4def45a57b New timeline (#276) (#280)
* Fixes #276 - Rebuilt room timeline:
    - Removed the need for the ListCollectionViewAdapter
    - Rewrote the TimelineItemList without using introspection
    - Added ReversedScrollView for laying out items at the bottom/trailing
    - Rewrote TimelineProvider diffing through CollectionDifference (similar to the RoomSummaryProvider)
    - Added back `scrollDismissesKeyboard`  behavior
    - Various other tweaks and fixes
- Fixed various warnings:
    - removed async AttributedStringBuilder as AttributedString is non-sendable, made the RoomTimelineItemFactory synchronous
    - removed unused virtual timeline items
    - removed unused isOutgoing property from the FormattedBodyText
* Make TimelineItemContextMenuActions indentifiable and specify contextMenu identifiers
* Bump the matrix-rust-components-swift to v1.0.16-alpha
* Add changes file and changelog contribution guide
* Fix attributed string builder unit tests
2022-11-02 13:03:34 +02:00
Johannes Marbach
d9c96cf585 Fixes #225 - Use a properly defined user agent
* Set a proper user agent
* Add fallback when UA comes out nil
* Remove unused Bundle extension
* Return nil when asciification fails
* Add whitespace handling and further emoji test case
* Explicitly check if string is already in ASCII
* Rename factory to builder
* Use allSatisfy instead of reduce
* Use key path syntax
2022-10-28 17:11:10 +03:00
Stefan Ceriu
7146818fc1 Enable e2ee support (#274)
* Enable sliding sync common extensions and session verification banner display; fix user session flow coordinator state machine
* Fixed a couple of deprecation warnings
* Add missing `m.room.encryption` required state
* Switch to rust-sdk v1.0.15-alpha and add changelog
2022-10-28 17:08:51 +03:00
Stefan Ceriu
8491823f3b Bump project to the latest RustSDK release version (#265) 2022-10-25 14:19:23 +03:00
ismailgulek
d6148b1a44 Update snapshotting library to 1.10.0 (#215) 2022-09-28 10:25:59 +03:00
Stefan Ceriu
2623b14dce 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>
2022-09-21 09:21:58 +01:00
Doug
38def9385f DesignKit: Update design tokens and create ElementColors locally. (#186)
* Use latest design tokens and create Element colors
* Keep the old colours and add system… ones.
2022-09-14 19:16:50 +01:00
Doug
eb21f72b22 #106: Begin adding the Analytics class from EI.
No UI or SDK support to enable/disable yet and no tracking is implemented.
2022-09-02 10:09:02 +01:00
Stefan Ceriu
09daf52750 #49, #123 - Setup UI integration and performance testing (#148) 2022-08-18 16:32:29 +03:00
ismailgulek
fdbaa16c38 Screenshot tests (#130)
* #9 Add snapshot testing library

* #9 Create script to boot test simulators

* #9 Create the UI test plan

* #9 Create shared schemes for test targets

* #9 Disable split view for UI tests

* #9 Fix fastlane dependencies

* #9 Add snapshot testing to the application

* #9 assert screenshots

* #9 fix swipe gestures on iPad

* #9 Fix accessing items in session verification screen

* #9 Workaround for flaky unit test

* #9 Specify scheme for alpha build

* #9 Add reference screenshots

* Update python script path and check assets for png check

* Update script path

* Use static timezone for simulator time

* Fix build after SwiftFormat

* Add changelog

* Upload failed screenshots artifact

* Always upload artifacts

* Update boot simulator script

* Update simulator overridden time

* Install pytz before tests

* Get time from Ruby script

* Disable SwiftUI animation when running UI tests

* Update screenshots after animation setting

* Include reference images in the artifact

* Update matching precision

* Update image matching precision & revert artifact content

* Include Xcode result in the artifact

* Update test output directory

* Disable gradient on splash screen for tests

* Tap next button explicitly

* Wait a bit before checking alert

* Wait 1 second

* Run SwiftFormat on project

* Ignore temporary screenshots

* Fix most of the PR remarks

* Fix conflicts

* Bump Python version to 3

* Update reference screenshots for authentication screens

* Update SwiftFormat

* Fix flakey session verification test.

* Update scheme.

Co-authored-by: Doug <douglase@element.io>
2022-08-11 15:02:47 +03:00
Doug
19d92b452e #93: Add a sync limit of 20 and prefill rooms when loading the last message.
Update the SDK to 1.0.13-alpha.
2022-07-28 12:46:48 +01:00
Doug
653dc30b4a #42: Proof of concept login via OIDC.
Uses AppAuth library in the app, ignoring token refresh
2022-07-28 09:28:42 +01:00
Doug
5a1b9463bc #40: Use the Rust AuthenticationService.
* Update SDK package to 1.0.12-alpha.
* Use an app group for storage and stop stripping the http from the homeserver when configuring the service.
* Rename access token to restore token.
* Remove matrix.org server description inline with latest FTUE changes.
2022-07-27 10:57:16 +01:00
Doug
e27f37c69f Add Screen suffix to all screens. (#125) 2022-06-30 16:48:46 +01:00
Anderas
b1e9249328 Implement new ClientBuilder pattern for login (#120)
* Implement new ClientBuilder pattern for login

* Add changelog
2022-06-30 08:10:59 +01:00
Doug
0e4c80450d Update DesignTokens to 0.0.2 2022-06-22 14:13:54 +01:00
Doug
9dc48e31be Use v0.0.1 of the DesignTokens package. (#78) 2022-06-10 12:09:10 +01:00
Doug
f3dca240a1 #43: Add the DesignKit package to the project.
* Add ElementTextFieldStyle and static style properties.
* Rename button styles, support sizes and simplify colour.
2022-06-09 14:44:46 +01:00
ismailgulek
cecf9f9cf5 Rageshake Service (#70) 2022-06-06 12:38:07 +03:00
Stefan Ceriu
a049923f21 #66 - Rebuild the AppCoordinator on top of a SwiftState FSM 2022-06-02 13:23:35 +03:00
Stefan Ceriu
3c03d79403 Bump the Rust SDK package to the latest underlying version (0.5.0) 2022-05-13 17:28:19 +03:00
Stefan Ceriu
adcd1febd4 Implement message sending. Refactor the timeline. Fix various UI/UX issues and add scroll to bottom timeline button. 2022-04-18 10:54:48 +03:00
Stefan Ceriu
33a9174dbe Treat warnings as errors. 2022-04-14 16:33:54 +03:00
Stefan Ceriu
d4f4f30f4e Add the project.yml file to the generated project, switch all dependencies to update up to the next major version 2022-04-13 15:38:56 +03:00
Gil Eluard
b361c79ad2 Fix build issues for xcode 13.3 2022-04-13 13:54:01 +03:00
Stefan Ceriu
6e4b5e25c8 Enable encryption and add support for loading encrypted images. 2022-04-07 17:07:42 +03:00
Stefan Ceriu
dbd6552f4f Bumped the rust components to v1.0.7-alpha. 2022-03-29 18:14:33 +03:00
Stefan Ceriu
f8155317a7 Bumped the rust components to v1.0.6-alpha. 2022-03-25 10:49:21 +02:00
Stefan Ceriu
c3e8ce7e47 Initial timeline HTML support. 2022-03-24 14:47:55 +02:00
Stefan Ceriu
ffea71b05c Switched back to release version of the SDK. 2022-03-18 14:50:15 +02:00
Stefan Ceriu
36aa097bb1 Adopting different timeline item types exposed from rust. 2022-03-16 18:02:19 +02:00
Stefan Ceriu
c0de77f800 Switched to discrete timeline items that directly expose view builders. 2022-03-11 11:27:08 +02:00
Stefan Ceriu
9eec77e228 Added room timeline screen with live events listening and back pagination. Rearranged project files. 2022-03-08 14:24:33 +02:00
Stefan Ceriu
f1e367f382 Bumped matrix-rust-components-swift to v1.0.2-alpha. 2022-03-01 14:27:05 +02:00
Stefan Ceriu
bea929a2ae Fixed MatrixRustSDK swift package references. 2022-02-22 14:11:11 +02:00
Stefan Ceriu
c35438cbb8 Added room avatar caching and room list loading state. 2022-02-22 12:37:44 +02:00
Stefan Ceriu
a3fcc0f612 Initial project setup. 2022-02-14 18:05:21 +02:00