diff --git a/to-live-photo/to-live-photo/Views/SettingsView.swift b/to-live-photo/to-live-photo/Views/SettingsView.swift index f261751..51731af 100644 --- a/to-live-photo/to-live-photo/Views/SettingsView.swift +++ b/to-live-photo/to-live-photo/Views/SettingsView.swift @@ -13,8 +13,7 @@ struct SettingsView: View { @State private var cacheSize: String = String(localized: "common.calculating") @State private var showingClearCacheAlert = false @State private var showingClearRecentWorksAlert = false - @State private var feedbackPackageURL: URL? - @State private var showingShareSheet = false + @State private var feedbackPackageURL: IdentifiableURL? @State private var showingLanguageChangeAlert = false @State private var showingFeedbackConfirmAlert = false @State private var pendingLanguage: LanguageManager.Language? @@ -182,10 +181,8 @@ struct SettingsView: View { } message: { Text(String(localized: "settings.feedbackConfirmMessage")) } - .sheet(isPresented: $showingShareSheet) { - if let url = feedbackPackageURL { - ShareSheet(activityItems: [url]) - } + .sheet(item: $feedbackPackageURL) { item in + ShareSheet(activityItems: [item.url]) } } @@ -299,8 +296,7 @@ struct SettingsView: View { let url = await createFeedbackPackage() await MainActor.run { if let url { - feedbackPackageURL = url - showingShareSheet = true + feedbackPackageURL = IdentifiableURL(url: url) } } } @@ -425,6 +421,12 @@ extension PHAuthorizationStatus: @retroactive CustomStringConvertible { } } +// MARK: - Identifiable URL Wrapper +struct IdentifiableURL: Identifiable { + let id = UUID() + let url: URL +} + // MARK: - Share Sheet struct ShareSheet: UIViewControllerRepresentable { let activityItems: [Any]