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:
Mauro
2026-06-30 14:01:08 +02:00
committed by GitHub
parent c26677753a
commit 2d486ece33
24 changed files with 308 additions and 239 deletions
@@ -7,13 +7,25 @@
//
import Foundation
import Observation
import Synchronization
extension Observable {
/// Creates an async stream for the specified property on this object. We probably won't need this once SE-0475 is available:
/// https://github.com/swiftlang/swift-evolution/blob/main/proposals/0475-observed.md
/// A convenience wrapper around the `Observations` sequence (SE-0475).
///
/// - 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> {
let (stream, continuation) = AsyncStream<Value>.makeStream()
let (changeSignals, changeSignaller) = AsyncStream<Void>.makeStream()
@@ -8,230 +8,237 @@ import SwiftUI
enum TestablePreviewsDictionary {
static let dictionary: [String: any PreviewProvider.Type] = [
"AdvancedSettingsScreen_Previews" : AdvancedSettingsScreen_Previews.self,
"AnalyticsPromptScreen_Previews" : AnalyticsPromptScreen_Previews.self,
"AnalyticsSettingsScreen_Previews" : AnalyticsSettingsScreen_Previews.self,
"AppLockScreen_Previews" : AppLockScreen_Previews.self,
"AppLockSetupBiometricsScreen_Previews" : AppLockSetupBiometricsScreen_Previews.self,
"AppLockSetupPINScreen_Previews" : AppLockSetupPINScreen_Previews.self,
"AppLockSetupSettingsScreen_Previews" : AppLockSetupSettingsScreen_Previews.self,
"AudioMediaEventsTimelineView_Previews" : AudioMediaEventsTimelineView_Previews.self,
"AudioRoomTimelineView_Previews" : AudioRoomTimelineView_Previews.self,
"AuthenticationClassicAppBackupInstructionsView_Previews" : AuthenticationClassicAppBackupInstructionsView_Previews.self,
"AuthenticationStartScreen_Previews" : AuthenticationStartScreen_Previews.self,
"AvatarHeaderView_Previews" : AvatarHeaderView_Previews.self,
"BadgeLabel_Previews" : BadgeLabel_Previews.self,
"BlockedUsersScreen_Previews" : BlockedUsersScreen_Previews.self,
"BloomModifier_Previews" : BloomModifier_Previews.self,
"BugReportScreen_Previews" : BugReportScreen_Previews.self,
"CallInviteRoomTimelineView_Previews" : CallInviteRoomTimelineView_Previews.self,
"CallNotificationRoomTimelineView_Previews" : CallNotificationRoomTimelineView_Previews.self,
"ChatsSpaceFilterCell_Previews" : ChatsSpaceFilterCell_Previews.self,
"ChatsSpaceFiltersScreen_Previews" : ChatsSpaceFiltersScreen_Previews.self,
"CollapsibleRoomTimelineView_Previews" : CollapsibleRoomTimelineView_Previews.self,
"CompletionSuggestion_Previews" : CompletionSuggestion_Previews.self,
"ComposerToolbar_Previews" : ComposerToolbar_Previews.self,
"CopyTextButton_Previews" : CopyTextButton_Previews.self,
"CreateRoomSpaceSelectionSheet_Previews" : CreateRoomSpaceSelectionSheet_Previews.self,
"CreateRoom_Previews" : CreateRoom_Previews.self,
"DeactivateAccountScreen_Previews" : DeactivateAccountScreen_Previews.self,
"DeclineAndBlockScreen_Previews" : DeclineAndBlockScreen_Previews.self,
"EditRoomAddressScreen_Previews" : EditRoomAddressScreen_Previews.self,
"EmojiPickerScreenHeaderView_Previews" : EmojiPickerScreenHeaderView_Previews.self,
"EmojiPickerScreen_Previews" : EmojiPickerScreen_Previews.self,
"EmoteRoomTimelineView_Previews" : EmoteRoomTimelineView_Previews.self,
"EncryptedRoomTimelineView_Previews" : EncryptedRoomTimelineView_Previews.self,
"EncryptionResetPasswordScreen_Previews" : EncryptionResetPasswordScreen_Previews.self,
"EncryptionResetScreen_Previews" : EncryptionResetScreen_Previews.self,
"EstimatedWaveformView_Previews" : EstimatedWaveformView_Previews.self,
"FileMediaEventsTimelineView_Previews" : FileMediaEventsTimelineView_Previews.self,
"FileRoomTimelineView_Previews" : FileRoomTimelineView_Previews.self,
"FloatingDateBadge_Previews" : FloatingDateBadge_Previews.self,
"FormButtonStyles_Previews" : FormButtonStyles_Previews.self,
"FormattedBodyText_Previews" : FormattedBodyText_Previews.self,
"FormattingToolbar_Previews" : FormattingToolbar_Previews.self,
"FullscreenDialog_Previews" : FullscreenDialog_Previews.self,
"HighlightedTimelineItemModifier_Previews" : HighlightedTimelineItemModifier_Previews.self,
"HomeScreenEmptyStateView_Previews" : HomeScreenEmptyStateView_Previews.self,
"HomeScreenInviteCell_Previews" : HomeScreenInviteCell_Previews.self,
"HomeScreenKnockedCell_Previews" : HomeScreenKnockedCell_Previews.self,
"HomeScreenNewSoundBanner_Previews" : HomeScreenNewSoundBanner_Previews.self,
"HomeScreenRecoveryKeyConfirmationBanner_Previews" : HomeScreenRecoveryKeyConfirmationBanner_Previews.self,
"HomeScreenRoomCell_Previews" : HomeScreenRoomCell_Previews.self,
"HomeScreen_Previews" : HomeScreen_Previews.self,
"IdentityConfirmationScreen_Previews" : IdentityConfirmationScreen_Previews.self,
"IdentityConfirmedScreen_Previews" : IdentityConfirmedScreen_Previews.self,
"ImageMediaEventsTimelineView_Previews" : ImageMediaEventsTimelineView_Previews.self,
"ImageRoomTimelineView_Previews" : ImageRoomTimelineView_Previews.self,
"InviteUsersConfirmationSheetView_Previews" : InviteUsersConfirmationSheetView_Previews.self,
"InviteUsersScreenSelectedItem_Previews" : InviteUsersScreenSelectedItem_Previews.self,
"InviteUsersScreen_Previews" : InviteUsersScreen_Previews.self,
"JoinRoomByAddressView_Previews" : JoinRoomByAddressView_Previews.self,
"JoinRoomScreenSpace_Previews" : JoinRoomScreenSpace_Previews.self,
"JoinRoomScreen_Previews" : JoinRoomScreen_Previews.self,
"JoinedMembersBadgeView_Previews" : JoinedMembersBadgeView_Previews.self,
"KnockRequestCell_Previews" : KnockRequestCell_Previews.self,
"KnockRequestsBannerView_Previews" : KnockRequestsBannerView_Previews.self,
"KnockRequestsListEmptyStateView_Previews" : KnockRequestsListEmptyStateView_Previews.self,
"KnockRequestsListScreen_Previews" : KnockRequestsListScreen_Previews.self,
"LabsScreen_Previews" : LabsScreen_Previews.self,
"LeaveSpaceRoomDetailsCell_Previews" : LeaveSpaceRoomDetailsCell_Previews.self,
"LeaveSpaceView_Previews" : LeaveSpaceView_Previews.self,
"LegalInformationScreen_Previews" : LegalInformationScreen_Previews.self,
"LinkNewDeviceScreen_Previews" : LinkNewDeviceScreen_Previews.self,
"LiveLocationRoomTimelineView_Previews" : LiveLocationRoomTimelineView_Previews.self,
"LiveLocationSharingBannerView_Previews" : LiveLocationSharingBannerView_Previews.self,
"LiveLocationSheet_Previews" : LiveLocationSheet_Previews.self,
"LoadableImage_Previews" : LoadableImage_Previews.self,
"LocationMarkerView_Previews" : LocationMarkerView_Previews.self,
"LocationPickerSheet_Previews" : LocationPickerSheet_Previews.self,
"LocationRoomTimelineView_Previews" : LocationRoomTimelineView_Previews.self,
"LocationSharingScreen_Previews" : LocationSharingScreen_Previews.self,
"LoginScreen_Previews" : LoginScreen_Previews.self,
"LongPressWithFeedback_Previews" : LongPressWithFeedback_Previews.self,
"ManageAuthorizedSpacesScreen_Previews" : ManageAuthorizedSpacesScreen_Previews.self,
"ManageRoomMemberSheetView_Previews" : ManageRoomMemberSheetView_Previews.self,
"MapLibreStaticMapView_Previews" : MapLibreStaticMapView_Previews.self,
"MatrixUserPermalink_Previews" : MatrixUserPermalink_Previews.self,
"MediaEventsTimelineScreen_Previews" : MediaEventsTimelineScreen_Previews.self,
"MediaUploadPreviewScreen_Previews" : MediaUploadPreviewScreen_Previews.self,
"MentionSuggestionItemView_Previews" : MentionSuggestionItemView_Previews.self,
"MessageComposerTextField_Previews" : MessageComposerTextField_Previews.self,
"MessageComposer_Previews" : MessageComposer_Previews.self,
"MessageForwardingScreen_Previews" : MessageForwardingScreen_Previews.self,
"MessageText_Previews" : MessageText_Previews.self,
"NoticeRoomTimelineView_Previews" : NoticeRoomTimelineView_Previews.self,
"NotificationPermissionsScreen_Previews" : NotificationPermissionsScreen_Previews.self,
"NotificationSettingsEditScreenRoomCell_Previews" : NotificationSettingsEditScreenRoomCell_Previews.self,
"NotificationSettingsEditScreen_Previews" : NotificationSettingsEditScreen_Previews.self,
"NotificationSettingsScreen_Previews" : NotificationSettingsScreen_Previews.self,
"PINTextField_Previews" : PINTextField_Previews.self,
"PaginationIndicatorRoomTimelineView_Previews" : PaginationIndicatorRoomTimelineView_Previews.self,
"PillViewOnBubble_Previews" : PillViewOnBubble_Previews.self,
"PillView_Previews" : PillView_Previews.self,
"PinnedEventsTimelineScreen_Previews" : PinnedEventsTimelineScreen_Previews.self,
"PinnedItemsBannerView_Previews" : PinnedItemsBannerView_Previews.self,
"PinnedItemsIndicatorView_Previews" : PinnedItemsIndicatorView_Previews.self,
"PlaceholderAvatarImage_Previews" : PlaceholderAvatarImage_Previews.self,
"PlaceholderScreen_Previews" : PlaceholderScreen_Previews.self,
"PlaybackSpeedButton_Previews" : PlaybackSpeedButton_Previews.self,
"PollFormScreen_Previews" : PollFormScreen_Previews.self,
"PollOptionView_Previews" : PollOptionView_Previews.self,
"PollRoomTimelineView_Previews" : PollRoomTimelineView_Previews.self,
"PollView_Previews" : PollView_Previews.self,
"QRCodeErrorView_Previews" : QRCodeErrorView_Previews.self,
"QRCodeLoginScreen_Previews" : QRCodeLoginScreen_Previews.self,
"ReactionsSummaryView_Previews" : ReactionsSummaryView_Previews.self,
"ReadMarkerRoomTimelineView_Previews" : ReadMarkerRoomTimelineView_Previews.self,
"ReadReceiptCell_Previews" : ReadReceiptCell_Previews.self,
"ReadReceiptsSummaryView_Previews" : ReadReceiptsSummaryView_Previews.self,
"RedactedRoomTimelineView_Previews" : RedactedRoomTimelineView_Previews.self,
"ReportContentScreen_Previews" : ReportContentScreen_Previews.self,
"ReportRoomScreen_Previews" : ReportRoomScreen_Previews.self,
"ResolveVerifiedUserSendFailureScreen_Previews" : ResolveVerifiedUserSendFailureScreen_Previews.self,
"RoomAttachmentPicker_Previews" : RoomAttachmentPicker_Previews.self,
"RoomAvatarImage_Previews" : RoomAvatarImage_Previews.self,
"RoomChangePermissionsScreen_Previews" : RoomChangePermissionsScreen_Previews.self,
"RoomChangeRolesScreenRow_Previews" : RoomChangeRolesScreenRow_Previews.self,
"RoomChangeRolesScreenSelectedItem_Previews" : RoomChangeRolesScreenSelectedItem_Previews.self,
"RoomChangeRolesScreen_Previews" : RoomChangeRolesScreen_Previews.self,
"RoomDetailsEditScreen_Previews" : RoomDetailsEditScreen_Previews.self,
"RoomDetailsScreen_Previews" : RoomDetailsScreen_Previews.self,
"RoomDirectorySearchCell_Previews" : RoomDirectorySearchCell_Previews.self,
"RoomDirectorySearchScreen_Previews" : RoomDirectorySearchScreen_Previews.self,
"RoomHeaderView_Previews" : RoomHeaderView_Previews.self,
"RoomInviterLabel_Previews" : RoomInviterLabel_Previews.self,
"RoomListFilterView_Previews" : RoomListFilterView_Previews.self,
"RoomListFiltersEmptyStateView_Previews" : RoomListFiltersEmptyStateView_Previews.self,
"RoomListFiltersView_Previews" : RoomListFiltersView_Previews.self,
"RoomMemberDetailsScreen_Previews" : RoomMemberDetailsScreen_Previews.self,
"RoomMembersListMemberCell_Previews" : RoomMembersListMemberCell_Previews.self,
"RoomMembersListScreen_Previews" : RoomMembersListScreen_Previews.self,
"RoomNotificationSettingsCustomSectionView_Previews" : RoomNotificationSettingsCustomSectionView_Previews.self,
"RoomNotificationSettingsScreen_Previews" : RoomNotificationSettingsScreen_Previews.self,
"RoomNotificationSettingsUserDefinedScreen_Previews" : RoomNotificationSettingsUserDefinedScreen_Previews.self,
"RoomPollsHistoryScreen_Previews" : RoomPollsHistoryScreen_Previews.self,
"RoomRolesAndPermissionsScreen_Previews" : RoomRolesAndPermissionsScreen_Previews.self,
"RoomScreenFooterView_Previews" : RoomScreenFooterView_Previews.self,
"RoomScreen_Previews" : RoomScreen_Previews.self,
"RoomSelectionScreen_Previews" : RoomSelectionScreen_Previews.self,
"RoomThreadListScreen_Previews" : RoomThreadListScreen_Previews.self,
"SFNumberedListView_Previews" : SFNumberedListView_Previews.self,
"SearchScreen_Previews" : SearchScreen_Previews.self,
"SecureBackupKeyBackupScreen_Previews" : SecureBackupKeyBackupScreen_Previews.self,
"SecureBackupLogoutConfirmationScreen_Previews" : SecureBackupLogoutConfirmationScreen_Previews.self,
"SecureBackupRecoveryKeyScreen_Previews" : SecureBackupRecoveryKeyScreen_Previews.self,
"SecureBackupScreen_Previews" : SecureBackupScreen_Previews.self,
"SecurityAndPrivacyScreen_Previews" : SecurityAndPrivacyScreen_Previews.self,
"SendInviteConfirmationView_Previews" : SendInviteConfirmationView_Previews.self,
"SeparatorMediaEventsTimelineView_Previews" : SeparatorMediaEventsTimelineView_Previews.self,
"SeparatorRoomTimelineView_Previews" : SeparatorRoomTimelineView_Previews.self,
"ServerConfirmationScreen_Previews" : ServerConfirmationScreen_Previews.self,
"ServerSelection_Previews" : ServerSelection_Previews.self,
"SessionVerificationRequestDetailsView_Previews" : SessionVerificationRequestDetailsView_Previews.self,
"SessionVerification_Previews" : SessionVerification_Previews.self,
"SettingsScreen_Previews" : SettingsScreen_Previews.self,
"ShimmerOverlay_Previews" : ShimmerOverlay_Previews.self,
"SoftLogoutScreen_Previews" : SoftLogoutScreen_Previews.self,
"SpaceAddRoomsScreenSelectedItem_Previews" : SpaceAddRoomsScreenSelectedItem_Previews.self,
"SpaceAddRoomsScreen_Previews" : SpaceAddRoomsScreen_Previews.self,
"SpaceHeaderTopicSheetView_Previews" : SpaceHeaderTopicSheetView_Previews.self,
"SpaceHeaderView_Previews" : SpaceHeaderView_Previews.self,
"SpaceRemoveChildrenConfirmationView_Previews" : SpaceRemoveChildrenConfirmationView_Previews.self,
"SpaceRoomCell_Previews" : SpaceRoomCell_Previews.self,
"SpaceScreen_Previews" : SpaceScreen_Previews.self,
"SpaceSettingsScreen_Previews" : SpaceSettingsScreen_Previews.self,
"SpacesScreen_Previews" : SpacesScreen_Previews.self,
"SplashScreen_Previews" : SplashScreen_Previews.self,
"StackedAvatarsView_Previews" : StackedAvatarsView_Previews.self,
"StartChatScreen_Previews" : StartChatScreen_Previews.self,
"StateRoomTimelineView_Previews" : StateRoomTimelineView_Previews.self,
"StaticLocationSheet_Previews" : StaticLocationSheet_Previews.self,
"StickerRoomTimelineView_Previews" : StickerRoomTimelineView_Previews.self,
"SwipeRightAction_Previews" : SwipeRightAction_Previews.self,
"SwipeToReplyView_Previews" : SwipeToReplyView_Previews.self,
"TextRoomTimelineView_Previews" : TextRoomTimelineView_Previews.self,
"ThreadDecorator_Previews" : ThreadDecorator_Previews.self,
"TimelineDeliveryStatusView_Previews" : TimelineDeliveryStatusView_Previews.self,
"TimelineItemBubbledStylerView_Previews" : TimelineItemBubbledStylerView_Previews.self,
"TimelineItemDebugView_Previews" : TimelineItemDebugView_Previews.self,
"TimelineItemMenu_Previews" : TimelineItemMenu_Previews.self,
"TimelineItemSendInfoLabel_Previews" : TimelineItemSendInfoLabel_Previews.self,
"TimelineItemStyler_Previews" : TimelineItemStyler_Previews.self,
"TimelineMediaPreviewDetailsView_Previews" : TimelineMediaPreviewDetailsView_Previews.self,
"TimelineMediaPreviewRedactConfirmationView_Previews" : TimelineMediaPreviewRedactConfirmationView_Previews.self,
"TimelineReactionView_Previews" : TimelineReactionView_Previews.self,
"TimelineReadReceiptsView_Previews" : TimelineReadReceiptsView_Previews.self,
"TimelineReplyView_Previews" : TimelineReplyView_Previews.self,
"TimelineScrollButton_Previews" : TimelineScrollButton_Previews.self,
"TimelineStartRoomTimelineView_Previews" : TimelineStartRoomTimelineView_Previews.self,
"TimelineThreadSummaryView_Previews" : TimelineThreadSummaryView_Previews.self,
"TombstonedAvatarImage_Previews" : TombstonedAvatarImage_Previews.self,
"ToolbarButton_Previews" : ToolbarButton_Previews.self,
"TypingIndicatorView_Previews" : TypingIndicatorView_Previews.self,
"UnsupportedRoomTimelineView_Previews" : UnsupportedRoomTimelineView_Previews.self,
"UserDetailsEditScreen_Previews" : UserDetailsEditScreen_Previews.self,
"UserIndicatorModalView_Previews" : UserIndicatorModalView_Previews.self,
"UserIndicatorToastView_Previews" : UserIndicatorToastView_Previews.self,
"UserLocationCell_Previews" : UserLocationCell_Previews.self,
"UserProfileCell_Previews" : UserProfileCell_Previews.self,
"UserProfileScreen_Previews" : UserProfileScreen_Previews.self,
"VerificationBadge_Previews" : VerificationBadge_Previews.self,
"VideoMediaEventsTimelineView_Previews" : VideoMediaEventsTimelineView_Previews.self,
"VideoRoomTimelineView_Previews" : VideoRoomTimelineView_Previews.self,
"VisualListItem_Previews" : VisualListItem_Previews.self,
"VoiceMessageButton_Previews" : VoiceMessageButton_Previews.self,
"VoiceMessageMediaEventsTimelineView_Previews" : VoiceMessageMediaEventsTimelineView_Previews.self,
"VoiceMessagePreviewComposer_Previews" : VoiceMessagePreviewComposer_Previews.self,
"VoiceMessageRecordingButton_Previews" : VoiceMessageRecordingButton_Previews.self,
"VoiceMessageRecordingComposer_Previews" : VoiceMessageRecordingComposer_Previews.self,
"VoiceMessageRecordingView_Previews" : VoiceMessageRecordingView_Previews.self,
"VoiceMessageRoomPlaybackView_Previews" : VoiceMessageRoomPlaybackView_Previews.self,
"VoiceMessageRoomTimelineView_Previews" : VoiceMessageRoomTimelineView_Previews.self,
"VoiceMessageTrashButton_Previews" : VoiceMessageTrashButton_Previews.self,
"WaveformCursorView_Previews" : WaveformCursorView_Previews.self,
]
static let dictionary: [String: any PreviewProvider.Type] = {
var dictionary: [String: any PreviewProvider.Type] = [
"AdvancedSettingsScreen_Previews" : AdvancedSettingsScreen_Previews.self,
"AnalyticsPromptScreen_Previews" : AnalyticsPromptScreen_Previews.self,
"AnalyticsSettingsScreen_Previews" : AnalyticsSettingsScreen_Previews.self,
"AppLockScreen_Previews" : AppLockScreen_Previews.self,
"AppLockSetupBiometricsScreen_Previews" : AppLockSetupBiometricsScreen_Previews.self,
"AppLockSetupPINScreen_Previews" : AppLockSetupPINScreen_Previews.self,
"AppLockSetupSettingsScreen_Previews" : AppLockSetupSettingsScreen_Previews.self,
"AudioMediaEventsTimelineView_Previews" : AudioMediaEventsTimelineView_Previews.self,
"AudioRoomTimelineView_Previews" : AudioRoomTimelineView_Previews.self,
"AuthenticationClassicAppBackupInstructionsView_Previews" : AuthenticationClassicAppBackupInstructionsView_Previews.self,
"AuthenticationStartScreen_Previews" : AuthenticationStartScreen_Previews.self,
"AvatarHeaderView_Previews" : AvatarHeaderView_Previews.self,
"BadgeLabel_Previews" : BadgeLabel_Previews.self,
"BlockedUsersScreen_Previews" : BlockedUsersScreen_Previews.self,
"BloomModifier_Previews" : BloomModifier_Previews.self,
"BugReportScreen_Previews" : BugReportScreen_Previews.self,
"CallInviteRoomTimelineView_Previews" : CallInviteRoomTimelineView_Previews.self,
"CallNotificationRoomTimelineView_Previews" : CallNotificationRoomTimelineView_Previews.self,
"ChatsSpaceFilterCell_Previews" : ChatsSpaceFilterCell_Previews.self,
"ChatsSpaceFiltersScreen_Previews" : ChatsSpaceFiltersScreen_Previews.self,
"CollapsibleRoomTimelineView_Previews" : CollapsibleRoomTimelineView_Previews.self,
"CompletionSuggestion_Previews" : CompletionSuggestion_Previews.self,
"ComposerToolbar_Previews" : ComposerToolbar_Previews.self,
"CopyTextButton_Previews" : CopyTextButton_Previews.self,
"CreateRoomSpaceSelectionSheet_Previews" : CreateRoomSpaceSelectionSheet_Previews.self,
"CreateRoom_Previews" : CreateRoom_Previews.self,
"DeactivateAccountScreen_Previews" : DeactivateAccountScreen_Previews.self,
"DeclineAndBlockScreen_Previews" : DeclineAndBlockScreen_Previews.self,
"EditRoomAddressScreen_Previews" : EditRoomAddressScreen_Previews.self,
"EmojiPickerScreenHeaderView_Previews" : EmojiPickerScreenHeaderView_Previews.self,
"EmoteRoomTimelineView_Previews" : EmoteRoomTimelineView_Previews.self,
"EncryptedRoomTimelineView_Previews" : EncryptedRoomTimelineView_Previews.self,
"EncryptionResetPasswordScreen_Previews" : EncryptionResetPasswordScreen_Previews.self,
"EncryptionResetScreen_Previews" : EncryptionResetScreen_Previews.self,
"EstimatedWaveformView_Previews" : EstimatedWaveformView_Previews.self,
"FileMediaEventsTimelineView_Previews" : FileMediaEventsTimelineView_Previews.self,
"FileRoomTimelineView_Previews" : FileRoomTimelineView_Previews.self,
"FloatingDateBadge_Previews" : FloatingDateBadge_Previews.self,
"FormButtonStyles_Previews" : FormButtonStyles_Previews.self,
"FormattedBodyText_Previews" : FormattedBodyText_Previews.self,
"FormattingToolbar_Previews" : FormattingToolbar_Previews.self,
"FullscreenDialog_Previews" : FullscreenDialog_Previews.self,
"HighlightedTimelineItemModifier_Previews" : HighlightedTimelineItemModifier_Previews.self,
"HomeScreenEmptyStateView_Previews" : HomeScreenEmptyStateView_Previews.self,
"HomeScreenInviteCell_Previews" : HomeScreenInviteCell_Previews.self,
"HomeScreenKnockedCell_Previews" : HomeScreenKnockedCell_Previews.self,
"HomeScreenNewSoundBanner_Previews" : HomeScreenNewSoundBanner_Previews.self,
"HomeScreenRecoveryKeyConfirmationBanner_Previews" : HomeScreenRecoveryKeyConfirmationBanner_Previews.self,
"HomeScreenRoomCell_Previews" : HomeScreenRoomCell_Previews.self,
"HomeScreen_Previews" : HomeScreen_Previews.self,
"IdentityConfirmedScreen_Previews" : IdentityConfirmedScreen_Previews.self,
"ImageMediaEventsTimelineView_Previews" : ImageMediaEventsTimelineView_Previews.self,
"ImageRoomTimelineView_Previews" : ImageRoomTimelineView_Previews.self,
"InviteUsersConfirmationSheetView_Previews" : InviteUsersConfirmationSheetView_Previews.self,
"InviteUsersScreenSelectedItem_Previews" : InviteUsersScreenSelectedItem_Previews.self,
"InviteUsersScreen_Previews" : InviteUsersScreen_Previews.self,
"JoinRoomByAddressView_Previews" : JoinRoomByAddressView_Previews.self,
"JoinRoomScreenSpace_Previews" : JoinRoomScreenSpace_Previews.self,
"JoinRoomScreen_Previews" : JoinRoomScreen_Previews.self,
"JoinedMembersBadgeView_Previews" : JoinedMembersBadgeView_Previews.self,
"KnockRequestCell_Previews" : KnockRequestCell_Previews.self,
"KnockRequestsBannerView_Previews" : KnockRequestsBannerView_Previews.self,
"KnockRequestsListEmptyStateView_Previews" : KnockRequestsListEmptyStateView_Previews.self,
"KnockRequestsListScreen_Previews" : KnockRequestsListScreen_Previews.self,
"LabsScreen_Previews" : LabsScreen_Previews.self,
"LeaveSpaceRoomDetailsCell_Previews" : LeaveSpaceRoomDetailsCell_Previews.self,
"LeaveSpaceView_Previews" : LeaveSpaceView_Previews.self,
"LegalInformationScreen_Previews" : LegalInformationScreen_Previews.self,
"LiveLocationRoomTimelineView_Previews" : LiveLocationRoomTimelineView_Previews.self,
"LiveLocationSharingBannerView_Previews" : LiveLocationSharingBannerView_Previews.self,
"LiveLocationSheet_Previews" : LiveLocationSheet_Previews.self,
"LoadableImage_Previews" : LoadableImage_Previews.self,
"LocationMarkerView_Previews" : LocationMarkerView_Previews.self,
"LocationPickerSheet_Previews" : LocationPickerSheet_Previews.self,
"LocationRoomTimelineView_Previews" : LocationRoomTimelineView_Previews.self,
"LocationSharingScreen_Previews" : LocationSharingScreen_Previews.self,
"LongPressWithFeedback_Previews" : LongPressWithFeedback_Previews.self,
"ManageAuthorizedSpacesScreen_Previews" : ManageAuthorizedSpacesScreen_Previews.self,
"ManageRoomMemberSheetView_Previews" : ManageRoomMemberSheetView_Previews.self,
"MapLibreStaticMapView_Previews" : MapLibreStaticMapView_Previews.self,
"MatrixUserPermalink_Previews" : MatrixUserPermalink_Previews.self,
"MediaEventsTimelineScreen_Previews" : MediaEventsTimelineScreen_Previews.self,
"MediaUploadPreviewScreen_Previews" : MediaUploadPreviewScreen_Previews.self,
"MentionSuggestionItemView_Previews" : MentionSuggestionItemView_Previews.self,
"MessageComposerTextField_Previews" : MessageComposerTextField_Previews.self,
"MessageComposer_Previews" : MessageComposer_Previews.self,
"MessageForwardingScreen_Previews" : MessageForwardingScreen_Previews.self,
"MessageText_Previews" : MessageText_Previews.self,
"NoticeRoomTimelineView_Previews" : NoticeRoomTimelineView_Previews.self,
"NotificationPermissionsScreen_Previews" : NotificationPermissionsScreen_Previews.self,
"NotificationSettingsEditScreenRoomCell_Previews" : NotificationSettingsEditScreenRoomCell_Previews.self,
"NotificationSettingsEditScreen_Previews" : NotificationSettingsEditScreen_Previews.self,
"PINTextField_Previews" : PINTextField_Previews.self,
"PaginationIndicatorRoomTimelineView_Previews" : PaginationIndicatorRoomTimelineView_Previews.self,
"PillViewOnBubble_Previews" : PillViewOnBubble_Previews.self,
"PillView_Previews" : PillView_Previews.self,
"PinnedEventsTimelineScreen_Previews" : PinnedEventsTimelineScreen_Previews.self,
"PinnedItemsBannerView_Previews" : PinnedItemsBannerView_Previews.self,
"PinnedItemsIndicatorView_Previews" : PinnedItemsIndicatorView_Previews.self,
"PlaceholderAvatarImage_Previews" : PlaceholderAvatarImage_Previews.self,
"PlaceholderScreen_Previews" : PlaceholderScreen_Previews.self,
"PlaybackSpeedButton_Previews" : PlaybackSpeedButton_Previews.self,
"PollFormScreen_Previews" : PollFormScreen_Previews.self,
"PollOptionView_Previews" : PollOptionView_Previews.self,
"PollRoomTimelineView_Previews" : PollRoomTimelineView_Previews.self,
"PollView_Previews" : PollView_Previews.self,
"QRCodeErrorView_Previews" : QRCodeErrorView_Previews.self,
"QRCodeLoginScreen_Previews" : QRCodeLoginScreen_Previews.self,
"ReactionsSummaryView_Previews" : ReactionsSummaryView_Previews.self,
"ReadMarkerRoomTimelineView_Previews" : ReadMarkerRoomTimelineView_Previews.self,
"ReadReceiptCell_Previews" : ReadReceiptCell_Previews.self,
"ReadReceiptsSummaryView_Previews" : ReadReceiptsSummaryView_Previews.self,
"RedactedRoomTimelineView_Previews" : RedactedRoomTimelineView_Previews.self,
"ReportContentScreen_Previews" : ReportContentScreen_Previews.self,
"ReportRoomScreen_Previews" : ReportRoomScreen_Previews.self,
"ResolveVerifiedUserSendFailureScreen_Previews" : ResolveVerifiedUserSendFailureScreen_Previews.self,
"RoomAttachmentPicker_Previews" : RoomAttachmentPicker_Previews.self,
"RoomAvatarImage_Previews" : RoomAvatarImage_Previews.self,
"RoomChangePermissionsScreen_Previews" : RoomChangePermissionsScreen_Previews.self,
"RoomChangeRolesScreenRow_Previews" : RoomChangeRolesScreenRow_Previews.self,
"RoomChangeRolesScreenSelectedItem_Previews" : RoomChangeRolesScreenSelectedItem_Previews.self,
"RoomChangeRolesScreen_Previews" : RoomChangeRolesScreen_Previews.self,
"RoomDetailsEditScreen_Previews" : RoomDetailsEditScreen_Previews.self,
"RoomDirectorySearchCell_Previews" : RoomDirectorySearchCell_Previews.self,
"RoomDirectorySearchScreen_Previews" : RoomDirectorySearchScreen_Previews.self,
"RoomHeaderView_Previews" : RoomHeaderView_Previews.self,
"RoomInviterLabel_Previews" : RoomInviterLabel_Previews.self,
"RoomListFilterView_Previews" : RoomListFilterView_Previews.self,
"RoomListFiltersEmptyStateView_Previews" : RoomListFiltersEmptyStateView_Previews.self,
"RoomListFiltersView_Previews" : RoomListFiltersView_Previews.self,
"RoomMemberDetailsScreen_Previews" : RoomMemberDetailsScreen_Previews.self,
"RoomMembersListMemberCell_Previews" : RoomMembersListMemberCell_Previews.self,
"RoomMembersListScreen_Previews" : RoomMembersListScreen_Previews.self,
"RoomNotificationSettingsCustomSectionView_Previews" : RoomNotificationSettingsCustomSectionView_Previews.self,
"RoomNotificationSettingsScreen_Previews" : RoomNotificationSettingsScreen_Previews.self,
"RoomNotificationSettingsUserDefinedScreen_Previews" : RoomNotificationSettingsUserDefinedScreen_Previews.self,
"RoomPollsHistoryScreen_Previews" : RoomPollsHistoryScreen_Previews.self,
"RoomRolesAndPermissionsScreen_Previews" : RoomRolesAndPermissionsScreen_Previews.self,
"RoomScreenFooterView_Previews" : RoomScreenFooterView_Previews.self,
"RoomScreen_Previews" : RoomScreen_Previews.self,
"RoomSelectionScreen_Previews" : RoomSelectionScreen_Previews.self,
"RoomThreadListScreen_Previews" : RoomThreadListScreen_Previews.self,
"SFNumberedListView_Previews" : SFNumberedListView_Previews.self,
"SearchScreen_Previews" : SearchScreen_Previews.self,
"SecureBackupKeyBackupScreen_Previews" : SecureBackupKeyBackupScreen_Previews.self,
"SecurityAndPrivacyScreen_Previews" : SecurityAndPrivacyScreen_Previews.self,
"SendInviteConfirmationView_Previews" : SendInviteConfirmationView_Previews.self,
"SeparatorMediaEventsTimelineView_Previews" : SeparatorMediaEventsTimelineView_Previews.self,
"SeparatorRoomTimelineView_Previews" : SeparatorRoomTimelineView_Previews.self,
"ServerConfirmationScreen_Previews" : ServerConfirmationScreen_Previews.self,
"SessionVerificationRequestDetailsView_Previews" : SessionVerificationRequestDetailsView_Previews.self,
"SessionVerification_Previews" : SessionVerification_Previews.self,
"ShimmerOverlay_Previews" : ShimmerOverlay_Previews.self,
"SoftLogoutScreen_Previews" : SoftLogoutScreen_Previews.self,
"SpaceAddRoomsScreenSelectedItem_Previews" : SpaceAddRoomsScreenSelectedItem_Previews.self,
"SpaceHeaderTopicSheetView_Previews" : SpaceHeaderTopicSheetView_Previews.self,
"SpaceHeaderView_Previews" : SpaceHeaderView_Previews.self,
"SpaceRemoveChildrenConfirmationView_Previews" : SpaceRemoveChildrenConfirmationView_Previews.self,
"SpaceRoomCell_Previews" : SpaceRoomCell_Previews.self,
"SpaceSettingsScreen_Previews" : SpaceSettingsScreen_Previews.self,
"SpacesScreen_Previews" : SpacesScreen_Previews.self,
"SplashScreen_Previews" : SplashScreen_Previews.self,
"StackedAvatarsView_Previews" : StackedAvatarsView_Previews.self,
"StartChatScreen_Previews" : StartChatScreen_Previews.self,
"StateRoomTimelineView_Previews" : StateRoomTimelineView_Previews.self,
"StaticLocationSheet_Previews" : StaticLocationSheet_Previews.self,
"StickerRoomTimelineView_Previews" : StickerRoomTimelineView_Previews.self,
"SwipeRightAction_Previews" : SwipeRightAction_Previews.self,
"SwipeToReplyView_Previews" : SwipeToReplyView_Previews.self,
"TextRoomTimelineView_Previews" : TextRoomTimelineView_Previews.self,
"ThreadDecorator_Previews" : ThreadDecorator_Previews.self,
"TimelineDeliveryStatusView_Previews" : TimelineDeliveryStatusView_Previews.self,
"TimelineItemBubbledStylerView_Previews" : TimelineItemBubbledStylerView_Previews.self,
"TimelineItemDebugView_Previews" : TimelineItemDebugView_Previews.self,
"TimelineItemMenu_Previews" : TimelineItemMenu_Previews.self,
"TimelineItemSendInfoLabel_Previews" : TimelineItemSendInfoLabel_Previews.self,
"TimelineItemStyler_Previews" : TimelineItemStyler_Previews.self,
"TimelineMediaPreviewRedactConfirmationView_Previews" : TimelineMediaPreviewRedactConfirmationView_Previews.self,
"TimelineReactionView_Previews" : TimelineReactionView_Previews.self,
"TimelineReadReceiptsView_Previews" : TimelineReadReceiptsView_Previews.self,
"TimelineReplyView_Previews" : TimelineReplyView_Previews.self,
"TimelineScrollButton_Previews" : TimelineScrollButton_Previews.self,
"TimelineStartRoomTimelineView_Previews" : TimelineStartRoomTimelineView_Previews.self,
"TimelineThreadSummaryView_Previews" : TimelineThreadSummaryView_Previews.self,
"TombstonedAvatarImage_Previews" : TombstonedAvatarImage_Previews.self,
"ToolbarButton_Previews" : ToolbarButton_Previews.self,
"TypingIndicatorView_Previews" : TypingIndicatorView_Previews.self,
"UnsupportedRoomTimelineView_Previews" : UnsupportedRoomTimelineView_Previews.self,
"UserDetailsEditScreen_Previews" : UserDetailsEditScreen_Previews.self,
"UserIndicatorModalView_Previews" : UserIndicatorModalView_Previews.self,
"UserIndicatorToastView_Previews" : UserIndicatorToastView_Previews.self,
"UserLocationCell_Previews" : UserLocationCell_Previews.self,
"UserProfileCell_Previews" : UserProfileCell_Previews.self,
"VerificationBadge_Previews" : VerificationBadge_Previews.self,
"VideoMediaEventsTimelineView_Previews" : VideoMediaEventsTimelineView_Previews.self,
"VideoRoomTimelineView_Previews" : VideoRoomTimelineView_Previews.self,
"VisualListItem_Previews" : VisualListItem_Previews.self,
"VoiceMessageButton_Previews" : VoiceMessageButton_Previews.self,
"VoiceMessageMediaEventsTimelineView_Previews" : VoiceMessageMediaEventsTimelineView_Previews.self,
"VoiceMessagePreviewComposer_Previews" : VoiceMessagePreviewComposer_Previews.self,
"VoiceMessageRecordingButton_Previews" : VoiceMessageRecordingButton_Previews.self,
"VoiceMessageRecordingComposer_Previews" : VoiceMessageRecordingComposer_Previews.self,
"VoiceMessageRecordingView_Previews" : VoiceMessageRecordingView_Previews.self,
"VoiceMessageRoomPlaybackView_Previews" : VoiceMessageRoomPlaybackView_Previews.self,
"VoiceMessageRoomTimelineView_Previews" : VoiceMessageRoomTimelineView_Previews.self,
"VoiceMessageTrashButton_Previews" : VoiceMessageTrashButton_Previews.self,
"WaveformCursorView_Previews" : WaveformCursorView_Previews.self,
]
// 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, *) {
dictionary["EmojiPickerScreen_Previews"] = EmojiPickerScreen_Previews.self
dictionary["IdentityConfirmationScreen_Previews"] = IdentityConfirmationScreen_Previews.self
dictionary["LinkNewDeviceScreen_Previews"] = LinkNewDeviceScreen_Previews.self
dictionary["LoginScreen_Previews"] = LoginScreen_Previews.self
dictionary["NotificationSettingsScreen_Previews"] = NotificationSettingsScreen_Previews.self
dictionary["RoomDetailsScreen_Previews"] = RoomDetailsScreen_Previews.self
dictionary["SecureBackupLogoutConfirmationScreen_Previews"] = SecureBackupLogoutConfirmationScreen_Previews.self
dictionary["SecureBackupRecoveryKeyScreen_Previews"] = SecureBackupRecoveryKeyScreen_Previews.self
dictionary["SecureBackupScreen_Previews"] = SecureBackupScreen_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
@@ -123,6 +123,7 @@ struct LoginScreen: View {
// MARK: - Previews
@available(iOS 26.0, *)
struct LoginScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel = makeViewModel()
static let credentialsViewModel = makeViewModel(withCredentials: true)
@@ -91,6 +91,7 @@ struct ServerSelectionScreen: View {
// MARK: - Previews
@available(iOS 26.0, *)
struct ServerSelection_Previews: PreviewProvider, TestablePreview {
static let matrixViewModel = makeViewModel(for: "https://matrix.org")
static let emptyViewModel = makeViewModel(for: "")
@@ -100,6 +100,7 @@ struct EmojiPickerScreen: View {
// MARK: - Previews
@available(iOS 26.0, *)
struct EmojiPickerScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel = EmojiPickerScreenViewModel(itemID: .randomEvent,
selectedEmojis: ["😀", "😄"],
@@ -169,6 +169,7 @@ struct TimelineMediaPreviewDetailsView: View {
import UniformTypeIdentifiers
@available(iOS 26.0, *)
struct TimelineMediaPreviewDetailsView_Previews: PreviewProvider, TestablePreview {
static let viewModel = makeViewModel(contentType: .jpeg, isOutgoing: true)
static let loadingViewModel = makeViewModel(contentType: .jpeg, isOutgoing: true, isDownloaded: false)
@@ -103,6 +103,7 @@ struct LinkNewDeviceScreen: View {
// MARK: - Previews
@available(iOS 26.0, *)
struct LinkNewDeviceScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel = makeViewModel(mode: .readyToLink(.idle))
static let verifyingViewModel = makeViewModel(mode: .readyToLink(.verifyingDeviceOwner))
@@ -116,6 +116,7 @@ struct IdentityConfirmationScreen: View {
// MARK: - Previews
@available(iOS 26.0, *)
struct IdentityConfirmationScreen_Previews: PreviewProvider, TestablePreview {
static var viewModel = makeViewModel()
static var loadingViewModel = makeViewModel(recoveryState: .unknown)
@@ -359,6 +359,7 @@ struct RoomDetailsScreen: View {
import MatrixRustSDK
@available(iOS 26.0, *)
struct RoomDetailsScreen_Previews: PreviewProvider, TestablePreview {
static let genericWorldReadableRoomViewModel = makeGenericRoomViewModel(historyVisibility: .worldReadable)
static let genericJoinedRoomViewModel = makeGenericRoomViewModel(historyVisibility: .joined)
@@ -110,6 +110,7 @@ struct SecureBackupLogoutConfirmationScreen: View {
// MARK: - Previews
@available(iOS 26.0, *)
struct SecureBackupLogoutConfirmationScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel = makeViewModel(mode: .saveRecoveryKey)
static let waitingViewModel = makeViewModel(mode: .waitingToStart(hasStalled: false))
@@ -237,6 +237,7 @@ private struct RecoveryKeyView: View {
// MARK: - Previews
@available(iOS 26.0, *)
struct SecureBackupRecoveryKeyScreen_Previews: PreviewProvider, TestablePreview {
static let key = "EsTM njec uHYA yHmh dQdW Nj4o bNRU 9jMN XGMc KUNM UFr5 R8GY"
static let notSetUpViewModel = viewModel(recoveryState: .disabled)
@@ -116,6 +116,7 @@ struct SecureBackupScreen: View {
// MARK: - Previews
@available(iOS 26.0, *)
struct SecureBackupScreen_Previews: PreviewProvider, TestablePreview {
static let bothSetupViewModel = viewModel(keyBackupState: .enabled, recoveryState: .enabled)
static let onlyKeyBackupSetUpViewModel = viewModel(keyBackupState: .enabled, recoveryState: .disabled)
@@ -264,6 +264,7 @@ struct NotificationSettingsScreen: View {
// MARK: - Previews
@available(iOS 26.0, *)
struct NotificationSettingsScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel: NotificationSettingsScreenViewModel = {
let appSettings = AppSettings.volatile()
@@ -255,6 +255,7 @@ struct SettingsScreen: View {
// MARK: - Previews
@available(iOS 26.0, *)
struct SettingsScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel = makeViewModel()
static let bugReportDisabledViewModel = makeViewModel(isBugReportServiceEnabled: false)
@@ -157,6 +157,7 @@ private struct SpaceAddRoomsListRow: View {
// MARK: - Previews
@available(iOS 26.0, *)
struct SpaceAddRoomsScreen_Previews: PreviewProvider, TestablePreview {
static let summaryProvider = RoomSummaryProviderMock(.init(state: .loaded(.mockRooms)))
static let viewModel = makeViewModel()
@@ -184,6 +184,7 @@ struct SpaceScreen: View {
// MARK: - Previews
@available(iOS 26.0, *)
struct SpaceScreen_Previews: PreviewProvider, TestablePreview {
static let viewModel = makeViewModel()
static let managingViewModel = makeViewModel(isManagingRooms: true)
@@ -106,6 +106,7 @@ struct UserProfileScreen: View {
// MARK: - Previews
@available(iOS 26.0, *)
struct UserProfileScreen_Previews: PreviewProvider, TestablePreview {
static let verifiedUserViewModel = makeViewModel(userID: RoomMemberProxyMock.mockDan.userID)
static let otherUserViewModel = makeViewModel(userID: RoomMemberProxyMock.mockAlice.userID)