Commit Graph

51 Commits

Author SHA1 Message Date
manuroe 3950cac085 Dual licensing: AGPL + Element Commercial (#3657)
* New LICENSE-COMMERCIAL file

* Apply dual licenses: AGPL + Element Commercial to file headers

* Update README with dual licensing
2025-01-06 11:27:37 +01:00
Stefan Ceriu 9697d59710 Fixes #1918 - Revert 1a12c729de521d2dcb664bed6b19a75ec139bede as #617 is no longer reproducible on iOS 18. 2024-11-15 17:37:50 +02:00
Stefan Ceriu b122b02bee Share extension (#3506)
* Setup simple share extension

* Switch the app url scheme to be the full bundle identifier

* Setup a share extension that show a SwiftUI view, uses rust tracing and redirects to the hosting aplication

* Move media as json through the custom scheme into the main app and deep link into the media upload preview screen

* Fix message forwarding and global search screen room summary provider filtering.

* Tweak the message forwarding and global search screen designs.

* Add a room selection screen to use after receiving a share request from the share extension

* Fix share extension entitlements

* Share the temporary directory between the main app and the extensions; rename the caches one.

* Remove the no longer needed notification avatar flipping fix.

* Extract the placeholder avatar image generator from the NSE

* Nest `AvatarSize` within the new `Avatars` enum

* Donate an `INSendMessageIntent` to the system every time we send a message so they appear as share suggestions

* Support suggestions in the share extension itself

* Improve sharing animations and fix presentation when room already on the stack

* Clear all routes when sharing without a preselected room.

* Fix broken unit tests

* Various initial tweaks following code review.

* Correctly clean up and dismiss the share extension for all paths.

* Move the share extension path to a constants enum

* Rename UserSessionFlowCoordinator specific share extension states and events

* Add UserSession and Room flow coordinator share route tests

* Tweak the share extension logic.
2024-11-13 14:02:47 +02:00
Doug 589df7d76e Use an https callback for OIDC once again. (#3461)
* Use the new WAS callback type and return back to the https callback for OIDC.

* Simplify OIDCAuthenticationPresenter now it doesn't need to handle universal links.

* Remove old unit tests.
2024-10-29 11:28:05 +00:00
Mauro 7d373c07a3 remove iOS 16 support (#3443)
* remove iOS 16 support

* remove iOS 16 support

* test updates

* added more delay

* revert

* adding waiting time on the CI
2024-10-24 17:21:28 +02:00
Stefan Ceriu 664e87fe87 Switch license to AGPL (#3237)
* Switch license file to AGPL

* Update file copyright headers

* Update the default project file header
2024-09-06 16:34:30 +03:00
Doug e0ba9925e7 Remove GenericCallLinkCoordinator, merging it into CallScreen. (#3181)
* Remove incorrect message send call and fix typo.

* Add overlay coordinator presentation to the NavigationRootCoordinator.

* Remove GenericCallLinkCoordinator, merging it into CallScreen.

This will allow for picture in picture on call links when available.
2024-08-19 17:21:25 +01:00
Doug ebf7c00eeb Navigation support for upcoming Element Call Picture in Picture mode. (#3174) 2024-08-16 11:25:36 +01:00
Stefan Ceriu 8bfd802793 Add support for showing the native OS incoming call screen when starting new Element Calls 2024-05-24 15:32:56 +03:00
Doug 1e0a6d76ae Make sure we pass the via parameters with all the routes.
Put the event ID first.

Fix tests.

Bump the SDK.
2024-05-13 15:37:57 +03:00
Doug f688d2eda4 Permalink Tweaks (#2768)
* Revert back to creating a new flow when re-selecting the same room.

Fix the composer bug by adding IDs to the all of the module AnyViews.

* Don't show the live timeline when starting with a focussed event.
2024-04-30 17:25:32 +01:00
Doug df6cf25524 Update the SDK and enable event permalinks. (#2748) 2024-04-26 09:59:01 +01:00
Doug 6661c16154 Add Event Routes to the flows (#2743) 2024-04-25 12:50:06 +01:00
Stefan Ceriu 69ffd3be46 Handle alias room permalinks 2024-04-23 08:01:30 +03:00
Stefan Ceriu c738d57af1 Setup animations for navigation root and split detail and sidebar module changes. 2024-04-22 10:17:13 +03:00
Doug e7af7fb59c Handle external links to a user. (#2690) 2024-04-15 11:08:00 +01:00
Stefan Ceriu fcc25dd441 Adop the new SDK permalink detector and user builder 2024-04-12 18:04:41 +03:00
Doug 761824fa0d Tweak internal/external deeplink handling (#2664)
* Add a childRoom AppRoute.

* Add a tests for child room routes.
2024-04-08 16:44:03 +01:00
Stefan Ceriu fcf78e93e0 More integration test tweaks (#2321)
* Improve integration test timings and alert handing

* Add missing `receive(on: DispatchQueue.main` on the invites screen

* Wait for photo library to load

* Disable the preferForLoop swiftformat rule and fix a couple of new warnings

* Delay invites screen snapshotting after dispatch main queue addition
2024-01-11 16:35:03 +02:00
Mauro 123164f398 Removing dead code part 2 (#2235)
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
2023-12-15 20:16:16 +01:00
Doug 09b276d94b Update most references of vector-im to element-hq (#2231)
Sonarcloud and codecov will follow in a later PR when confirmed working. Changelog ignored as it isn't particularly important with the redirect.
2023-12-12 14:34:44 +00:00
Mauro a21bc2cdd3 Handle Room Routing using the membership state (#2154) 2023-11-22 17:37:26 +00:00
Stefan Ceriu 37f1a79a11 Key backup returns (#1951)
* Converge on UserSessionFlowCoordinator logout confirmation

* Add logout confirmation screen strings to untranslated.

* Fix chat backup learn more URl fragment.

* Implement logout flows that check recovery and key backup for the last session

* Move logout confirmation screen strings to localazy

* Change encrypted timeline item copy to "Waiting for decryption key"

* Use different encrypted history banner based on key backup states

* Introduce a SettingsFlowCoordinator and implement navigation directly to the secure backup screen from the logout flows.

* Fix **mocked** secure backup controller flows

* Simplify encrypted history banner logic

* Address PR comments
2023-10-24 18:38:41 +03:00
Doug b6470c9651 Initial setup ready for PIN/Biometric app lock. (#1876)
* Add AppLockCoordinator and WindowManager.
2023-10-11 12:59:47 +00:00
Mauro dce94e7d7d Tapping on room link (with roomID) (#1853)
* room linking

* chagelog
2023-10-04 15:47:57 +02:00
Mauro 355535cd75 Handle tap on user mentions (#1850)
* user mention routing implemented

* more tests

* better naming

* fixed a test
2023-10-03 10:11:05 +02:00
Doug ec3f5d425e Use a universal link for the OIDC callback. (#1681) 2023-09-28 14:12:57 +01:00
Stefan Ceriu 68ea9acb36 Prevent ElementX from intercepting links that it can't handle. Redirect them to the system browser 2023-09-26 14:03:26 +03:00
Stefan Ceriu 44c6da7ce6 Only allow https call links to be passed through the custom app scheme 2023-09-25 11:04:54 +03:00
Stefan Ceriu f95331d3a6 Use a different scheme for Element Call in the form of io.element.call:/?url=some_url 2023-09-19 18:11:09 +03:00
Stefan Ceriu ee4040141d Top level deeplink handling (#1660)
* Handle link opening on the top most levels and prepare for percolating them throughout the app
* Add support for a custom app scheme
* Add specific AppRoute parsers.
* Integrate custom scheme in the AppRouteURLParser
* Switch to `element://call` and cleanup route parsing
2023-09-11 12:31:31 +03:00
Stefan Ceriu 62b6cd598f Generic element call link support (#1643)
* Remove swift-url-routing and replace it with a custom implementation. It fails parsing the fragments in app.element.io links and it doesn't bring any value
* Add handling for opening generic element call links
* Add applinks support for call.element.io
* Enable VoIP and Audio playback background modes
2023-09-07 12:06:18 +03:00
Stefan Ceriu 1a12c729de Fixes #617 - Prevent navigation bar breaking when backgrounding the app froma a split view 2023-09-06 09:49:38 +03:00
Mauro 1b90060c9e Invitation Notification design improvements and navigation (#1091)
* invitation notification

* handling navigation to the invite view

* improved invite notifications

# Conflicts:
#	NSE/Sources/NotificationServiceExtension.swift

* improved the design

* improved the navigation handling on iPad vs iPhone

* comment

* code improvement

* better doc
2023-06-19 08:03:32 +00:00
Stefan Ceriu 0082aba9d4 Fixes #918, #919 - Introduce a RoomTimelineFlowCoordinator and related FlowCoordinator protocol
Squashed commits:
Add unit tests and move the state machine into the FlowCoordinator
[bb686861] Replace the RoomFlowCoordinator's public interface with just `handleAppRoute`
[0d9a4f8d] Remove the navigationStackCoordinator dependency from the roomScreenCoordinator
[4b5fbdf2] Allow rooms to be selected from any other state
[41dbd127] Move all missing coordinators to the RoomFlowCoordinator and state machines
[f32431b7] The UserSessionFlowCoordinator does not need to conform to the CoordinatorProtocol
[0f07e87d] Fix leaving a room dismissing the currently selected one when different
[138385a2] Rewind the navigation stack when re-selecting the same room (iPad)
[0727eb93] Fix presenting different room details from the side menu on iPads
[faf4cc60] Fix selecting the same room multiple times
[fb3391da] Move room details presentation responsibility to the RoomFlowCoordinator. Fixed invitation flows.
[fa2a68d9] Rename RoomTimelineFlowCoordinator -> RoomFlowCoordinator
[0c9c06b5] Start moving things away from the RoomScreenCoordinator and into the RoomTimelineFlowCoordinator
[86cbbdcc] Introduce a RoomTimelineFlowCoordinator to deal with timeline related operations
[9b2381be] Introduce the FlowCoordinatorProtocol
2023-05-26 17:42:39 +03:00
Stefan Ceriu 6700d4301d #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 44def2277f 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
Mauro 3d0d883637 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
Mauro f02a5c7ac0 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
Mauro 61d42a24ba 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
Doug 1a81768c62 Fix accent colour not being applied to Alerts etc. (#701) 2023-03-14 13:38:36 +00:00
Stefan Ceriu 9ace5ac74c 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 ee2d770579 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 9bba378c2d Fix bug in which teardowns can be called multiple times on the same coordinator 2023-02-28 15:33:55 +02:00
Stefan Ceriu ad06e812bc 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 594f6f85dd 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
Stefan Ceriu d51a9b3a2b 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
Doug c383029203 QuickLook media. (#447)
* Use QL previews for video and present full screen.
* Use URL(staticString:) in more places.
* Fix DesignKit issues.
2023-01-12 17:37:33 +00:00
Stefan Ceriu 71f1f044c7 Various tweaks (#381)
* Add the message delivery status to the plain timeline styler and display it outside of the main content

* Fix glitchy timeline scroll to bottom button

* Fixed bubbled reactions padding

* Simplified the emoji picker, double tapping a timeline item directly opens it now and added a context menu option. Linked it to rust side reaction sending

* Fix the sliding sync cold cache: treat invalidated rooms as filled

* Make splash screen view full screen

* Fix the offline indicator popping up when first setting up the network monitor

* Expose presentationDetents on the NavigationStackCoordinator and start using them for the EmojiPicker

* Fix link tint color

* Linked TimelineReactionsView reaction sending

* Remove now unused/unnecessary classes

* Add changelog

* Fix formatting issue
2022-12-21 11:18:45 +02:00
Stefan Ceriu 5b90f37f2e Various UI test fixes (#370)
* Increase integration tests time limits again as they're still ocasionally failing

* Fixed NavigationRootCoordinator name in logs

* Refactor UI tests hierarchy and introduce new userFlowScreen

* Introduce a RoomTimelineControllerFactory so that it can be mocked in the UserFlow UI tests

* Start using a mock timeline controller for the UserSession flows

* Remove the WeakDictionary dependency and replce it with a plain NSMapTable in the BackgroundTaskService

* Allow multiple UITests screenshots per screen

* Prevent the view hierarchy changing when taking screenshots

* Add UserSessionScreen UI tests

* Fix label triaging workflow project identifier as per vector-im/element-ios/pull/7150

* Fix settings screen tests

* Fix roomPlainNoAvatar and roomEncryptedWithAvatar UI tests

* Fix modal server selection screen UI tests

* Fix bug report and login screen UI tests

* Fix text typing missing characters on UI tests

* Fix sliding sync configuration on integration tests

* Stop crashing if not finding a particular room through the MockClientProxy
2022-12-15 15:22:39 +02:00