mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-02 21:33:26 +00:00
Use iOS 26 Observation for Unit and Preview tests. (#5797)
* use observation in unit and preview tests instead of the async stream * use a parsing approach that is independent of the sourcery annotation * Fix observation deferred fulfillments not receiving the initial value Observation's observe only emits transitions, not the value present at subscription time. Drop the leading initial value from the affected transitionValues sequences and assert it directly with #expect instead. * improved docs
This commit is contained in:
@@ -9609,6 +9609,7 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
INFOPLIST_FILE = PreviewTests/SupportingFiles/Info.plist;
|
INFOPLIST_FILE = PreviewTests/SupportingFiles/Info.plist;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
@@ -9720,6 +9721,7 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
INFOPLIST_FILE = UnitTests/SupportingFiles/Info.plist;
|
INFOPLIST_FILE = UnitTests/SupportingFiles/Info.plist;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
@@ -9919,6 +9921,7 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
INFOPLIST_FILE = UnitTests/SupportingFiles/Info.plist;
|
INFOPLIST_FILE = UnitTests/SupportingFiles/Info.plist;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
@@ -10082,6 +10085,7 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||||
INFOPLIST_FILE = PreviewTests/SupportingFiles/Info.plist;
|
INFOPLIST_FILE = PreviewTests/SupportingFiles/Info.plist;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
|
|||||||
@@ -7,13 +7,25 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
import Observation
|
||||||
import Synchronization
|
import Synchronization
|
||||||
|
|
||||||
extension Observable {
|
extension Observable {
|
||||||
/// Creates an async stream for the specified property on this object. We probably won't need this once SE-0475 is available:
|
/// A convenience wrapper around the `Observations` sequence (SE-0475).
|
||||||
/// https://github.com/swiftlang/swift-evolution/blob/main/proposals/0475-observed.md
|
|
||||||
///
|
///
|
||||||
/// - Parameter property: The key path to the property you would like to observe.
|
/// - Parameter property: The key path to the property you would like to observe.
|
||||||
|
@available(iOS 26.0, *)
|
||||||
|
@MainActor func observe<Value: Sendable>(_ property: KeyPath<Self, Value>) -> Observations<Value, Never> {
|
||||||
|
Observations { self[keyPath: property] }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Creates an async stream for the specified property on this object.
|
||||||
|
///
|
||||||
|
/// iOS 18 fallback for ``observe(_:)``. Remove once the minimum deployment target reaches iOS 26.
|
||||||
|
///
|
||||||
|
/// - Parameter property: The key path to the property you would like to observe.
|
||||||
|
@available(iOS, deprecated: 26.0, message: "Use observe(_:) which is backed by the Observations sequence.")
|
||||||
|
@_disfavoredOverload
|
||||||
@MainActor func observe<Value: Sendable>(_ property: KeyPath<Self, Value>) -> AsyncStream<Value> {
|
@MainActor func observe<Value: Sendable>(_ property: KeyPath<Self, Value>) -> AsyncStream<Value> {
|
||||||
let (stream, continuation) = AsyncStream<Value>.makeStream()
|
let (stream, continuation) = AsyncStream<Value>.makeStream()
|
||||||
let (changeSignals, changeSignaller) = AsyncStream<Void>.makeStream()
|
let (changeSignals, changeSignaller) = AsyncStream<Void>.makeStream()
|
||||||
|
|||||||
@@ -8,230 +8,237 @@ import SwiftUI
|
|||||||
|
|
||||||
|
|
||||||
enum TestablePreviewsDictionary {
|
enum TestablePreviewsDictionary {
|
||||||
static let dictionary: [String: any PreviewProvider.Type] = [
|
static let dictionary: [String: any PreviewProvider.Type] = {
|
||||||
"AdvancedSettingsScreen_Previews" : AdvancedSettingsScreen_Previews.self,
|
var dictionary: [String: any PreviewProvider.Type] = [
|
||||||
"AnalyticsPromptScreen_Previews" : AnalyticsPromptScreen_Previews.self,
|
"AdvancedSettingsScreen_Previews" : AdvancedSettingsScreen_Previews.self,
|
||||||
"AnalyticsSettingsScreen_Previews" : AnalyticsSettingsScreen_Previews.self,
|
"AnalyticsPromptScreen_Previews" : AnalyticsPromptScreen_Previews.self,
|
||||||
"AppLockScreen_Previews" : AppLockScreen_Previews.self,
|
"AnalyticsSettingsScreen_Previews" : AnalyticsSettingsScreen_Previews.self,
|
||||||
"AppLockSetupBiometricsScreen_Previews" : AppLockSetupBiometricsScreen_Previews.self,
|
"AppLockScreen_Previews" : AppLockScreen_Previews.self,
|
||||||
"AppLockSetupPINScreen_Previews" : AppLockSetupPINScreen_Previews.self,
|
"AppLockSetupBiometricsScreen_Previews" : AppLockSetupBiometricsScreen_Previews.self,
|
||||||
"AppLockSetupSettingsScreen_Previews" : AppLockSetupSettingsScreen_Previews.self,
|
"AppLockSetupPINScreen_Previews" : AppLockSetupPINScreen_Previews.self,
|
||||||
"AudioMediaEventsTimelineView_Previews" : AudioMediaEventsTimelineView_Previews.self,
|
"AppLockSetupSettingsScreen_Previews" : AppLockSetupSettingsScreen_Previews.self,
|
||||||
"AudioRoomTimelineView_Previews" : AudioRoomTimelineView_Previews.self,
|
"AudioMediaEventsTimelineView_Previews" : AudioMediaEventsTimelineView_Previews.self,
|
||||||
"AuthenticationClassicAppBackupInstructionsView_Previews" : AuthenticationClassicAppBackupInstructionsView_Previews.self,
|
"AudioRoomTimelineView_Previews" : AudioRoomTimelineView_Previews.self,
|
||||||
"AuthenticationStartScreen_Previews" : AuthenticationStartScreen_Previews.self,
|
"AuthenticationClassicAppBackupInstructionsView_Previews" : AuthenticationClassicAppBackupInstructionsView_Previews.self,
|
||||||
"AvatarHeaderView_Previews" : AvatarHeaderView_Previews.self,
|
"AuthenticationStartScreen_Previews" : AuthenticationStartScreen_Previews.self,
|
||||||
"BadgeLabel_Previews" : BadgeLabel_Previews.self,
|
"AvatarHeaderView_Previews" : AvatarHeaderView_Previews.self,
|
||||||
"BlockedUsersScreen_Previews" : BlockedUsersScreen_Previews.self,
|
"BadgeLabel_Previews" : BadgeLabel_Previews.self,
|
||||||
"BloomModifier_Previews" : BloomModifier_Previews.self,
|
"BlockedUsersScreen_Previews" : BlockedUsersScreen_Previews.self,
|
||||||
"BugReportScreen_Previews" : BugReportScreen_Previews.self,
|
"BloomModifier_Previews" : BloomModifier_Previews.self,
|
||||||
"CallInviteRoomTimelineView_Previews" : CallInviteRoomTimelineView_Previews.self,
|
"BugReportScreen_Previews" : BugReportScreen_Previews.self,
|
||||||
"CallNotificationRoomTimelineView_Previews" : CallNotificationRoomTimelineView_Previews.self,
|
"CallInviteRoomTimelineView_Previews" : CallInviteRoomTimelineView_Previews.self,
|
||||||
"ChatsSpaceFilterCell_Previews" : ChatsSpaceFilterCell_Previews.self,
|
"CallNotificationRoomTimelineView_Previews" : CallNotificationRoomTimelineView_Previews.self,
|
||||||
"ChatsSpaceFiltersScreen_Previews" : ChatsSpaceFiltersScreen_Previews.self,
|
"ChatsSpaceFilterCell_Previews" : ChatsSpaceFilterCell_Previews.self,
|
||||||
"CollapsibleRoomTimelineView_Previews" : CollapsibleRoomTimelineView_Previews.self,
|
"ChatsSpaceFiltersScreen_Previews" : ChatsSpaceFiltersScreen_Previews.self,
|
||||||
"CompletionSuggestion_Previews" : CompletionSuggestion_Previews.self,
|
"CollapsibleRoomTimelineView_Previews" : CollapsibleRoomTimelineView_Previews.self,
|
||||||
"ComposerToolbar_Previews" : ComposerToolbar_Previews.self,
|
"CompletionSuggestion_Previews" : CompletionSuggestion_Previews.self,
|
||||||
"CopyTextButton_Previews" : CopyTextButton_Previews.self,
|
"ComposerToolbar_Previews" : ComposerToolbar_Previews.self,
|
||||||
"CreateRoomSpaceSelectionSheet_Previews" : CreateRoomSpaceSelectionSheet_Previews.self,
|
"CopyTextButton_Previews" : CopyTextButton_Previews.self,
|
||||||
"CreateRoom_Previews" : CreateRoom_Previews.self,
|
"CreateRoomSpaceSelectionSheet_Previews" : CreateRoomSpaceSelectionSheet_Previews.self,
|
||||||
"DeactivateAccountScreen_Previews" : DeactivateAccountScreen_Previews.self,
|
"CreateRoom_Previews" : CreateRoom_Previews.self,
|
||||||
"DeclineAndBlockScreen_Previews" : DeclineAndBlockScreen_Previews.self,
|
"DeactivateAccountScreen_Previews" : DeactivateAccountScreen_Previews.self,
|
||||||
"EditRoomAddressScreen_Previews" : EditRoomAddressScreen_Previews.self,
|
"DeclineAndBlockScreen_Previews" : DeclineAndBlockScreen_Previews.self,
|
||||||
"EmojiPickerScreenHeaderView_Previews" : EmojiPickerScreenHeaderView_Previews.self,
|
"EditRoomAddressScreen_Previews" : EditRoomAddressScreen_Previews.self,
|
||||||
"EmojiPickerScreen_Previews" : EmojiPickerScreen_Previews.self,
|
"EmojiPickerScreenHeaderView_Previews" : EmojiPickerScreenHeaderView_Previews.self,
|
||||||
"EmoteRoomTimelineView_Previews" : EmoteRoomTimelineView_Previews.self,
|
"EmoteRoomTimelineView_Previews" : EmoteRoomTimelineView_Previews.self,
|
||||||
"EncryptedRoomTimelineView_Previews" : EncryptedRoomTimelineView_Previews.self,
|
"EncryptedRoomTimelineView_Previews" : EncryptedRoomTimelineView_Previews.self,
|
||||||
"EncryptionResetPasswordScreen_Previews" : EncryptionResetPasswordScreen_Previews.self,
|
"EncryptionResetPasswordScreen_Previews" : EncryptionResetPasswordScreen_Previews.self,
|
||||||
"EncryptionResetScreen_Previews" : EncryptionResetScreen_Previews.self,
|
"EncryptionResetScreen_Previews" : EncryptionResetScreen_Previews.self,
|
||||||
"EstimatedWaveformView_Previews" : EstimatedWaveformView_Previews.self,
|
"EstimatedWaveformView_Previews" : EstimatedWaveformView_Previews.self,
|
||||||
"FileMediaEventsTimelineView_Previews" : FileMediaEventsTimelineView_Previews.self,
|
"FileMediaEventsTimelineView_Previews" : FileMediaEventsTimelineView_Previews.self,
|
||||||
"FileRoomTimelineView_Previews" : FileRoomTimelineView_Previews.self,
|
"FileRoomTimelineView_Previews" : FileRoomTimelineView_Previews.self,
|
||||||
"FloatingDateBadge_Previews" : FloatingDateBadge_Previews.self,
|
"FloatingDateBadge_Previews" : FloatingDateBadge_Previews.self,
|
||||||
"FormButtonStyles_Previews" : FormButtonStyles_Previews.self,
|
"FormButtonStyles_Previews" : FormButtonStyles_Previews.self,
|
||||||
"FormattedBodyText_Previews" : FormattedBodyText_Previews.self,
|
"FormattedBodyText_Previews" : FormattedBodyText_Previews.self,
|
||||||
"FormattingToolbar_Previews" : FormattingToolbar_Previews.self,
|
"FormattingToolbar_Previews" : FormattingToolbar_Previews.self,
|
||||||
"FullscreenDialog_Previews" : FullscreenDialog_Previews.self,
|
"FullscreenDialog_Previews" : FullscreenDialog_Previews.self,
|
||||||
"HighlightedTimelineItemModifier_Previews" : HighlightedTimelineItemModifier_Previews.self,
|
"HighlightedTimelineItemModifier_Previews" : HighlightedTimelineItemModifier_Previews.self,
|
||||||
"HomeScreenEmptyStateView_Previews" : HomeScreenEmptyStateView_Previews.self,
|
"HomeScreenEmptyStateView_Previews" : HomeScreenEmptyStateView_Previews.self,
|
||||||
"HomeScreenInviteCell_Previews" : HomeScreenInviteCell_Previews.self,
|
"HomeScreenInviteCell_Previews" : HomeScreenInviteCell_Previews.self,
|
||||||
"HomeScreenKnockedCell_Previews" : HomeScreenKnockedCell_Previews.self,
|
"HomeScreenKnockedCell_Previews" : HomeScreenKnockedCell_Previews.self,
|
||||||
"HomeScreenNewSoundBanner_Previews" : HomeScreenNewSoundBanner_Previews.self,
|
"HomeScreenNewSoundBanner_Previews" : HomeScreenNewSoundBanner_Previews.self,
|
||||||
"HomeScreenRecoveryKeyConfirmationBanner_Previews" : HomeScreenRecoveryKeyConfirmationBanner_Previews.self,
|
"HomeScreenRecoveryKeyConfirmationBanner_Previews" : HomeScreenRecoveryKeyConfirmationBanner_Previews.self,
|
||||||
"HomeScreenRoomCell_Previews" : HomeScreenRoomCell_Previews.self,
|
"HomeScreenRoomCell_Previews" : HomeScreenRoomCell_Previews.self,
|
||||||
"HomeScreen_Previews" : HomeScreen_Previews.self,
|
"HomeScreen_Previews" : HomeScreen_Previews.self,
|
||||||
"IdentityConfirmationScreen_Previews" : IdentityConfirmationScreen_Previews.self,
|
"IdentityConfirmedScreen_Previews" : IdentityConfirmedScreen_Previews.self,
|
||||||
"IdentityConfirmedScreen_Previews" : IdentityConfirmedScreen_Previews.self,
|
"ImageMediaEventsTimelineView_Previews" : ImageMediaEventsTimelineView_Previews.self,
|
||||||
"ImageMediaEventsTimelineView_Previews" : ImageMediaEventsTimelineView_Previews.self,
|
"ImageRoomTimelineView_Previews" : ImageRoomTimelineView_Previews.self,
|
||||||
"ImageRoomTimelineView_Previews" : ImageRoomTimelineView_Previews.self,
|
"InviteUsersConfirmationSheetView_Previews" : InviteUsersConfirmationSheetView_Previews.self,
|
||||||
"InviteUsersConfirmationSheetView_Previews" : InviteUsersConfirmationSheetView_Previews.self,
|
"InviteUsersScreenSelectedItem_Previews" : InviteUsersScreenSelectedItem_Previews.self,
|
||||||
"InviteUsersScreenSelectedItem_Previews" : InviteUsersScreenSelectedItem_Previews.self,
|
"InviteUsersScreen_Previews" : InviteUsersScreen_Previews.self,
|
||||||
"InviteUsersScreen_Previews" : InviteUsersScreen_Previews.self,
|
"JoinRoomByAddressView_Previews" : JoinRoomByAddressView_Previews.self,
|
||||||
"JoinRoomByAddressView_Previews" : JoinRoomByAddressView_Previews.self,
|
"JoinRoomScreenSpace_Previews" : JoinRoomScreenSpace_Previews.self,
|
||||||
"JoinRoomScreenSpace_Previews" : JoinRoomScreenSpace_Previews.self,
|
"JoinRoomScreen_Previews" : JoinRoomScreen_Previews.self,
|
||||||
"JoinRoomScreen_Previews" : JoinRoomScreen_Previews.self,
|
"JoinedMembersBadgeView_Previews" : JoinedMembersBadgeView_Previews.self,
|
||||||
"JoinedMembersBadgeView_Previews" : JoinedMembersBadgeView_Previews.self,
|
"KnockRequestCell_Previews" : KnockRequestCell_Previews.self,
|
||||||
"KnockRequestCell_Previews" : KnockRequestCell_Previews.self,
|
"KnockRequestsBannerView_Previews" : KnockRequestsBannerView_Previews.self,
|
||||||
"KnockRequestsBannerView_Previews" : KnockRequestsBannerView_Previews.self,
|
"KnockRequestsListEmptyStateView_Previews" : KnockRequestsListEmptyStateView_Previews.self,
|
||||||
"KnockRequestsListEmptyStateView_Previews" : KnockRequestsListEmptyStateView_Previews.self,
|
"KnockRequestsListScreen_Previews" : KnockRequestsListScreen_Previews.self,
|
||||||
"KnockRequestsListScreen_Previews" : KnockRequestsListScreen_Previews.self,
|
"LabsScreen_Previews" : LabsScreen_Previews.self,
|
||||||
"LabsScreen_Previews" : LabsScreen_Previews.self,
|
"LeaveSpaceRoomDetailsCell_Previews" : LeaveSpaceRoomDetailsCell_Previews.self,
|
||||||
"LeaveSpaceRoomDetailsCell_Previews" : LeaveSpaceRoomDetailsCell_Previews.self,
|
"LeaveSpaceView_Previews" : LeaveSpaceView_Previews.self,
|
||||||
"LeaveSpaceView_Previews" : LeaveSpaceView_Previews.self,
|
"LegalInformationScreen_Previews" : LegalInformationScreen_Previews.self,
|
||||||
"LegalInformationScreen_Previews" : LegalInformationScreen_Previews.self,
|
"LiveLocationRoomTimelineView_Previews" : LiveLocationRoomTimelineView_Previews.self,
|
||||||
"LinkNewDeviceScreen_Previews" : LinkNewDeviceScreen_Previews.self,
|
"LiveLocationSharingBannerView_Previews" : LiveLocationSharingBannerView_Previews.self,
|
||||||
"LiveLocationRoomTimelineView_Previews" : LiveLocationRoomTimelineView_Previews.self,
|
"LiveLocationSheet_Previews" : LiveLocationSheet_Previews.self,
|
||||||
"LiveLocationSharingBannerView_Previews" : LiveLocationSharingBannerView_Previews.self,
|
"LoadableImage_Previews" : LoadableImage_Previews.self,
|
||||||
"LiveLocationSheet_Previews" : LiveLocationSheet_Previews.self,
|
"LocationMarkerView_Previews" : LocationMarkerView_Previews.self,
|
||||||
"LoadableImage_Previews" : LoadableImage_Previews.self,
|
"LocationPickerSheet_Previews" : LocationPickerSheet_Previews.self,
|
||||||
"LocationMarkerView_Previews" : LocationMarkerView_Previews.self,
|
"LocationRoomTimelineView_Previews" : LocationRoomTimelineView_Previews.self,
|
||||||
"LocationPickerSheet_Previews" : LocationPickerSheet_Previews.self,
|
"LocationSharingScreen_Previews" : LocationSharingScreen_Previews.self,
|
||||||
"LocationRoomTimelineView_Previews" : LocationRoomTimelineView_Previews.self,
|
"LongPressWithFeedback_Previews" : LongPressWithFeedback_Previews.self,
|
||||||
"LocationSharingScreen_Previews" : LocationSharingScreen_Previews.self,
|
"ManageAuthorizedSpacesScreen_Previews" : ManageAuthorizedSpacesScreen_Previews.self,
|
||||||
"LoginScreen_Previews" : LoginScreen_Previews.self,
|
"ManageRoomMemberSheetView_Previews" : ManageRoomMemberSheetView_Previews.self,
|
||||||
"LongPressWithFeedback_Previews" : LongPressWithFeedback_Previews.self,
|
"MapLibreStaticMapView_Previews" : MapLibreStaticMapView_Previews.self,
|
||||||
"ManageAuthorizedSpacesScreen_Previews" : ManageAuthorizedSpacesScreen_Previews.self,
|
"MatrixUserPermalink_Previews" : MatrixUserPermalink_Previews.self,
|
||||||
"ManageRoomMemberSheetView_Previews" : ManageRoomMemberSheetView_Previews.self,
|
"MediaEventsTimelineScreen_Previews" : MediaEventsTimelineScreen_Previews.self,
|
||||||
"MapLibreStaticMapView_Previews" : MapLibreStaticMapView_Previews.self,
|
"MediaUploadPreviewScreen_Previews" : MediaUploadPreviewScreen_Previews.self,
|
||||||
"MatrixUserPermalink_Previews" : MatrixUserPermalink_Previews.self,
|
"MentionSuggestionItemView_Previews" : MentionSuggestionItemView_Previews.self,
|
||||||
"MediaEventsTimelineScreen_Previews" : MediaEventsTimelineScreen_Previews.self,
|
"MessageComposerTextField_Previews" : MessageComposerTextField_Previews.self,
|
||||||
"MediaUploadPreviewScreen_Previews" : MediaUploadPreviewScreen_Previews.self,
|
"MessageComposer_Previews" : MessageComposer_Previews.self,
|
||||||
"MentionSuggestionItemView_Previews" : MentionSuggestionItemView_Previews.self,
|
"MessageForwardingScreen_Previews" : MessageForwardingScreen_Previews.self,
|
||||||
"MessageComposerTextField_Previews" : MessageComposerTextField_Previews.self,
|
"MessageText_Previews" : MessageText_Previews.self,
|
||||||
"MessageComposer_Previews" : MessageComposer_Previews.self,
|
"NoticeRoomTimelineView_Previews" : NoticeRoomTimelineView_Previews.self,
|
||||||
"MessageForwardingScreen_Previews" : MessageForwardingScreen_Previews.self,
|
"NotificationPermissionsScreen_Previews" : NotificationPermissionsScreen_Previews.self,
|
||||||
"MessageText_Previews" : MessageText_Previews.self,
|
"NotificationSettingsEditScreenRoomCell_Previews" : NotificationSettingsEditScreenRoomCell_Previews.self,
|
||||||
"NoticeRoomTimelineView_Previews" : NoticeRoomTimelineView_Previews.self,
|
"NotificationSettingsEditScreen_Previews" : NotificationSettingsEditScreen_Previews.self,
|
||||||
"NotificationPermissionsScreen_Previews" : NotificationPermissionsScreen_Previews.self,
|
"PINTextField_Previews" : PINTextField_Previews.self,
|
||||||
"NotificationSettingsEditScreenRoomCell_Previews" : NotificationSettingsEditScreenRoomCell_Previews.self,
|
"PaginationIndicatorRoomTimelineView_Previews" : PaginationIndicatorRoomTimelineView_Previews.self,
|
||||||
"NotificationSettingsEditScreen_Previews" : NotificationSettingsEditScreen_Previews.self,
|
"PillViewOnBubble_Previews" : PillViewOnBubble_Previews.self,
|
||||||
"NotificationSettingsScreen_Previews" : NotificationSettingsScreen_Previews.self,
|
"PillView_Previews" : PillView_Previews.self,
|
||||||
"PINTextField_Previews" : PINTextField_Previews.self,
|
"PinnedEventsTimelineScreen_Previews" : PinnedEventsTimelineScreen_Previews.self,
|
||||||
"PaginationIndicatorRoomTimelineView_Previews" : PaginationIndicatorRoomTimelineView_Previews.self,
|
"PinnedItemsBannerView_Previews" : PinnedItemsBannerView_Previews.self,
|
||||||
"PillViewOnBubble_Previews" : PillViewOnBubble_Previews.self,
|
"PinnedItemsIndicatorView_Previews" : PinnedItemsIndicatorView_Previews.self,
|
||||||
"PillView_Previews" : PillView_Previews.self,
|
"PlaceholderAvatarImage_Previews" : PlaceholderAvatarImage_Previews.self,
|
||||||
"PinnedEventsTimelineScreen_Previews" : PinnedEventsTimelineScreen_Previews.self,
|
"PlaceholderScreen_Previews" : PlaceholderScreen_Previews.self,
|
||||||
"PinnedItemsBannerView_Previews" : PinnedItemsBannerView_Previews.self,
|
"PlaybackSpeedButton_Previews" : PlaybackSpeedButton_Previews.self,
|
||||||
"PinnedItemsIndicatorView_Previews" : PinnedItemsIndicatorView_Previews.self,
|
"PollFormScreen_Previews" : PollFormScreen_Previews.self,
|
||||||
"PlaceholderAvatarImage_Previews" : PlaceholderAvatarImage_Previews.self,
|
"PollOptionView_Previews" : PollOptionView_Previews.self,
|
||||||
"PlaceholderScreen_Previews" : PlaceholderScreen_Previews.self,
|
"PollRoomTimelineView_Previews" : PollRoomTimelineView_Previews.self,
|
||||||
"PlaybackSpeedButton_Previews" : PlaybackSpeedButton_Previews.self,
|
"PollView_Previews" : PollView_Previews.self,
|
||||||
"PollFormScreen_Previews" : PollFormScreen_Previews.self,
|
"QRCodeErrorView_Previews" : QRCodeErrorView_Previews.self,
|
||||||
"PollOptionView_Previews" : PollOptionView_Previews.self,
|
"QRCodeLoginScreen_Previews" : QRCodeLoginScreen_Previews.self,
|
||||||
"PollRoomTimelineView_Previews" : PollRoomTimelineView_Previews.self,
|
"ReactionsSummaryView_Previews" : ReactionsSummaryView_Previews.self,
|
||||||
"PollView_Previews" : PollView_Previews.self,
|
"ReadMarkerRoomTimelineView_Previews" : ReadMarkerRoomTimelineView_Previews.self,
|
||||||
"QRCodeErrorView_Previews" : QRCodeErrorView_Previews.self,
|
"ReadReceiptCell_Previews" : ReadReceiptCell_Previews.self,
|
||||||
"QRCodeLoginScreen_Previews" : QRCodeLoginScreen_Previews.self,
|
"ReadReceiptsSummaryView_Previews" : ReadReceiptsSummaryView_Previews.self,
|
||||||
"ReactionsSummaryView_Previews" : ReactionsSummaryView_Previews.self,
|
"RedactedRoomTimelineView_Previews" : RedactedRoomTimelineView_Previews.self,
|
||||||
"ReadMarkerRoomTimelineView_Previews" : ReadMarkerRoomTimelineView_Previews.self,
|
"ReportContentScreen_Previews" : ReportContentScreen_Previews.self,
|
||||||
"ReadReceiptCell_Previews" : ReadReceiptCell_Previews.self,
|
"ReportRoomScreen_Previews" : ReportRoomScreen_Previews.self,
|
||||||
"ReadReceiptsSummaryView_Previews" : ReadReceiptsSummaryView_Previews.self,
|
"ResolveVerifiedUserSendFailureScreen_Previews" : ResolveVerifiedUserSendFailureScreen_Previews.self,
|
||||||
"RedactedRoomTimelineView_Previews" : RedactedRoomTimelineView_Previews.self,
|
"RoomAttachmentPicker_Previews" : RoomAttachmentPicker_Previews.self,
|
||||||
"ReportContentScreen_Previews" : ReportContentScreen_Previews.self,
|
"RoomAvatarImage_Previews" : RoomAvatarImage_Previews.self,
|
||||||
"ReportRoomScreen_Previews" : ReportRoomScreen_Previews.self,
|
"RoomChangePermissionsScreen_Previews" : RoomChangePermissionsScreen_Previews.self,
|
||||||
"ResolveVerifiedUserSendFailureScreen_Previews" : ResolveVerifiedUserSendFailureScreen_Previews.self,
|
"RoomChangeRolesScreenRow_Previews" : RoomChangeRolesScreenRow_Previews.self,
|
||||||
"RoomAttachmentPicker_Previews" : RoomAttachmentPicker_Previews.self,
|
"RoomChangeRolesScreenSelectedItem_Previews" : RoomChangeRolesScreenSelectedItem_Previews.self,
|
||||||
"RoomAvatarImage_Previews" : RoomAvatarImage_Previews.self,
|
"RoomChangeRolesScreen_Previews" : RoomChangeRolesScreen_Previews.self,
|
||||||
"RoomChangePermissionsScreen_Previews" : RoomChangePermissionsScreen_Previews.self,
|
"RoomDetailsEditScreen_Previews" : RoomDetailsEditScreen_Previews.self,
|
||||||
"RoomChangeRolesScreenRow_Previews" : RoomChangeRolesScreenRow_Previews.self,
|
"RoomDirectorySearchCell_Previews" : RoomDirectorySearchCell_Previews.self,
|
||||||
"RoomChangeRolesScreenSelectedItem_Previews" : RoomChangeRolesScreenSelectedItem_Previews.self,
|
"RoomDirectorySearchScreen_Previews" : RoomDirectorySearchScreen_Previews.self,
|
||||||
"RoomChangeRolesScreen_Previews" : RoomChangeRolesScreen_Previews.self,
|
"RoomHeaderView_Previews" : RoomHeaderView_Previews.self,
|
||||||
"RoomDetailsEditScreen_Previews" : RoomDetailsEditScreen_Previews.self,
|
"RoomInviterLabel_Previews" : RoomInviterLabel_Previews.self,
|
||||||
"RoomDetailsScreen_Previews" : RoomDetailsScreen_Previews.self,
|
"RoomListFilterView_Previews" : RoomListFilterView_Previews.self,
|
||||||
"RoomDirectorySearchCell_Previews" : RoomDirectorySearchCell_Previews.self,
|
"RoomListFiltersEmptyStateView_Previews" : RoomListFiltersEmptyStateView_Previews.self,
|
||||||
"RoomDirectorySearchScreen_Previews" : RoomDirectorySearchScreen_Previews.self,
|
"RoomListFiltersView_Previews" : RoomListFiltersView_Previews.self,
|
||||||
"RoomHeaderView_Previews" : RoomHeaderView_Previews.self,
|
"RoomMemberDetailsScreen_Previews" : RoomMemberDetailsScreen_Previews.self,
|
||||||
"RoomInviterLabel_Previews" : RoomInviterLabel_Previews.self,
|
"RoomMembersListMemberCell_Previews" : RoomMembersListMemberCell_Previews.self,
|
||||||
"RoomListFilterView_Previews" : RoomListFilterView_Previews.self,
|
"RoomMembersListScreen_Previews" : RoomMembersListScreen_Previews.self,
|
||||||
"RoomListFiltersEmptyStateView_Previews" : RoomListFiltersEmptyStateView_Previews.self,
|
"RoomNotificationSettingsCustomSectionView_Previews" : RoomNotificationSettingsCustomSectionView_Previews.self,
|
||||||
"RoomListFiltersView_Previews" : RoomListFiltersView_Previews.self,
|
"RoomNotificationSettingsScreen_Previews" : RoomNotificationSettingsScreen_Previews.self,
|
||||||
"RoomMemberDetailsScreen_Previews" : RoomMemberDetailsScreen_Previews.self,
|
"RoomNotificationSettingsUserDefinedScreen_Previews" : RoomNotificationSettingsUserDefinedScreen_Previews.self,
|
||||||
"RoomMembersListMemberCell_Previews" : RoomMembersListMemberCell_Previews.self,
|
"RoomPollsHistoryScreen_Previews" : RoomPollsHistoryScreen_Previews.self,
|
||||||
"RoomMembersListScreen_Previews" : RoomMembersListScreen_Previews.self,
|
"RoomRolesAndPermissionsScreen_Previews" : RoomRolesAndPermissionsScreen_Previews.self,
|
||||||
"RoomNotificationSettingsCustomSectionView_Previews" : RoomNotificationSettingsCustomSectionView_Previews.self,
|
"RoomScreenFooterView_Previews" : RoomScreenFooterView_Previews.self,
|
||||||
"RoomNotificationSettingsScreen_Previews" : RoomNotificationSettingsScreen_Previews.self,
|
"RoomScreen_Previews" : RoomScreen_Previews.self,
|
||||||
"RoomNotificationSettingsUserDefinedScreen_Previews" : RoomNotificationSettingsUserDefinedScreen_Previews.self,
|
"RoomSelectionScreen_Previews" : RoomSelectionScreen_Previews.self,
|
||||||
"RoomPollsHistoryScreen_Previews" : RoomPollsHistoryScreen_Previews.self,
|
"RoomThreadListScreen_Previews" : RoomThreadListScreen_Previews.self,
|
||||||
"RoomRolesAndPermissionsScreen_Previews" : RoomRolesAndPermissionsScreen_Previews.self,
|
"SFNumberedListView_Previews" : SFNumberedListView_Previews.self,
|
||||||
"RoomScreenFooterView_Previews" : RoomScreenFooterView_Previews.self,
|
"SearchScreen_Previews" : SearchScreen_Previews.self,
|
||||||
"RoomScreen_Previews" : RoomScreen_Previews.self,
|
"SecureBackupKeyBackupScreen_Previews" : SecureBackupKeyBackupScreen_Previews.self,
|
||||||
"RoomSelectionScreen_Previews" : RoomSelectionScreen_Previews.self,
|
"SecurityAndPrivacyScreen_Previews" : SecurityAndPrivacyScreen_Previews.self,
|
||||||
"RoomThreadListScreen_Previews" : RoomThreadListScreen_Previews.self,
|
"SendInviteConfirmationView_Previews" : SendInviteConfirmationView_Previews.self,
|
||||||
"SFNumberedListView_Previews" : SFNumberedListView_Previews.self,
|
"SeparatorMediaEventsTimelineView_Previews" : SeparatorMediaEventsTimelineView_Previews.self,
|
||||||
"SearchScreen_Previews" : SearchScreen_Previews.self,
|
"SeparatorRoomTimelineView_Previews" : SeparatorRoomTimelineView_Previews.self,
|
||||||
"SecureBackupKeyBackupScreen_Previews" : SecureBackupKeyBackupScreen_Previews.self,
|
"ServerConfirmationScreen_Previews" : ServerConfirmationScreen_Previews.self,
|
||||||
"SecureBackupLogoutConfirmationScreen_Previews" : SecureBackupLogoutConfirmationScreen_Previews.self,
|
"SessionVerificationRequestDetailsView_Previews" : SessionVerificationRequestDetailsView_Previews.self,
|
||||||
"SecureBackupRecoveryKeyScreen_Previews" : SecureBackupRecoveryKeyScreen_Previews.self,
|
"SessionVerification_Previews" : SessionVerification_Previews.self,
|
||||||
"SecureBackupScreen_Previews" : SecureBackupScreen_Previews.self,
|
"ShimmerOverlay_Previews" : ShimmerOverlay_Previews.self,
|
||||||
"SecurityAndPrivacyScreen_Previews" : SecurityAndPrivacyScreen_Previews.self,
|
"SoftLogoutScreen_Previews" : SoftLogoutScreen_Previews.self,
|
||||||
"SendInviteConfirmationView_Previews" : SendInviteConfirmationView_Previews.self,
|
"SpaceAddRoomsScreenSelectedItem_Previews" : SpaceAddRoomsScreenSelectedItem_Previews.self,
|
||||||
"SeparatorMediaEventsTimelineView_Previews" : SeparatorMediaEventsTimelineView_Previews.self,
|
"SpaceHeaderTopicSheetView_Previews" : SpaceHeaderTopicSheetView_Previews.self,
|
||||||
"SeparatorRoomTimelineView_Previews" : SeparatorRoomTimelineView_Previews.self,
|
"SpaceHeaderView_Previews" : SpaceHeaderView_Previews.self,
|
||||||
"ServerConfirmationScreen_Previews" : ServerConfirmationScreen_Previews.self,
|
"SpaceRemoveChildrenConfirmationView_Previews" : SpaceRemoveChildrenConfirmationView_Previews.self,
|
||||||
"ServerSelection_Previews" : ServerSelection_Previews.self,
|
"SpaceRoomCell_Previews" : SpaceRoomCell_Previews.self,
|
||||||
"SessionVerificationRequestDetailsView_Previews" : SessionVerificationRequestDetailsView_Previews.self,
|
"SpaceSettingsScreen_Previews" : SpaceSettingsScreen_Previews.self,
|
||||||
"SessionVerification_Previews" : SessionVerification_Previews.self,
|
"SpacesScreen_Previews" : SpacesScreen_Previews.self,
|
||||||
"SettingsScreen_Previews" : SettingsScreen_Previews.self,
|
"SplashScreen_Previews" : SplashScreen_Previews.self,
|
||||||
"ShimmerOverlay_Previews" : ShimmerOverlay_Previews.self,
|
"StackedAvatarsView_Previews" : StackedAvatarsView_Previews.self,
|
||||||
"SoftLogoutScreen_Previews" : SoftLogoutScreen_Previews.self,
|
"StartChatScreen_Previews" : StartChatScreen_Previews.self,
|
||||||
"SpaceAddRoomsScreenSelectedItem_Previews" : SpaceAddRoomsScreenSelectedItem_Previews.self,
|
"StateRoomTimelineView_Previews" : StateRoomTimelineView_Previews.self,
|
||||||
"SpaceAddRoomsScreen_Previews" : SpaceAddRoomsScreen_Previews.self,
|
"StaticLocationSheet_Previews" : StaticLocationSheet_Previews.self,
|
||||||
"SpaceHeaderTopicSheetView_Previews" : SpaceHeaderTopicSheetView_Previews.self,
|
"StickerRoomTimelineView_Previews" : StickerRoomTimelineView_Previews.self,
|
||||||
"SpaceHeaderView_Previews" : SpaceHeaderView_Previews.self,
|
"SwipeRightAction_Previews" : SwipeRightAction_Previews.self,
|
||||||
"SpaceRemoveChildrenConfirmationView_Previews" : SpaceRemoveChildrenConfirmationView_Previews.self,
|
"SwipeToReplyView_Previews" : SwipeToReplyView_Previews.self,
|
||||||
"SpaceRoomCell_Previews" : SpaceRoomCell_Previews.self,
|
"TextRoomTimelineView_Previews" : TextRoomTimelineView_Previews.self,
|
||||||
"SpaceScreen_Previews" : SpaceScreen_Previews.self,
|
"ThreadDecorator_Previews" : ThreadDecorator_Previews.self,
|
||||||
"SpaceSettingsScreen_Previews" : SpaceSettingsScreen_Previews.self,
|
"TimelineDeliveryStatusView_Previews" : TimelineDeliveryStatusView_Previews.self,
|
||||||
"SpacesScreen_Previews" : SpacesScreen_Previews.self,
|
"TimelineItemBubbledStylerView_Previews" : TimelineItemBubbledStylerView_Previews.self,
|
||||||
"SplashScreen_Previews" : SplashScreen_Previews.self,
|
"TimelineItemDebugView_Previews" : TimelineItemDebugView_Previews.self,
|
||||||
"StackedAvatarsView_Previews" : StackedAvatarsView_Previews.self,
|
"TimelineItemMenu_Previews" : TimelineItemMenu_Previews.self,
|
||||||
"StartChatScreen_Previews" : StartChatScreen_Previews.self,
|
"TimelineItemSendInfoLabel_Previews" : TimelineItemSendInfoLabel_Previews.self,
|
||||||
"StateRoomTimelineView_Previews" : StateRoomTimelineView_Previews.self,
|
"TimelineItemStyler_Previews" : TimelineItemStyler_Previews.self,
|
||||||
"StaticLocationSheet_Previews" : StaticLocationSheet_Previews.self,
|
"TimelineMediaPreviewRedactConfirmationView_Previews" : TimelineMediaPreviewRedactConfirmationView_Previews.self,
|
||||||
"StickerRoomTimelineView_Previews" : StickerRoomTimelineView_Previews.self,
|
"TimelineReactionView_Previews" : TimelineReactionView_Previews.self,
|
||||||
"SwipeRightAction_Previews" : SwipeRightAction_Previews.self,
|
"TimelineReadReceiptsView_Previews" : TimelineReadReceiptsView_Previews.self,
|
||||||
"SwipeToReplyView_Previews" : SwipeToReplyView_Previews.self,
|
"TimelineReplyView_Previews" : TimelineReplyView_Previews.self,
|
||||||
"TextRoomTimelineView_Previews" : TextRoomTimelineView_Previews.self,
|
"TimelineScrollButton_Previews" : TimelineScrollButton_Previews.self,
|
||||||
"ThreadDecorator_Previews" : ThreadDecorator_Previews.self,
|
"TimelineStartRoomTimelineView_Previews" : TimelineStartRoomTimelineView_Previews.self,
|
||||||
"TimelineDeliveryStatusView_Previews" : TimelineDeliveryStatusView_Previews.self,
|
"TimelineThreadSummaryView_Previews" : TimelineThreadSummaryView_Previews.self,
|
||||||
"TimelineItemBubbledStylerView_Previews" : TimelineItemBubbledStylerView_Previews.self,
|
"TombstonedAvatarImage_Previews" : TombstonedAvatarImage_Previews.self,
|
||||||
"TimelineItemDebugView_Previews" : TimelineItemDebugView_Previews.self,
|
"ToolbarButton_Previews" : ToolbarButton_Previews.self,
|
||||||
"TimelineItemMenu_Previews" : TimelineItemMenu_Previews.self,
|
"TypingIndicatorView_Previews" : TypingIndicatorView_Previews.self,
|
||||||
"TimelineItemSendInfoLabel_Previews" : TimelineItemSendInfoLabel_Previews.self,
|
"UnsupportedRoomTimelineView_Previews" : UnsupportedRoomTimelineView_Previews.self,
|
||||||
"TimelineItemStyler_Previews" : TimelineItemStyler_Previews.self,
|
"UserDetailsEditScreen_Previews" : UserDetailsEditScreen_Previews.self,
|
||||||
"TimelineMediaPreviewDetailsView_Previews" : TimelineMediaPreviewDetailsView_Previews.self,
|
"UserIndicatorModalView_Previews" : UserIndicatorModalView_Previews.self,
|
||||||
"TimelineMediaPreviewRedactConfirmationView_Previews" : TimelineMediaPreviewRedactConfirmationView_Previews.self,
|
"UserIndicatorToastView_Previews" : UserIndicatorToastView_Previews.self,
|
||||||
"TimelineReactionView_Previews" : TimelineReactionView_Previews.self,
|
"UserLocationCell_Previews" : UserLocationCell_Previews.self,
|
||||||
"TimelineReadReceiptsView_Previews" : TimelineReadReceiptsView_Previews.self,
|
"UserProfileCell_Previews" : UserProfileCell_Previews.self,
|
||||||
"TimelineReplyView_Previews" : TimelineReplyView_Previews.self,
|
"VerificationBadge_Previews" : VerificationBadge_Previews.self,
|
||||||
"TimelineScrollButton_Previews" : TimelineScrollButton_Previews.self,
|
"VideoMediaEventsTimelineView_Previews" : VideoMediaEventsTimelineView_Previews.self,
|
||||||
"TimelineStartRoomTimelineView_Previews" : TimelineStartRoomTimelineView_Previews.self,
|
"VideoRoomTimelineView_Previews" : VideoRoomTimelineView_Previews.self,
|
||||||
"TimelineThreadSummaryView_Previews" : TimelineThreadSummaryView_Previews.self,
|
"VisualListItem_Previews" : VisualListItem_Previews.self,
|
||||||
"TombstonedAvatarImage_Previews" : TombstonedAvatarImage_Previews.self,
|
"VoiceMessageButton_Previews" : VoiceMessageButton_Previews.self,
|
||||||
"ToolbarButton_Previews" : ToolbarButton_Previews.self,
|
"VoiceMessageMediaEventsTimelineView_Previews" : VoiceMessageMediaEventsTimelineView_Previews.self,
|
||||||
"TypingIndicatorView_Previews" : TypingIndicatorView_Previews.self,
|
"VoiceMessagePreviewComposer_Previews" : VoiceMessagePreviewComposer_Previews.self,
|
||||||
"UnsupportedRoomTimelineView_Previews" : UnsupportedRoomTimelineView_Previews.self,
|
"VoiceMessageRecordingButton_Previews" : VoiceMessageRecordingButton_Previews.self,
|
||||||
"UserDetailsEditScreen_Previews" : UserDetailsEditScreen_Previews.self,
|
"VoiceMessageRecordingComposer_Previews" : VoiceMessageRecordingComposer_Previews.self,
|
||||||
"UserIndicatorModalView_Previews" : UserIndicatorModalView_Previews.self,
|
"VoiceMessageRecordingView_Previews" : VoiceMessageRecordingView_Previews.self,
|
||||||
"UserIndicatorToastView_Previews" : UserIndicatorToastView_Previews.self,
|
"VoiceMessageRoomPlaybackView_Previews" : VoiceMessageRoomPlaybackView_Previews.self,
|
||||||
"UserLocationCell_Previews" : UserLocationCell_Previews.self,
|
"VoiceMessageRoomTimelineView_Previews" : VoiceMessageRoomTimelineView_Previews.self,
|
||||||
"UserProfileCell_Previews" : UserProfileCell_Previews.self,
|
"VoiceMessageTrashButton_Previews" : VoiceMessageTrashButton_Previews.self,
|
||||||
"UserProfileScreen_Previews" : UserProfileScreen_Previews.self,
|
"WaveformCursorView_Previews" : WaveformCursorView_Previews.self,
|
||||||
"VerificationBadge_Previews" : VerificationBadge_Previews.self,
|
]
|
||||||
"VideoMediaEventsTimelineView_Previews" : VideoMediaEventsTimelineView_Previews.self,
|
// Previews carrying an @available attribute (e.g. those observing state through the iOS 26
|
||||||
"VideoRoomTimelineView_Previews" : VideoRoomTimelineView_Previews.self,
|
// Observations-based observe(_:)) can't be referenced unconditionally in this iOS 18 target.
|
||||||
"VisualListItem_Previews" : VisualListItem_Previews.self,
|
if #available(iOS 26.0, *) {
|
||||||
"VoiceMessageButton_Previews" : VoiceMessageButton_Previews.self,
|
dictionary["EmojiPickerScreen_Previews"] = EmojiPickerScreen_Previews.self
|
||||||
"VoiceMessageMediaEventsTimelineView_Previews" : VoiceMessageMediaEventsTimelineView_Previews.self,
|
dictionary["IdentityConfirmationScreen_Previews"] = IdentityConfirmationScreen_Previews.self
|
||||||
"VoiceMessagePreviewComposer_Previews" : VoiceMessagePreviewComposer_Previews.self,
|
dictionary["LinkNewDeviceScreen_Previews"] = LinkNewDeviceScreen_Previews.self
|
||||||
"VoiceMessageRecordingButton_Previews" : VoiceMessageRecordingButton_Previews.self,
|
dictionary["LoginScreen_Previews"] = LoginScreen_Previews.self
|
||||||
"VoiceMessageRecordingComposer_Previews" : VoiceMessageRecordingComposer_Previews.self,
|
dictionary["NotificationSettingsScreen_Previews"] = NotificationSettingsScreen_Previews.self
|
||||||
"VoiceMessageRecordingView_Previews" : VoiceMessageRecordingView_Previews.self,
|
dictionary["RoomDetailsScreen_Previews"] = RoomDetailsScreen_Previews.self
|
||||||
"VoiceMessageRoomPlaybackView_Previews" : VoiceMessageRoomPlaybackView_Previews.self,
|
dictionary["SecureBackupLogoutConfirmationScreen_Previews"] = SecureBackupLogoutConfirmationScreen_Previews.self
|
||||||
"VoiceMessageRoomTimelineView_Previews" : VoiceMessageRoomTimelineView_Previews.self,
|
dictionary["SecureBackupRecoveryKeyScreen_Previews"] = SecureBackupRecoveryKeyScreen_Previews.self
|
||||||
"VoiceMessageTrashButton_Previews" : VoiceMessageTrashButton_Previews.self,
|
dictionary["SecureBackupScreen_Previews"] = SecureBackupScreen_Previews.self
|
||||||
"WaveformCursorView_Previews" : WaveformCursorView_Previews.self,
|
dictionary["ServerSelection_Previews"] = ServerSelection_Previews.self
|
||||||
]
|
dictionary["SettingsScreen_Previews"] = SettingsScreen_Previews.self
|
||||||
|
dictionary["SpaceAddRoomsScreen_Previews"] = SpaceAddRoomsScreen_Previews.self
|
||||||
|
dictionary["SpaceScreen_Previews"] = SpaceScreen_Previews.self
|
||||||
|
dictionary["TimelineMediaPreviewDetailsView_Previews"] = TimelineMediaPreviewDetailsView_Previews.self
|
||||||
|
dictionary["UserProfileScreen_Previews"] = UserProfileScreen_Previews.self
|
||||||
|
}
|
||||||
|
return dictionary
|
||||||
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
// swiftlint:enable all
|
// swiftlint:enable all
|
||||||
|
|||||||
@@ -123,6 +123,7 @@ struct LoginScreen: View {
|
|||||||
|
|
||||||
// MARK: - Previews
|
// MARK: - Previews
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct LoginScreen_Previews: PreviewProvider, TestablePreview {
|
struct LoginScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let viewModel = makeViewModel()
|
static let viewModel = makeViewModel()
|
||||||
static let credentialsViewModel = makeViewModel(withCredentials: true)
|
static let credentialsViewModel = makeViewModel(withCredentials: true)
|
||||||
|
|||||||
+1
@@ -91,6 +91,7 @@ struct ServerSelectionScreen: View {
|
|||||||
|
|
||||||
// MARK: - Previews
|
// MARK: - Previews
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct ServerSelection_Previews: PreviewProvider, TestablePreview {
|
struct ServerSelection_Previews: PreviewProvider, TestablePreview {
|
||||||
static let matrixViewModel = makeViewModel(for: "https://matrix.org")
|
static let matrixViewModel = makeViewModel(for: "https://matrix.org")
|
||||||
static let emptyViewModel = makeViewModel(for: "")
|
static let emptyViewModel = makeViewModel(for: "")
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ struct EmojiPickerScreen: View {
|
|||||||
|
|
||||||
// MARK: - Previews
|
// MARK: - Previews
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct EmojiPickerScreen_Previews: PreviewProvider, TestablePreview {
|
struct EmojiPickerScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let viewModel = EmojiPickerScreenViewModel(itemID: .randomEvent,
|
static let viewModel = EmojiPickerScreenViewModel(itemID: .randomEvent,
|
||||||
selectedEmojis: ["😀", "😄"],
|
selectedEmojis: ["😀", "😄"],
|
||||||
|
|||||||
@@ -169,6 +169,7 @@ struct TimelineMediaPreviewDetailsView: View {
|
|||||||
|
|
||||||
import UniformTypeIdentifiers
|
import UniformTypeIdentifiers
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct TimelineMediaPreviewDetailsView_Previews: PreviewProvider, TestablePreview {
|
struct TimelineMediaPreviewDetailsView_Previews: PreviewProvider, TestablePreview {
|
||||||
static let viewModel = makeViewModel(contentType: .jpeg, isOutgoing: true)
|
static let viewModel = makeViewModel(contentType: .jpeg, isOutgoing: true)
|
||||||
static let loadingViewModel = makeViewModel(contentType: .jpeg, isOutgoing: true, isDownloaded: false)
|
static let loadingViewModel = makeViewModel(contentType: .jpeg, isOutgoing: true, isDownloaded: false)
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ struct LinkNewDeviceScreen: View {
|
|||||||
|
|
||||||
// MARK: - Previews
|
// MARK: - Previews
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct LinkNewDeviceScreen_Previews: PreviewProvider, TestablePreview {
|
struct LinkNewDeviceScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let viewModel = makeViewModel(mode: .readyToLink(.idle))
|
static let viewModel = makeViewModel(mode: .readyToLink(.idle))
|
||||||
static let verifyingViewModel = makeViewModel(mode: .readyToLink(.verifyingDeviceOwner))
|
static let verifyingViewModel = makeViewModel(mode: .readyToLink(.verifyingDeviceOwner))
|
||||||
|
|||||||
+1
@@ -116,6 +116,7 @@ struct IdentityConfirmationScreen: View {
|
|||||||
|
|
||||||
// MARK: - Previews
|
// MARK: - Previews
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct IdentityConfirmationScreen_Previews: PreviewProvider, TestablePreview {
|
struct IdentityConfirmationScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static var viewModel = makeViewModel()
|
static var viewModel = makeViewModel()
|
||||||
static var loadingViewModel = makeViewModel(recoveryState: .unknown)
|
static var loadingViewModel = makeViewModel(recoveryState: .unknown)
|
||||||
|
|||||||
@@ -359,6 +359,7 @@ struct RoomDetailsScreen: View {
|
|||||||
|
|
||||||
import MatrixRustSDK
|
import MatrixRustSDK
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct RoomDetailsScreen_Previews: PreviewProvider, TestablePreview {
|
struct RoomDetailsScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let genericWorldReadableRoomViewModel = makeGenericRoomViewModel(historyVisibility: .worldReadable)
|
static let genericWorldReadableRoomViewModel = makeGenericRoomViewModel(historyVisibility: .worldReadable)
|
||||||
static let genericJoinedRoomViewModel = makeGenericRoomViewModel(historyVisibility: .joined)
|
static let genericJoinedRoomViewModel = makeGenericRoomViewModel(historyVisibility: .joined)
|
||||||
|
|||||||
+1
@@ -110,6 +110,7 @@ struct SecureBackupLogoutConfirmationScreen: View {
|
|||||||
|
|
||||||
// MARK: - Previews
|
// MARK: - Previews
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct SecureBackupLogoutConfirmationScreen_Previews: PreviewProvider, TestablePreview {
|
struct SecureBackupLogoutConfirmationScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let viewModel = makeViewModel(mode: .saveRecoveryKey)
|
static let viewModel = makeViewModel(mode: .saveRecoveryKey)
|
||||||
static let waitingViewModel = makeViewModel(mode: .waitingToStart(hasStalled: false))
|
static let waitingViewModel = makeViewModel(mode: .waitingToStart(hasStalled: false))
|
||||||
|
|||||||
+1
@@ -237,6 +237,7 @@ private struct RecoveryKeyView: View {
|
|||||||
|
|
||||||
// MARK: - Previews
|
// MARK: - Previews
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct SecureBackupRecoveryKeyScreen_Previews: PreviewProvider, TestablePreview {
|
struct SecureBackupRecoveryKeyScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let key = "EsTM njec uHYA yHmh dQdW Nj4o bNRU 9jMN XGMc KUNM UFr5 R8GY"
|
static let key = "EsTM njec uHYA yHmh dQdW Nj4o bNRU 9jMN XGMc KUNM UFr5 R8GY"
|
||||||
static let notSetUpViewModel = viewModel(recoveryState: .disabled)
|
static let notSetUpViewModel = viewModel(recoveryState: .disabled)
|
||||||
|
|||||||
@@ -116,6 +116,7 @@ struct SecureBackupScreen: View {
|
|||||||
|
|
||||||
// MARK: - Previews
|
// MARK: - Previews
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct SecureBackupScreen_Previews: PreviewProvider, TestablePreview {
|
struct SecureBackupScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let bothSetupViewModel = viewModel(keyBackupState: .enabled, recoveryState: .enabled)
|
static let bothSetupViewModel = viewModel(keyBackupState: .enabled, recoveryState: .enabled)
|
||||||
static let onlyKeyBackupSetUpViewModel = viewModel(keyBackupState: .enabled, recoveryState: .disabled)
|
static let onlyKeyBackupSetUpViewModel = viewModel(keyBackupState: .enabled, recoveryState: .disabled)
|
||||||
|
|||||||
+1
@@ -264,6 +264,7 @@ struct NotificationSettingsScreen: View {
|
|||||||
|
|
||||||
// MARK: - Previews
|
// MARK: - Previews
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct NotificationSettingsScreen_Previews: PreviewProvider, TestablePreview {
|
struct NotificationSettingsScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let viewModel: NotificationSettingsScreenViewModel = {
|
static let viewModel: NotificationSettingsScreenViewModel = {
|
||||||
let appSettings = AppSettings.volatile()
|
let appSettings = AppSettings.volatile()
|
||||||
|
|||||||
@@ -255,6 +255,7 @@ struct SettingsScreen: View {
|
|||||||
|
|
||||||
// MARK: - Previews
|
// MARK: - Previews
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct SettingsScreen_Previews: PreviewProvider, TestablePreview {
|
struct SettingsScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let viewModel = makeViewModel()
|
static let viewModel = makeViewModel()
|
||||||
static let bugReportDisabledViewModel = makeViewModel(isBugReportServiceEnabled: false)
|
static let bugReportDisabledViewModel = makeViewModel(isBugReportServiceEnabled: false)
|
||||||
|
|||||||
@@ -157,6 +157,7 @@ private struct SpaceAddRoomsListRow: View {
|
|||||||
|
|
||||||
// MARK: - Previews
|
// MARK: - Previews
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct SpaceAddRoomsScreen_Previews: PreviewProvider, TestablePreview {
|
struct SpaceAddRoomsScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let summaryProvider = RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))
|
static let summaryProvider = RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))
|
||||||
static let viewModel = makeViewModel()
|
static let viewModel = makeViewModel()
|
||||||
|
|||||||
@@ -184,6 +184,7 @@ struct SpaceScreen: View {
|
|||||||
|
|
||||||
// MARK: - Previews
|
// MARK: - Previews
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct SpaceScreen_Previews: PreviewProvider, TestablePreview {
|
struct SpaceScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let viewModel = makeViewModel()
|
static let viewModel = makeViewModel()
|
||||||
static let managingViewModel = makeViewModel(isManagingRooms: true)
|
static let managingViewModel = makeViewModel(isManagingRooms: true)
|
||||||
|
|||||||
@@ -106,6 +106,7 @@ struct UserProfileScreen: View {
|
|||||||
|
|
||||||
// MARK: - Previews
|
// MARK: - Previews
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct UserProfileScreen_Previews: PreviewProvider, TestablePreview {
|
struct UserProfileScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let verifiedUserViewModel = makeViewModel(userID: RoomMemberProxyMock.mockDan.userID)
|
static let verifiedUserViewModel = makeViewModel(userID: RoomMemberProxyMock.mockDan.userID)
|
||||||
static let otherUserViewModel = makeViewModel(userID: RoomMemberProxyMock.mockAlice.userID)
|
static let otherUserViewModel = makeViewModel(userID: RoomMemberProxyMock.mockAlice.userID)
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ targets:
|
|||||||
base:
|
base:
|
||||||
PRODUCT_NAME: PreviewTests
|
PRODUCT_NAME: PreviewTests
|
||||||
PRODUCT_BUNDLE_IDENTIFIER: ${BASE_BUNDLE_IDENTIFIER}.preview.tests
|
PRODUCT_BUNDLE_IDENTIFIER: ${BASE_BUNDLE_IDENTIFIER}.preview.tests
|
||||||
|
# Requires iOS 26 as the generated tests reference previews gated to the Observations-based observe(_:).
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET: '26.0'
|
||||||
SWIFT_VERSION: 6.2
|
SWIFT_VERSION: 6.2
|
||||||
SWIFT_APPROACHABLE_CONCURRENCY: YES
|
SWIFT_APPROACHABLE_CONCURRENCY: YES
|
||||||
SWIFT_DEFAULT_ACTOR_ISOLATION: MainActor
|
SWIFT_DEFAULT_ACTOR_ISOLATION: MainActor
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ struct TemplateScreen: View {
|
|||||||
|
|
||||||
// MARK: - Previews
|
// MARK: - Previews
|
||||||
|
|
||||||
|
@available(iOS 26.0, *)
|
||||||
struct TemplateScreen_Previews: PreviewProvider, TestablePreview {
|
struct TemplateScreen_Previews: PreviewProvider, TestablePreview {
|
||||||
static let viewModel = makeViewModel()
|
static let viewModel = makeViewModel()
|
||||||
static let incrementedViewModel = makeViewModel(counterValue: 1)
|
static let incrementedViewModel = makeViewModel(counterValue: 1)
|
||||||
|
|||||||
@@ -18,11 +18,21 @@ import {{ import }}
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
enum TestablePreviewsDictionary {
|
enum TestablePreviewsDictionary {
|
||||||
static let dictionary: [String: any PreviewProvider.Type] = [
|
static let dictionary: [String: any PreviewProvider.Type] = {
|
||||||
{% for type in types.types where (type.implements.TestablePreview or type.based.TestablePreview or type|annotated:"TestablePreview") and type.name != "TestablePreview" %}
|
var dictionary: [String: any PreviewProvider.Type] = [
|
||||||
"{{ type.name }}" : {{ type.name }}.self,
|
{% for type in types.types where (type.implements.TestablePreview or type.based.TestablePreview or type|annotated:"TestablePreview") and type.name != "TestablePreview" and not type.attributes.available %}
|
||||||
{% endfor %}
|
"{{ type.name }}" : {{ type.name }}.self,
|
||||||
]
|
{% endfor %}
|
||||||
|
]
|
||||||
|
// Previews carrying an @available attribute (e.g. those observing state through the iOS 26
|
||||||
|
// Observations-based observe(_:)) can't be referenced unconditionally in this iOS 18 target.
|
||||||
|
if #available(iOS 26.0, *) {
|
||||||
|
{% for type in types.types where (type.implements.TestablePreview or type.based.TestablePreview or type|annotated:"TestablePreview") and type.name != "TestablePreview" and type.attributes.available %}
|
||||||
|
dictionary["{{ type.name }}"] = {{ type.name }}.self
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
return dictionary
|
||||||
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
// swiftlint:enable all
|
// swiftlint:enable all
|
||||||
|
|||||||
@@ -112,8 +112,10 @@ struct NotificationSettingsEditScreenViewModelTests {
|
|||||||
|
|
||||||
try await deferred.fulfill()
|
try await deferred.fulfill()
|
||||||
|
|
||||||
|
#expect(viewModel.context.viewState.pendingMode == nil)
|
||||||
|
|
||||||
var deferredViewState = deferFulfillment(viewModel.context.observe(\.viewState.pendingMode),
|
var deferredViewState = deferFulfillment(viewModel.context.observe(\.viewState.pendingMode),
|
||||||
transitionValues: [nil, .allMessages, nil])
|
transitionValues: [.allMessages, nil])
|
||||||
|
|
||||||
context.send(viewAction: .setMode(.allMessages))
|
context.send(viewAction: .setMode(.allMessages))
|
||||||
|
|
||||||
@@ -150,8 +152,10 @@ struct NotificationSettingsEditScreenViewModelTests {
|
|||||||
|
|
||||||
try await deferred.fulfill()
|
try await deferred.fulfill()
|
||||||
|
|
||||||
|
#expect(viewModel.context.viewState.pendingMode == nil)
|
||||||
|
|
||||||
var deferredViewState = deferFulfillment(viewModel.context.observe(\.viewState.pendingMode),
|
var deferredViewState = deferFulfillment(viewModel.context.observe(\.viewState.pendingMode),
|
||||||
transitionValues: [nil, .mentionsAndKeywordsOnly, nil])
|
transitionValues: [.mentionsAndKeywordsOnly, nil])
|
||||||
|
|
||||||
context.send(viewAction: .setMode(.mentionsAndKeywordsOnly))
|
context.send(viewAction: .setMode(.mentionsAndKeywordsOnly))
|
||||||
|
|
||||||
@@ -190,8 +194,10 @@ struct NotificationSettingsEditScreenViewModelTests {
|
|||||||
|
|
||||||
try await deferred.fulfill()
|
try await deferred.fulfill()
|
||||||
|
|
||||||
|
#expect(viewModel.context.viewState.pendingMode == nil)
|
||||||
|
|
||||||
let deferredViewState = deferFulfillment(viewModel.context.observe(\.viewState.pendingMode),
|
let deferredViewState = deferFulfillment(viewModel.context.observe(\.viewState.pendingMode),
|
||||||
transitionValues: [nil, .allMessages, nil])
|
transitionValues: [.allMessages, nil])
|
||||||
|
|
||||||
context.send(viewAction: .setMode(.allMessages))
|
context.send(viewAction: .setMode(.allMessages))
|
||||||
|
|
||||||
@@ -222,8 +228,10 @@ struct NotificationSettingsEditScreenViewModelTests {
|
|||||||
|
|
||||||
try await deferred.fulfill()
|
try await deferred.fulfill()
|
||||||
|
|
||||||
|
#expect(viewModel.context.viewState.pendingMode == nil)
|
||||||
|
|
||||||
let deferredViewState = deferFulfillment(viewModel.context.observe(\.viewState.pendingMode),
|
let deferredViewState = deferFulfillment(viewModel.context.observe(\.viewState.pendingMode),
|
||||||
transitionValues: [nil, .allMessages, nil])
|
transitionValues: [.allMessages, nil])
|
||||||
|
|
||||||
context.send(viewAction: .setMode(.allMessages))
|
context.send(viewAction: .setMode(.allMessages))
|
||||||
|
|
||||||
|
|||||||
@@ -141,8 +141,10 @@ struct RoomNotificationSettingsScreenViewModelTests {
|
|||||||
notificationSettingsProxyMock.callbacks.send(.settingsDidChange)
|
notificationSettingsProxyMock.callbacks.send(.settingsDidChange)
|
||||||
try await deferred.fulfill()
|
try await deferred.fulfill()
|
||||||
|
|
||||||
|
#expect(viewModel.context.viewState.isRestoringDefaultSetting == false)
|
||||||
|
|
||||||
let deferredIsRestoringDefaultSettings = deferFulfillment(viewModel.context.observe(\.viewState.isRestoringDefaultSetting),
|
let deferredIsRestoringDefaultSettings = deferFulfillment(viewModel.context.observe(\.viewState.isRestoringDefaultSetting),
|
||||||
transitionValues: [false, true, false])
|
transitionValues: [true, false])
|
||||||
|
|
||||||
viewModel.state.bindings.allowCustomSetting = false
|
viewModel.state.bindings.allowCustomSetting = false
|
||||||
viewModel.context.send(viewAction: .changedAllowCustomSettings)
|
viewModel.context.send(viewAction: .changedAllowCustomSettings)
|
||||||
@@ -200,8 +202,10 @@ struct RoomNotificationSettingsScreenViewModelTests {
|
|||||||
notificationSettingsProxyMock.callbacks.send(.settingsDidChange)
|
notificationSettingsProxyMock.callbacks.send(.settingsDidChange)
|
||||||
try await deferred.fulfill()
|
try await deferred.fulfill()
|
||||||
|
|
||||||
|
#expect(viewModel.context.viewState.pendingCustomMode == nil)
|
||||||
|
|
||||||
var deferredMode = deferFulfillment(viewModel.context.observe(\.viewState.pendingCustomMode),
|
var deferredMode = deferFulfillment(viewModel.context.observe(\.viewState.pendingCustomMode),
|
||||||
transitionValues: [nil, .allMessages, nil])
|
transitionValues: [.allMessages, nil])
|
||||||
viewModel.context.send(viewAction: .setCustomMode(.allMessages))
|
viewModel.context.send(viewAction: .setCustomMode(.allMessages))
|
||||||
|
|
||||||
try await deferredMode.fulfill()
|
try await deferredMode.fulfill()
|
||||||
@@ -210,8 +214,10 @@ struct RoomNotificationSettingsScreenViewModelTests {
|
|||||||
#expect(notificationSettingsProxyMock.setNotificationModeRoomIdModeReceivedArguments?.1 == .allMessages)
|
#expect(notificationSettingsProxyMock.setNotificationModeRoomIdModeReceivedArguments?.1 == .allMessages)
|
||||||
#expect(notificationSettingsProxyMock.setNotificationModeRoomIdModeCallsCount == 1)
|
#expect(notificationSettingsProxyMock.setNotificationModeRoomIdModeCallsCount == 1)
|
||||||
|
|
||||||
|
#expect(viewModel.context.viewState.pendingCustomMode == nil)
|
||||||
|
|
||||||
deferredMode = deferFulfillment(viewModel.context.observe(\.viewState.pendingCustomMode),
|
deferredMode = deferFulfillment(viewModel.context.observe(\.viewState.pendingCustomMode),
|
||||||
transitionValues: [nil, .mute, nil])
|
transitionValues: [.mute, nil])
|
||||||
viewModel.context.send(viewAction: .setCustomMode(.mute))
|
viewModel.context.send(viewAction: .setCustomMode(.mute))
|
||||||
|
|
||||||
try await deferredMode.fulfill()
|
try await deferredMode.fulfill()
|
||||||
@@ -222,8 +228,10 @@ struct RoomNotificationSettingsScreenViewModelTests {
|
|||||||
|
|
||||||
try await Task.sleep(for: .milliseconds(10)) // Workaround for flaky test
|
try await Task.sleep(for: .milliseconds(10)) // Workaround for flaky test
|
||||||
|
|
||||||
|
#expect(viewModel.context.viewState.pendingCustomMode == nil)
|
||||||
|
|
||||||
deferredMode = deferFulfillment(viewModel.context.observe(\.viewState.pendingCustomMode),
|
deferredMode = deferFulfillment(viewModel.context.observe(\.viewState.pendingCustomMode),
|
||||||
transitionValues: [nil, .mentionsAndKeywordsOnly, nil])
|
transitionValues: [.mentionsAndKeywordsOnly, nil])
|
||||||
viewModel.context.send(viewAction: .setCustomMode(.mentionsAndKeywordsOnly))
|
viewModel.context.send(viewAction: .setCustomMode(.mentionsAndKeywordsOnly))
|
||||||
|
|
||||||
try await deferredMode.fulfill()
|
try await deferredMode.fulfill()
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ targets:
|
|||||||
base:
|
base:
|
||||||
PRODUCT_NAME: UnitTests
|
PRODUCT_NAME: UnitTests
|
||||||
PRODUCT_BUNDLE_IDENTIFIER: ${BASE_BUNDLE_IDENTIFIER}.unit.tests
|
PRODUCT_BUNDLE_IDENTIFIER: ${BASE_BUNDLE_IDENTIFIER}.unit.tests
|
||||||
|
# Requires iOS 26 so tests exercise the Observations-based observe(_:) overload.
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET: '26.0'
|
||||||
SWIFT_VERSION: 6.2
|
SWIFT_VERSION: 6.2
|
||||||
SWIFT_APPROACHABLE_CONCURRENCY: YES
|
SWIFT_APPROACHABLE_CONCURRENCY: YES
|
||||||
SWIFT_DEFAULT_ACTOR_ISOLATION: MainActor
|
SWIFT_DEFAULT_ACTOR_ISOLATION: MainActor
|
||||||
|
|||||||
Reference in New Issue
Block a user