Commit Graph

78 Commits

Author SHA1 Message Date
Stefan Ceriu
c3b029f1a0 Add background app refresh support (#892)
* Add background app refresh support

* Cleanup: move methods around so delegates are implemented above privates and privates are ordered better

* Add discardableResult on the userSessionStore's refreshRestorationToken
2023-05-15 13:06:25 +03:00
Stefan Ceriu
75a48eda60 Fixes cache cleaning behavior after sdk change 2023-05-12 18:47:53 +03:00
Mauro
de4d065e60 Disable Local Push Notifications + Start Handling invite notifications (#882)
* disabled local pushes and fixed the issue with the image rendering

* disabled local notifications for now and started implementing invite notificatons

* disabled local notifications for now and started implementing invite notificatons

* removed code that should not have changed

* removed useless comment

* refactored name for category

* fixed a test

* fix

* fix for missing try await

* pr comments
2023-05-12 10:45:59 +00:00
Doug
133fccc812 Remove AppAuth and prepare for Rust OIDC. (#870) 2023-05-11 16:46:36 +01:00
Stefan Ceriu
ff4f5648c3 Add initial sync loading toast indicator 2023-05-11 17:31:44 +03:00
Stefan Ceriu
5620e32f8e Various test fixes (#873)
* Switch back to macos-12 and see if the tests work

* Fix unit tests, add default invited, joined and active member counts to the mock room proxy

* Try running UI tests on 14.3 but on an existing iPad simulator

* Revert "Try running UI tests on 14.3 but on an existing iPad simulator"

This reverts commit b075e7fa384330a9070dc35ed4dded57e0af26e1.
2023-05-11 16:28:35 +03:00
Stefan Ceriu
54c812c140 Add developer option for clearing the application cache (#852)
* Add developer option for clearing the application cache

* Tweaks following code review
2023-05-05 19:41:21 +03:00
Stefan Ceriu
9c651ae6a3 Media uploading (#851)
* MediaUploadingPreprocessor - Prevent images without any GPS metadata from being changed

* Add support for sending images

* Add support for sending video, audio and file attachments

* Rename MediaPickerPreview to MediaUploadPreview

* Move media uploading to the MediaUploadPreviewScreen, add waiting indicators and error handling

* Add support for pasting and drag&dropping in media for upload

* Adopt new media picker source UI, remove developer flag

* Set minimum heights for timeline loadable images

* Fix invalid camera picker file names

* Fix flakey MediaUploadingPreprocessor image tests, improve gps metadata stripping

* UITests: Update existing screenshots and add new step for the room attachment picker

* Switch all github action runners to macos-13

* Cleanup enter key and paste message composer handlers
2023-05-04 16:09:29 +03:00
Mauro
168649030b Avoid race and duplication conditions between local and remote notifications (#848)
* added timestamp control of the local notification

* improved the code, and implemented the solution, just needs some testing

* sdk bump

* UserPreference init with initialValue instead of defaultValue

* pr suggestions

* changelog

* notifications sliding sync view added
2023-05-03 14:28:07 +00:00
Mauro
66491caa6b Notification Handler to handle notifications in foreground (#837)
* changed how the notifications are handled

* local notifications can be decrypted and shown!

* Improved the handling for the mock and for the normal messages

* Avatar images are also displayed

* pr ready, commented some code that is not supposed to be releaaed yet, adjusted some tests and added some source code in the targets

* fixing some swiftlint complaints and removed an unused function

* better swiftlint disable

* addressing PR comments
2023-04-28 12:36:16 +00:00
Doug
3eae3b8f86 Add UnitTestsAppCoordinator. 2023-04-25 21:17:03 +03:00
Stefan Ceriu
94cfaeeaa0 Structured logging (#831)
* Structured logging support

* Bump the SDK, fix breaking changes

* Enabled more logging of timeline diffs

* Keep only source file last path components in logs

* Bump the SDK, tweaks following code review
2023-04-25 14:48:20 +03:00
Stefan Ceriu
10ab981335 Renaming screens returns (#829)
* Rename: StartChat -> StartChatScreen

* Rename: Login -> LoginScreen

* Rename: ServerSelection -> ServerSelectionScreen

* Rename: SoftLogout -> SoftLogoutScreen
2023-04-25 12:13:03 +03:00
Nicolas Mauri
eff8e9ee81 Fix: forget the user’s consents for analytics on logout (#816)
* Fix: forget the user’s consents for analytics on logout

* Fix: change how analytics consent state is stored

* Fix: renaming of AnalyticsConsentState entries
2023-04-21 15:05:39 +00:00
Alfonso Grillo
5a300d3886 Add invites badges (#819) 2023-04-21 11:14:27 +00:00
Alfonso Grillo
139f7b2028 Refactor UserSetting property wrapper to support Codable (#814)
* Add UserPreference property wrapper

* Delete UserSetting property wrapper

* Add PlistRepresentable support

* Add more convenience inits

* Add documentation

* Add UTs

* Fix flaky tests

* Fix more flaky tests

* Fix double optional problem in UserPreference

* Refine UTs

* Delete cache in UserPreference

* Conform Date to PlistRepresentable
2023-04-21 10:46:04 +00:00
Stefan Ceriu
b391d7f698 #748 - Implement methods for processing various media types and prepa… (#772)
* #748 - Implement methods for processing various media types and preparing them for upload

* Various tweaks following code review:
- added blurhash generation
- changed thumbnails to jpeg
- throwing if file size cannot be retrieved
- move MediaProvider files to separate folder so they can cleanly be imported in the NSE
- added audio file processing
- switched all image resizing methods to ImageIO
- various renames

* Fix blurhash formatting issues, `swift-format-ignore-file` doesn't work

* Processing all media within unique folders to avoid conflicts

* Fix various warnings

* Rename `sizeForItemAt(_ url: URL)` to `sizeForItem(at url: URL)`

* Remove unnecessary resizeImage(UIImage) method, start by copying not moving the file to the unique location

* Add back warning for roomDetails.avatarURL
2023-04-21 12:13:36 +03:00
Mauro
868213997c Disable animations when tapping on a notifications while the app is backgrounded (#808)
* tapping on notifications will display the animation only if the app is active and foregrounded

* changelog
2023-04-18 13:08:39 +00:00
Mauro
1cd8650dd9 Navigations can now have their animations controlled with a parameter (#805)
* we disabled animations everywhere

* fixed a possible reference cycle

* pr suggestions
2023-04-18 10:26:57 +00:00
Nicolas Mauri
1bc05a2ffe Set up Analytics to track data per session (#780) 2023-04-18 07:33:32 +00:00
Doug
e333eff731 Use iOS localization handling for strings. (#803) 2023-04-17 14:58:39 +00:00
Mauro
9453a7074d Notifications are now handled when the app is in a killed state (#801)
* WIP, added support for receiver id and managed a way to store the app router state

* WIP, added support for receiver id and managed a way to store the app router state

* Notification Manager is now becoming the UNUserNotificationDelegate ASAP

* code improvements + changelog

* fixed Unit Tests

* pr suggestions
2023-04-14 14:24:48 +02:00
Alfonso Grillo
815da82c13 Invites list (#787)
* Setup invites SS window

* Add invites label in the home screen

* Add empty invtes list

* Setup navigation to invites list

* Inject invitesSummaryProvider

* Show invites

* Add InviteCell

* Refine InviteCell UI

* Push invites

* Amend SS configuration

* Add inviter in RoomProxyProtocol

* Add Invite model type

* Improve InviteCell

* Fix media provider injection

* Refine InviteCell

* Refine invite cell

* Add invites feature flag

* Try different SS config for invites

* Regiester invites view in configureViewsPostInitialSync

* Cleanup

* Start tests

* Cleanup code

* Add changelog.d file

* Add tests

* Handle canonical alias

* Add InvitesListScreen previews

* Add localisations and improve UI tests

* Add reference screenshots

* Cleanup code

* Fix UT build errors

* Refactor InvitesList -> Invites

* Apply pr comments

* Remove reduntant @MainActor

* Naming cleanup

* Fix InvitesScreenCell.title

* Add accept/decline InvitesViewAction

* Revert Package.resolved

* Add warning in InvitesScreenCell

* Improve PlaceholderAvatarImage

* Record snapshots again

* Refactor Invite -> InvitesRoomDeatils

* Rename identifier in PlaceholderAvatarImage
2023-04-14 10:49:57 +00:00
Mauro
2d8c0b9e21 Removing the about section title + Fix notification tap crash (#778)
* Removing the about section title

updated tests

* fixed a bug that made the app crash when tapping

a notification in an unhandled state

* missing screenshots
2023-04-06 16:40:27 +00:00
Johannes Marbach
e6faabb0e7 Guard user suggestions behind feature flag so that they don't impact releasability of other room creation features (#770) 2023-04-06 15:32:49 +02:00
Mauro
88a498e538 Notifications Enabled (#760)
* Notifications Enabled with default static text

notifications enabled with default static text

code improvement

added the share key

* added the changelog

* notification ID is added to the json only if it exists

* renamed Bundle.mainApp to app and updated the strings from localazy

* made a struct for the APNSPayload

* APNS Payload fix
2023-04-05 20:16:30 +02:00
Stefan Ceriu
569e4761d9 Various tweaks following code review 2023-03-31 17:00:36 +03:00
Stefan Ceriu
c27a56d231 Implements #745, #746, #747 - Initial media uploading flows
- room composer contextual menu for selecting source
- coordinator for presenting the different sources
- system picker handling and URL passback
- file preview after selection
- feature flag
2023-03-31 17:00:36 +03:00
Stefan Ceriu
43c558eec6 Bump the RustSDK, bump the app minor version and force user logout 2023-03-31 15:05:22 +03:00
Doug
63f429ea4c Use strings from Localazy (#718)
* Adopt strings from Localazy.

* Remove all old Android strings.

* Disable german snapshot tests for now.

* Rebase and add latest strings.
2023-03-27 17:18:59 +00:00
Mauro
15e38e00cc Leave Room (#699)
* created the row in the view and the alert, and added the new function to the RoomProxy

* fixed an issue with the alert function

* handling the navigation

* fixed a bug with the detail coordinators being dismissed incorrectly when inside a stack

* implementation completed

* replaced UI screenshots

* added a test for the fixed bug of the coordinators

* trying to increase the wait time for the expectation

* improved the test

* improved the buttons UI

* uploading artifacts for unit tests

* added result bundle true

* improved the tests

* added a new test

* pr suggestions

* updating mock

* PR suggestions

* improved tests

* fixed UI tests

* pr should be ready now

* removed testing code

* reduced complexity

* fixed test

* added a an assert to the new test case

* more tests and messages cases

* pr comments addressed

* completed
2023-03-17 13:57:08 +00:00
Mauro
ae800b0ed1 Updated setPusher function (#684)
* updated set_pusher function from the SDK

* this fixes a crash and allows for the navigation to work by using the threadIdentifier of the notification

* adding NCE target

* project setup completed with xcodegen

* no need for those ugly storyboards

* code improvement

* removing unused outlet

* mocks generated with the comment instead of the marker protocol

* updated stencil

* fixed unit tests

* updated swiftformat

* pr comments
2023-03-16 16:39:10 +01:00
Doug
9887219783 Use asset catalog for tint colour. Update Sentry. (#705)
Sentry had a bug where the colour was being ignored due to access of the main screen.
2023-03-16 13:32:14 +01:00
Doug
e48a13d3ef Fix accent colour not being applied to Alerts etc. (#701) 2023-03-14 13:38:36 +00:00
Flescio
6b153e9726 Epic: create and join rooms - Start Chat (#680)
* add start chat flow with UI

* add feature flag for start chat

* add changelog

* fix naming and tests

* fix empty display name in user cell

* Update ElementX/Sources/Application/AppSettings.swift

Co-authored-by: Alfonso Grillo <alfogrillo@element.io>

* add screenshots from UI test

* fix swiftFormat and add identifiers

* fix warnings

---------

Co-authored-by: Alfonso Grillo <alfogrillo@element.io>
2023-03-14 10:50:09 +01:00
Stefan Ceriu
6defc5782d Soft logout removal (#672)
* Remove isSoftLogout from everywhere except the client delegate
- bump the RustSDK to v1.0.43
- cleanup the app coordinator state machine and login/logout flows

* Merge `succeededSigningIn` and `succeededRestoringSession` into `createdUserSession` in order to simplify the logic
2023-03-06 14:58:50 +02:00
Stefan Ceriu
66ffba0ff7 Cleanup app coordinator loading indicators 2023-03-02 17:12:42 +02:00
Stefan Ceriu
73dcfe2f27 Prevent the dismissal callback from being called multiple times if changes happen on the navigation coordinators directly from it 2023-03-01 11:52:57 +02:00
Stefan Ceriu
cadae2170b Revert "Fix bug in which teardowns can be called multiple times on the same coordinator"
This reverts commit 4ae3b3b2dba033d560fe5321686635c96bd53f95.
2023-03-01 11:52:57 +02:00
Stefan Ceriu
4ade260277 Fix bug in which teardowns can be called multiple times on the same coordinator 2023-02-28 15:33:55 +02:00
Stefan Ceriu
0aca8c25c1 Fixes #614 - Add the user and device identifiers to rageshakes (#620)
* Fixes #614 - Add the user and device identifiers to rageshakes

* Add `base_bundle_identifier` to rageshakes
2023-02-24 14:51:36 +02:00
Stefan Ceriu
bf19e3e00b Made room state event collapsing configurable, expose it in the developer menu. Allow the UserSetting property wrappers to only store values in memory (+11 squashed commits)
Squashed commits:
[42e45fc] Even more tweaks following code review
[5dcd5be] Add swift-algoritms and switch bubbling detection to its `chunked` method
[4ac70ed] Move the groupBy implementation to Collection instead of Array
[6aeffc3] Tweaks following code review
[0ca5ac2] Bubbles working again, grouping computed closer to the UI level
[3a66030] Refactor how timeline items are built in the RoomTimelineController
[57d51e9] Remove grouping from timeline items
[8608950] Remove the RoomTimelineViewFactory, update the GroupRoomTimelineView
[9e52e61] Add array grouping extension, unit tests and switched the timeline controller to it
[7d213a1] First attempt
[90bb1d7] Remove now unused `RoomTimelineController` `updatedTimelineItem` calback
2023-02-24 07:34:07 +02:00
Stefan Ceriu
f608d28c0d Fix navigationStackCoordinator getting torn down when being reset on … (#613)
* Fix navigationStackCoordinator getting torn down when being reset on the navigationSplitCoordinator, added unit tests for it

* Guard against using the same coordinator more than once
2023-02-23 16:01:48 +02:00
Stefan Ceriu
e3b557cf0c Fixes #322 - Developer options menu (#581) 2023-02-15 11:07:06 +00:00
Mauro Romito
823a824b5b 547 refactored userNotification into userIndicator 2023-02-14 11:35:17 +01:00
Stefan Ceriu
359c314cb7 Fixes #367 - Refactor AppSettings usage patterns 2023-02-09 11:41:14 +02:00
Doug
becbcc84e1 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
Stefan Ceriu
6f48ce8869 Fix remaining retain cycles, allow coordinators to be weakly referenced and make sure the NavigationStackCoordinator cleans up after itself 2023-02-02 13:08:08 +02:00
Doug
af7005ce19 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
Stefan Ceriu
0ab4c04833 Memory management (#503)
* Correctly tear down the user session on signing out

* Fix session verification <-> user session retain cycle, visible range debouncer leak

* Manually clean up coordinators retained within SwiftUI's NavigationStacks

* Slightly refactor the timeline content menu builder and prevent it from retaining the view model. Cleanup now unnecessarily optional RoomScreenCoordinator instance vars

* Move coordinator dismissal logic to the navigation modules
2023-01-31 11:51:56 +02:00