524 Commits

Author SHA1 Message Date
Doug
2399088084
Bump SDK version and fix breaking changes. (#610) 2023-02-22 14:31:17 +00:00
Doug
872c911cb5
Use files instead of UDP for signalling. (#585) 2023-02-15 14:02:50 +00:00
Doug
4d87701ae9
Automatic discovery of the sliding sync proxy. (#535)
* Automatic discovery of the sliding sync proxy.

* Handle homeserver detection from a MXID.

* Update sliding sync info link, SDK and bump patch.

Add a migration on the new version. The change in restoration token format requires the user to sign in again, but this will fail with the existing device ID.
2023-02-08 19:07:02 +00:00
Element CI
027de707fa Prepare next release 2023-02-03 08:35:05 -08:00
Element CI
3015896d46 Prepare next release 2023-02-03 06:21:42 -08:00
Stefan Ceriu
183cc88114
Load member profiles through the timeline (#522) 2023-02-03 10:12:36 +00:00
Doug
f6629e0d6e
Hardcode the sliding sync proxy. (#502)
* Add support for migrating between versions.
* Rename InfoPlistReader property.
* Bump SDK version.
2023-01-31 17:48:24 +00:00
Doug
4f8cc08989
Handle API changes from Rust. (#506)
There are some bad assumptions about profile changes in here.

* Remove assumption FIXME's

Profile changes that come from other members will be state event of None.

* Bump SDK version.
2023-01-31 13:28:28 +00:00
Element CI
d44ce9f44c Prepare next release 2023-01-26 07:52:56 -08:00
Doug
3a74f13097
Add support for aliases to RoomProxy and bump the SDK. (#486) 2023-01-24 17:01:00 +00:00
Element CI
e6d0cbec50 Prepare next release 2023-01-20 07:27:02 -08:00
Stefan Ceriu
ae8009d040
Various performance tweaks (#474)
* Store and reuse room list placeholder avatars and last messages

* Cache and reuse HomeScreenRooms

* Reduce RoomSummaryProvider diff collection time

* Promote more logs to info

* Slighty tweak RustTracing to make it easier to configure

* Move TimelineProvider and RoomTimelineController item processing to background queues

* Prevent the timeline from stopping an ogoing decelerating scroll when starting backpaginating
2023-01-20 14:40:23 +00:00
Stefan Ceriu
8f3f83167b
Timeline item sender profiles (#463)
* Adopt timeline item sender profiles for displaying user avatars and display names
* Prevent images from automatically being evicted from the in-memory cache when entering background
* Get rid of all the `urlString: String`s and start using proper URLs
* Add back manual display name loading as the sender profiles aren't working properly yet
* Implement a sender profile.
* Bump the RustSDK to v1.0.32-alpha

Co-authored-by: Doug <douglase@element.io>
2023-01-18 14:29:44 +00:00
Doug
f7ddaacb64
Break out DesignKit into its own sub-package (#459)
We'll be using https://github.com/vector-im/compound-ios eventually so this tidies up the Xcode project dependencies in the mean time.
2023-01-17 12:26:07 +00:00
Element CI
ab4c5a6267 Prepare next release 2023-01-13 07:59:38 -08:00
Stefan Ceriu
83e6ba8f6b
Various sliding sync tweaks (#446)
* Refactor SS configuration and add (unfinished) support for adding views dynamically.

* Implement pop and clear support on the room summary provider

* Register views against sliding sync

* Read invalidated vislbeRoomsSummaryProvider from the allRoomSummaryProvider

* Switch SS window range setting from the ScrollViewAdapter to a publisher debounce

* Tweak allRoomsView addition: switch from listening the visibleRoomsView's state to when it publishes the first diff update

* Cleanup client delegate and sliding sync observers and lifecycle

* Bump the RustSDK to 1.0.30-alpha

* Reuse startSync within restartSync
2023-01-13 17:09:37 +02:00
Stefan Ceriu
d70a240869 New timeline items (#424)
* Cleanup session verification state machine configuration

* Add support for new timeline items: loading indicators, stickers and invalid/unsupported events

* Add sticker accessibility label, fix session verification ones

* Add support for the new TimelineStart timeline item and new pagination API. Remove identifiers from individual timeline items and only set them in the TimelineTableViewController

* Add changelog
2023-01-10 13:41:07 +02:00
Element CI
5c92e0b2fe Prepare next release 2023-01-04 12:09:31 -08:00
Element CI
6df6417cfb Prepare next release 2023-01-04 10:49:00 -08:00
Stefan Ceriu
c661b24f08 Bump the RustSDK to v1.0.27-alpha 2023-01-04 20:39:24 +02:00
Stefan Ceriu
ed0ebc0f8f Bump the RustSDK to v1.0.26-alpha 2023-01-04 11:40:18 +02:00
Element CI
9ca7f4cb4d Prepare next release 2022-12-22 04:09:06 -08:00
Stefan Ceriu
ac77743c7a
Add retry decryption encrypted timeline item debug menu option (#384)
* Fixed a couple of warnings (+2 squashed commits)
Squashed commits:
[21fbc3b0] Add changelog
[abb092c6] Add retry decryption encrypted timeline item debug menu option

* Cleanup room list state computations

* Bump the RustSDK to v1.0.25-alpha

* Fix brew CI errors: remove imagemagick and brew lock file entirely

* Fix release script version bumping

* Bump ruby dependencies
2022-12-22 13:59:38 +02:00
Stefan Ceriu
131197b7d7
Add timeline day separators and read markers (#383)
* Add timeline day separators and read markers
2022-12-21 15:35:45 +02:00
Doug
4b29318147
Use matrix-rust-sdk for local development. (#377)
The SDK will be setup as a Swift package when using the Swift xtask so this is a much easier way to do local dev (for anyone who doesn't want to use #362).
2022-12-19 11:28:56 +00:00
Element CI
787175fb0a Prepare next release 2022-12-16 14:45:47 +02:00
Stefan Ceriu
ab10278ff5
New SlidingSync flow (#373)
* Switch back to using slidingSync rooms for timeline listeners

* Expose 2 types of slidingSync views from the clientProxy and combine their results for the roomList

* Fix breaking api changes

* Remove sender mxids from the room list (until rust provides resolved display names)

* Bump RustSDK to v1.0.22-alpha

* Rename originServerTs to timestamp throughout

* Simplified sliding sync view list merging

* Rollback some SS changes as things still don't work properly

* Revert "Switch back to using slidingSync rooms for timeline listeners"

This reverts commit 1d6a6c09d8ddf386edefbe0ac6beaf52cc333fba.
2022-12-16 14:05:08 +02:00
Doug
b97e6f7a98
Fix keychain access on macOS. (#354) 2022-12-06 17:39:15 +00:00
Stefan Ceriu
7d8e94d3a7
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
e763c514c7 Bump the RustSDK to v0.0.8-demo 2022-11-24 10:35:53 +02:00
ismailgulek
d389ce7ad7
Notifications (#275) 2022-11-21 19:37:13 +03:00
ismailgulek
287fa4cad5
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
9f12b34a98
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
37cfb8f50e 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
fabb0bc95f
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
09b2f939ab
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
ba4064cc2c
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
50ddecbe3a
Bump project to the latest RustSDK release version (#265) 2022-10-25 14:19:23 +03:00
Stefan Ceriu
80babf1cd8
Xcode Cloud Support (#234)
* Removed now unnecessary code from alpha builds
* Add nightly build configuration
* Update ruby dependencies
* Stop changing the app name for PRs and Nightly, the icon is sufficient
* Add ITSAppUsesNonExemptEncryption flag as per https://developer.apple.com/documentation/bundleresources/information_property_list/itsappusesnonexemptencryption and https://stackoverflow.com/questions/35841117/missing-compliance-status-in-testflight
* Updated app groups to reflect various environments: production, nightly and PR. Remove keychain access group as they should be inferred from the access groups
2022-10-24 16:00:17 +03:00
Doug
0e90bff34c
Switch to Xcode 14 and handle the UICollectionView-backed List. (#229)
* Fix Timeline on Xcode 14/iOS 16

Raise requirement to iOS 16+
Reduce pagination jumping.
Sonarcloud fixes.
Fix verification test.
Adopt if let optional { syntax.

* Remove unused ScrollViewReader

The ScrollViewReader didn't appear to change the behaviour.

* Fix warnings on Run Scripts.

Run script build phase 'SwiftLint' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase.
2022-10-17 09:56:17 +01:00
Johannes Marbach
b9001db272 Add back project config 🤦‍♂️ 2022-09-28 21:27:02 +03:00
Johannes Marbach
604c2a007e Remove markdown files and project config 2022-09-28 21:27:02 +03:00
Johannes Marbach
bf56062431 Include changelog.d and other common files in Xcode project
Fixes: #218
2022-09-28 21:27:02 +03:00
ismailgulek
29f61461aa
Update snapshotting library to 1.10.0 (#215) 2022-09-28 10:25:59 +03:00
Stefan Ceriu
cbb0ec5063
Introduced a UserSessionFlowCoordinator and split up the AppCoordinator state machine (#212) 2022-09-25 12:34:11 +03:00
Stefan Ceriu
5ebe923991
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
4c14b9c4f4 Revert project.yml 2022-09-14 13:18:04 +01:00
Doug
fb947f2dba #178: Add redaction menu (disabled). 2022-09-14 13:18:04 +01:00
Doug
2986f85bcb Revert "Add redaction menu (disabled)."
This reverts commit bd4a698f8bed37db8e65f63dba49ae9bdcb725c5.
2022-09-14 09:44:15 +01:00
Doug
bd4a698f8b Add redaction menu (disabled). 2022-09-14 09:40:00 +01:00