From b7e8f63e86b4bf492dd3b9a67bc3e49c765f5da8 Mon Sep 17 00:00:00 2001 From: Thomas Ricouard Date: Tue, 9 Jan 2024 13:28:57 +0100 Subject: [PATCH] Multi window visionOS support --- IceCubesApp/App/SideBarView.swift | 2 +- .../Account/Sources/Account/AccountDetailHeaderView.swift | 4 ++-- Packages/Account/Sources/Account/AccountDetailView.swift | 2 +- .../Conversations/Detail/ConversationMessageView.swift | 2 +- .../Sources/Conversations/List/ConversationsListRow.swift | 4 ++-- .../DesignSystem/Views/StatusEditorToolbarItem.swift | 2 +- Packages/Explore/Sources/Explore/ExploreView.swift | 1 - Packages/Explore/Sources/Explore/ExploreViewModel.swift | 2 +- .../StatusKit/Sources/StatusKit/Row/StatusRowView.swift | 2 +- .../StatusKit/Row/Subviews/StatusRowActionsView.swift | 2 +- .../StatusKit/Row/Subviews/StatusRowContextMenu.swift | 6 +++--- .../StatusKit/Row/Subviews/StatusRowMediaPreviewView.swift | 2 +- 12 files changed, 15 insertions(+), 16 deletions(-) diff --git a/IceCubesApp/App/SideBarView.swift b/IceCubesApp/App/SideBarView.swift index a0b83c1c..dae2f927 100644 --- a/IceCubesApp/App/SideBarView.swift +++ b/IceCubesApp/App/SideBarView.swift @@ -59,7 +59,7 @@ struct SideBarView: View { private var postButton: some View { Button { - #if targetEnvironment(macCatalyst) + #if targetEnvironment(macCatalyst) || os(visionOS) openWindow(value: WindowDestinationEditor.newStatusEditor(visibility: userPreferences.postVisibility)) #else routerPath.presentedSheet = .newStatusEditor(visibility: userPreferences.postVisibility) diff --git a/Packages/Account/Sources/Account/AccountDetailHeaderView.swift b/Packages/Account/Sources/Account/AccountDetailHeaderView.swift index 0faf78b8..756a338f 100644 --- a/Packages/Account/Sources/Account/AccountDetailHeaderView.swift +++ b/Packages/Account/Sources/Account/AccountDetailHeaderView.swift @@ -83,7 +83,7 @@ struct AccountDetailHeaderView: View { return } let attachement = MediaAttachment.imageWith(url: account.header) - #if targetEnvironment(macCatalyst) + #if targetEnvironment(macCatalyst) || os(visionOS) openWindow(value: WindowDestinationMedia.mediaViewer( attachments: [attachement], selectedAttachment: attachement @@ -120,7 +120,7 @@ struct AccountDetailHeaderView: View { return } let attachement = MediaAttachment.imageWith(url: account.avatar) - #if targetEnvironment(macCatalyst) + #if targetEnvironment(macCatalyst) || os(visionOS) openWindow(value: WindowDestinationMedia.mediaViewer(attachments: [attachement], selectedAttachment: attachement)) #else diff --git a/Packages/Account/Sources/Account/AccountDetailView.swift b/Packages/Account/Sources/Account/AccountDetailView.swift index deca7bac..ef4268a5 100644 --- a/Packages/Account/Sources/Account/AccountDetailView.swift +++ b/Packages/Account/Sources/Account/AccountDetailView.swift @@ -279,7 +279,7 @@ public struct AccountDetailView: View { if !viewModel.isCurrentUser { Button { if let account = viewModel.account { - #if targetEnvironment(macCatalyst) + #if targetEnvironment(macCatalyst) || os(visionOS) openWindow(value: WindowDestinationEditor.mentionStatusEditor(account: account, visibility: preferences.postVisibility)) #else routerPath.presentedSheet = .mentionStatusEditor(account: account, diff --git a/Packages/Conversations/Sources/Conversations/Detail/ConversationMessageView.swift b/Packages/Conversations/Sources/Conversations/Detail/ConversationMessageView.swift index 8552618e..a31d8ac0 100644 --- a/Packages/Conversations/Sources/Conversations/Detail/ConversationMessageView.swift +++ b/Packages/Conversations/Sources/Conversations/Detail/ConversationMessageView.swift @@ -205,7 +205,7 @@ struct ConversationMessageView: View { .frame(height: 200) .contentShape(Rectangle()) .onTapGesture { -#if targetEnvironment(macCatalyst) +#if targetEnvironment(macCatalyst) || os(visionOS) openWindow(value: WindowDestinationMedia.mediaViewer(attachments: [attachement], selectedAttachment: attachement)) #else diff --git a/Packages/Conversations/Sources/Conversations/List/ConversationsListRow.swift b/Packages/Conversations/Sources/Conversations/List/ConversationsListRow.swift index a1a14ba3..11edb522 100644 --- a/Packages/Conversations/Sources/Conversations/List/ConversationsListRow.swift +++ b/Packages/Conversations/Sources/Conversations/List/ConversationsListRow.swift @@ -83,7 +83,7 @@ struct ConversationsListRow: View { .accessibilityAction(.magicTap) { if let lastStatus = conversation.lastStatus { HapticManager.shared.fireHaptic(.notification(.success)) - #if targetEnvironment(macCatalyst) + #if targetEnvironment(macCatalyst) || os(visionOS) openWindow(value: WindowDestinationEditor.replyToStatusEditor(status: lastStatus)) #else routerPath.presentedSheet = .replyToStatusEditor(status: lastStatus) @@ -100,7 +100,7 @@ struct ConversationsListRow: View { Button { if let lastStatus = conversation.lastStatus { HapticManager.shared.fireHaptic(.notification(.success)) - #if targetEnvironment(macCatalyst) + #if targetEnvironment(macCatalyst) || os(visionOS) openWindow(value: WindowDestinationEditor.replyToStatusEditor(status: lastStatus)) #else routerPath.presentedSheet = .replyToStatusEditor(status: lastStatus) diff --git a/Packages/DesignSystem/Sources/DesignSystem/Views/StatusEditorToolbarItem.swift b/Packages/DesignSystem/Sources/DesignSystem/Views/StatusEditorToolbarItem.swift index 29e0cdad..0360b10d 100644 --- a/Packages/DesignSystem/Sources/DesignSystem/Views/StatusEditorToolbarItem.swift +++ b/Packages/DesignSystem/Sources/DesignSystem/Views/StatusEditorToolbarItem.swift @@ -35,7 +35,7 @@ public struct StatusEditorToolbarItem: ToolbarContent { ToolbarItem(placement: .navigationBarTrailing) { Button { Task { @MainActor in - #if targetEnvironment(macCatalyst) + #if targetEnvironment(macCatalyst) || os(visionOS) openWindow(value: WindowDestinationEditor.newStatusEditor(visibility: visibility)) #else routerPath.presentedSheet = .newStatusEditor(visibility: visibility) diff --git a/Packages/Explore/Sources/Explore/ExploreView.swift b/Packages/Explore/Sources/Explore/ExploreView.swift index 67c8a737..1fdcef2f 100644 --- a/Packages/Explore/Sources/Explore/ExploreView.swift +++ b/Packages/Explore/Sources/Explore/ExploreView.swift @@ -110,7 +110,6 @@ public struct ExploreView: View { } .task(id: viewModel.searchQuery) { do { - try await Task.sleep(for: .milliseconds(150)) await viewModel.search() } catch {} } diff --git a/Packages/Explore/Sources/Explore/ExploreViewModel.swift b/Packages/Explore/Sources/Explore/ExploreViewModel.swift index eb160d12..149ddb00 100644 --- a/Packages/Explore/Sources/Explore/ExploreViewModel.swift +++ b/Packages/Explore/Sources/Explore/ExploreViewModel.swift @@ -96,7 +96,7 @@ import SwiftUI } func search() async { - guard let client else { return } + guard let client, !searchQuery.isEmpty else { return } do { try await Task.sleep(for: .milliseconds(250)) var results: SearchResults = try await client.get(endpoint: Search.search(query: searchQuery, diff --git a/Packages/StatusKit/Sources/StatusKit/Row/StatusRowView.swift b/Packages/StatusKit/Sources/StatusKit/Row/StatusRowView.swift index ca3754c8..d89fd58d 100644 --- a/Packages/StatusKit/Sources/StatusKit/Row/StatusRowView.swift +++ b/Packages/StatusKit/Sources/StatusKit/Row/StatusRowView.swift @@ -217,7 +217,7 @@ public struct StatusRowView: View { Button("accessibility.status.media-viewer-action.label") { HapticManager.shared.fireHaptic(.notification(.success)) let attachments = viewModel.finalStatus.mediaAttachments - #if targetEnvironment(macCatalyst) + #if targetEnvironment(macCatalyst) || os(visionOS) openWindow(value: WindowDestinationMedia.mediaViewer( attachments: attachments, selectedAttachment: attachments[0] diff --git a/Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusRowActionsView.swift b/Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusRowActionsView.swift index 28ffa247..d2e4449d 100644 --- a/Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusRowActionsView.swift +++ b/Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusRowActionsView.swift @@ -252,7 +252,7 @@ struct StatusRowActionsView: View { switch action { case .respond: SoundEffectManager.shared.playSound(.share) - #if targetEnvironment(macCatalyst) + #if targetEnvironment(macCatalyst) || os(visionOS) openWindow(value: WindowDestinationEditor.replyToStatusEditor(status: viewModel.localStatus ?? viewModel.status)) #else viewModel.routerPath.presentedSheet = .replyToStatusEditor(status: viewModel.localStatus ?? viewModel.status) diff --git a/Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusRowContextMenu.swift b/Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusRowContextMenu.swift index b525eecb..b92f60f7 100644 --- a/Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusRowContextMenu.swift +++ b/Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusRowContextMenu.swift @@ -55,7 +55,7 @@ struct StatusRowContextMenu: View { systemImage: "bookmark") } Button { - #if targetEnvironment(macCatalyst) + #if targetEnvironment(macCatalyst) || os(visionOS) openWindow(value: WindowDestinationEditor.replyToStatusEditor(status: viewModel.status)) #else viewModel.routerPath.presentedSheet = .replyToStatusEditor(status: viewModel.status) @@ -64,7 +64,7 @@ struct StatusRowContextMenu: View { Label("status.action.reply", systemImage: "arrowshape.turn.up.left") } Button { - #if targetEnvironment(macCatalyst) + #if targetEnvironment(macCatalyst) || os(visionOS) openWindow(value: WindowDestinationEditor.quoteStatusEditor(status: viewModel.status)) #else viewModel.routerPath.presentedSheet = .quoteStatusEditor(status: viewModel.status) @@ -172,7 +172,7 @@ struct StatusRowContextMenu: View { } if currentInstance.isEditSupported { Button { - #if targetEnvironment(macCatalyst) + #if targetEnvironment(macCatalyst) || os(visionOS) openWindow(value: WindowDestinationEditor.editStatusEditor(status: viewModel.status.reblogAsAsStatus ?? viewModel.status)) #else viewModel.routerPath.presentedSheet = .editStatusEditor(status: viewModel.status.reblogAsAsStatus ?? viewModel.status) diff --git a/Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusRowMediaPreviewView.swift b/Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusRowMediaPreviewView.swift index 2abb5156..dcf54311 100644 --- a/Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusRowMediaPreviewView.swift +++ b/Packages/StatusKit/Sources/StatusKit/Row/Subviews/StatusRowMediaPreviewView.swift @@ -107,7 +107,7 @@ public struct StatusRowMediaPreviewView: View { } private func tabAction(for index: Int) { - #if targetEnvironment(macCatalyst) + #if targetEnvironment(macCatalyst) || os(visionOS) openWindow( value: WindowDestinationMedia.mediaViewer( attachments: attachments,