From 9d1e3e7bbcb91d132a203a26c5ae51c322f836b5 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Wed, 19 Jun 2024 16:08:09 +0200 Subject: [PATCH] add contact support --- PadelClub.xcodeproj/project.pbxproj | 4 ++++ PadelClub/Info.plist | 4 ++-- .../Navigation/Agenda/ActivityView.swift | 4 +++- .../Navigation/Toolbox/ToolboxView.swift | 11 +++++---- .../Views/Shared/SupportButtonView.swift | 23 +++++++++++++++++++ PadelClub/Views/Subscription/Guard.swift | 16 ++++++------- 6 files changed, 47 insertions(+), 15 deletions(-) create mode 100644 PadelClub/Views/Shared/SupportButtonView.swift diff --git a/PadelClub.xcodeproj/project.pbxproj b/PadelClub.xcodeproj/project.pbxproj index e6b082c..f5c3bdf 100644 --- a/PadelClub.xcodeproj/project.pbxproj +++ b/PadelClub.xcodeproj/project.pbxproj @@ -237,6 +237,7 @@ FFDDD40C2B93B2BB00C91A49 /* DeferredViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFDDD40B2B93B2BB00C91A49 /* DeferredViewModifier.swift */; }; FFE2D2D52C216B5000D0C7BE /* FirebaseCrashlytics in Frameworks */ = {isa = PBXBuildFile; productRef = FFE2D2D42C216B5000D0C7BE /* FirebaseCrashlytics */; }; FFE2D2D82C216D4800D0C7BE /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = FFE2D2D72C216D4800D0C7BE /* GoogleService-Info.plist */; }; + FFE2D2E22C231BEE00D0C7BE /* SupportButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFE2D2E12C231BEE00D0C7BE /* SupportButtonView.swift */; }; FFEF7F4E2BDE69130033D0F0 /* MenuWarningView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFEF7F4D2BDE69130033D0F0 /* MenuWarningView.swift */; }; FFF0241E2BF48B15001F14B4 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = FFF0241D2BF48B15001F14B4 /* Localizable.strings */; }; FFF03C942BD91D0C00B516FC /* ButtonValidateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFF03C932BD91D0C00B516FC /* ButtonValidateView.swift */; }; @@ -562,6 +563,7 @@ FFDB1C722BB2CFE900F1E467 /* MySortDescriptor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MySortDescriptor.swift; sourceTree = ""; }; FFDDD40B2B93B2BB00C91A49 /* DeferredViewModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeferredViewModifier.swift; sourceTree = ""; }; FFE2D2D72C216D4800D0C7BE /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; + FFE2D2E12C231BEE00D0C7BE /* SupportButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportButtonView.swift; sourceTree = ""; }; FFEF7F4D2BDE69130033D0F0 /* MenuWarningView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuWarningView.swift; sourceTree = ""; }; FFF0241C2BF48B15001F14B4 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; FFF0241F2BF48B1A001F14B4 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; @@ -1060,6 +1062,7 @@ FF5D0D6F2BB3EFA5005CB568 /* LearnMoreSheetView.swift */, FFCFC0192BBC5A8500B82851 /* MatchTypeSmallSelectionView.swift */, FF663FBD2BE019EC0031AE83 /* TournamentFilterView.swift */, + FFE2D2E12C231BEE00D0C7BE /* SupportButtonView.swift */, ); path = Shared; sourceTree = ""; @@ -1520,6 +1523,7 @@ FF025AE12BD0EB9000A86CF8 /* TournamentClubSettingsView.swift in Sources */, FFBF065C2BBD2657009D6715 /* GroupStageTeamView.swift in Sources */, FF5DA1932BB9279B00A33061 /* RoundSettingsView.swift in Sources */, + FFE2D2E22C231BEE00D0C7BE /* SupportButtonView.swift in Sources */, FFB1C98B2C10255100B154A7 /* TournamentBroadcastRowView.swift in Sources */, FF025ADF2BD0CE0A00A86CF8 /* TeamWeightView.swift in Sources */, FF9268012BCE94920080F940 /* SeedsCallingView.swift in Sources */, diff --git a/PadelClub/Info.plist b/PadelClub/Info.plist index 17dc2c2..9dcd617 100644 --- a/PadelClub/Info.plist +++ b/PadelClub/Info.plist @@ -2,8 +2,6 @@ - UIFileSharingEnabled - CFBundleDocumentTypes @@ -22,5 +20,7 @@ ITSAppUsesNonExemptEncryption + UIFileSharingEnabled + diff --git a/PadelClub/Views/Navigation/Agenda/ActivityView.swift b/PadelClub/Views/Navigation/Agenda/ActivityView.swift index 050bd91..ccc4d2d 100644 --- a/PadelClub/Views/Navigation/Agenda/ActivityView.swift +++ b/PadelClub/Views/Navigation/Agenda/ActivityView.swift @@ -309,7 +309,7 @@ struct ActivityView: View { Image(.padelClubLogoFondclairTransparent) .resizable() .scaledToFit() - .frame(width: 128) + .frame(width: 100) } } description: { Text("Aucun événement en cours ou à venir dans votre agenda.") @@ -326,6 +326,8 @@ struct ActivityView: View { navigation.agendaDestination = .tenup } } + + SupportButtonView() } } diff --git a/PadelClub/Views/Navigation/Toolbox/ToolboxView.swift b/PadelClub/Views/Navigation/Toolbox/ToolboxView.swift index 8a7a5c7..f8f2de4 100644 --- a/PadelClub/Views/Navigation/Toolbox/ToolboxView.swift +++ b/PadelClub/Views/Navigation/Toolbox/ToolboxView.swift @@ -16,6 +16,13 @@ struct ToolboxView: View { @Bindable var navigation = navigation NavigationStack(path: $navigation.toolboxPath) { List { + + Section { + Text("Version de l'application").badge(PadelClubApp.appVersion) + } footer: { + SupportButtonView() + } + #if DEBUG Section { @@ -113,10 +120,6 @@ struct ToolboxView: View { Section { Link("Accéder au guide de la compétition", destination: URLs.padelRules.url) } - - Section { - Text("Version de l'application").badge(PadelClubApp.appVersion) - } } .navigationTitle(TabDestination.toolbox.title) } diff --git a/PadelClub/Views/Shared/SupportButtonView.swift b/PadelClub/Views/Shared/SupportButtonView.swift new file mode 100644 index 0000000..3bce884 --- /dev/null +++ b/PadelClub/Views/Shared/SupportButtonView.swift @@ -0,0 +1,23 @@ +// +// SupportButtonView.swift +// PadelClub +// +// Created by Razmig Sarkissian on 19/06/2024. +// + +import SwiftUI + +struct SupportButtonView: View { + + var body: some View { + FooterButtonView("Besoin d'aide ? Un problème ? Contactez-nous !") { + openMail() + } + } + + func openMail(emailTo: String = "support@padelclub.app", subject: String = "Support Padel Club") { + if let url = URL(string: "mailto:\(emailTo)?subject=\(subject)"), UIApplication.shared.canOpenURL(url) { + UIApplication.shared.open(url, options: [:], completionHandler: nil) + } + } +} diff --git a/PadelClub/Views/Subscription/Guard.swift b/PadelClub/Views/Subscription/Guard.swift index dc27aa3..da6b45f 100644 --- a/PadelClub/Views/Subscription/Guard.swift +++ b/PadelClub/Views/Subscription/Guard.swift @@ -140,14 +140,14 @@ import LeStorage } var currentPlan: StoreItem? { -// #if DEBUG - return .monthlyUnlimited -// #else -// if let currentBestPlan = self.currentBestPlan, let plan = StoreItem(rawValue: currentBestPlan.productID) { -// return plan -// } -// return nil -// #endif + #if DEBUG + return .monthlyUnlimited + #else + if let currentBestPlan = self.currentBestPlan, let plan = StoreItem(rawValue: currentBestPlan.productID) { + return plan + } + return nil + #endif } func userFilteredPurchases() -> [StoreKit.Transaction] {