* Enable Swift 6.2 with default main actor isolation for the app target
Turn on SWIFT_VERSION 6.2, SWIFT_APPROACHABLE_CONCURRENCY and SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor for the ElementX target, matching the NSE and Share Extension (which already use 6.2 without the main actor default).
# Conflicts:
# ElementX.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
* Update the code generation templates for Swift 6
Emit nonisolated/@unchecked Sendable mocks and nonisolated string enums, and mark async mock methods @concurrent so they keep suspending like the real implementations (otherwise intermediate states are unobservable in tests). Includes the regenerated mocks and strings.
# Conflicts:
# ElementX/Sources/Mocks/Generated/GeneratedMocks.swift
* Make the data layer and services nonisolated and Sendable
Annotate the value-type models, Rust SDK proxy wrappers, timeline item graph, settings, logging and NSE-shared types as nonisolated, and conform the service protocols to Sendable so their existentials can cross isolation boundaries. These types run off the main actor and no longer inherit the target's default main actor isolation.
* Adopt the new isolation across call sites, mocks and signatures
Update call sites, closure signatures and mock configuration helpers to match the nonisolated/Sendable data layer, including the main actor isolated mock inits and the @Sendable filter on recentlyVisitedRooms.
^ Conflicts:
^ ElementX/Sources/Services/SecureBackup/SecureBackupController.swift
* Remove redundant @MainActor annotations
With the app target defaulting to main actor isolation, the explicit @MainActor on view models, coordinators, views and their protocols is no longer required.
* Fix concurrency hotspots surfaced by the migration
Resolve the room summary main-thread deadlock by moving diff processing onto AsyncStreams, add the SDKListener.onMainActor FIFO bridge for SDK callbacks, hop KVO/timer/UIKit callbacks to the main actor via assumeIsolated, add isolated deinits, and apply the few justified nonisolated(unsafe) escapes for queue-confined Apple APIs.
* Fix the unit tests for Swift 6 concurrency
Hop the waitForConfirmation body onto the caller's actor (Swift Testing runs confirmation closures off-actor), and adjust the affected suites and async signatures.
* offload diffs on concurrent threads instead of main actor
* make room info protocols sendable
* use a task group for fetching data so that everything runs concurrently in the TextRoomTimelineView when getting the preview.
* use the generic onMainActor implementation, which already makes a stream and send the continuation on the main actor.
* small pr comments issues being addressed
* update enterprise
* Update StaticCode to 1.1.0 and specify the required Swift isolation.
* fix ElementCallServiceTests
* update enterprise
* re-generate mocks
* update enterprise
* enterprise new code conformed to swift 6
---------
Co-authored-by: Doug <douglase@element.io>
* Move the rageshakeURL configuration from the BugReportService to AppSettings.
* Refactor Target to return a handle when configuring.
This helps with reconfiguration and removes the @MainActor constraint.
* Make the map tiler key optional.
* Make the bug report URL optional.
* Make the sentry URL optional.
* Make the analytics configuration optional and handle consent taking Sentry into account.
* Stop prompting users to report crashes when Sentry is disabled.
* Move Sentry setup outside of the BugReportService
* Setup Sentry SwiftUI tracing for the homeScreen and roomScreen roots
* Setup Sentry instrumentation on top of the existing Signposter
* Various tweaks
* Handover log file management to Rust.
Fix all the tests, disabling the logging ones for now.
* Merge logging tests into a single case 😬
Not ideal but at least they're now running.
* Move TracingConfiguration into its own file.
* Split up the tests into smaller functions instead of writing code like a caveman.
* 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
* work in progress, was able to generate a mock for the RoomProxyProtocol, I'll try if I can swap the mock we have with this one
* removing swiftformat from generated
* added the disable of swiftlint directly into the .stencil
* testing if danger still complains
* improved the stencil
* session verification controller proxy using auto mockable
* BugReport mocks and tests added
* changelog
* fixing a typo
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* fix typo in the test
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* removing the Protocol word from the type if present
* using extension in place of a subclass
* removed unused imports
* improved the yielding code
* moved Sourcery files
* stencil master
---------
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* created a progress tracker class and passed it in the user notification to be observed by the progress view
* improved the publishing by dispatching it on RunLoop.main
* bug report struct created and progress tracker class moved into the Other folder
* some swiftlint adjustments
* fixed tests
* fixed another test BugReportServiceTests
* changelog 495 - change
* added a mock preview
* fixing some linting suggestions
* no need to use KVO, achieve the same result using a publisher
* some refactors to address PR comments
* some code improvements
* fixed the issue that prevented the avatar of the room to be displayed in the mocks, and updated the tests
* Revert "fixed the issue that prevented the avatar of the room to be displayed in the mocks, and updated the tests"
This reverts commit 113d6091d91a3aac1f9a59ff6c5e07610ed59859.