diff --git a/PadelClub.xcodeproj/project.pbxproj b/PadelClub.xcodeproj/project.pbxproj index 8e865a1..77d7b1c 100644 --- a/PadelClub.xcodeproj/project.pbxproj +++ b/PadelClub.xcodeproj/project.pbxproj @@ -43,6 +43,7 @@ C4A47DA92B85F82100ADC637 /* ChangePasswordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A47DA82B85F82100ADC637 /* ChangePasswordView.swift */; }; C4A47DAD2B85FCCD00ADC637 /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A47DAC2B85FCCD00ADC637 /* User.swift */; }; C4A47DB32B86387500ADC637 /* AccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A47DB22B86387500ADC637 /* AccountView.swift */; }; + C4B3A1552C2581DA0078EAA8 /* Patcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4B3A1542C2581DA0078EAA8 /* Patcher.swift */; }; C4EC6F572BE92CAC000CEAB4 /* local.plist in Resources */ = {isa = PBXBuildFile; fileRef = C4EC6F562BE92CAC000CEAB4 /* local.plist */; }; C4EC6F592BE92D88000CEAB4 /* PListReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4EC6F582BE92D88000CEAB4 /* PListReader.swift */; }; FF025AD82BD0C10F00A86CF8 /* TeamHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF025AD72BD0C10F00A86CF8 /* TeamHeaderView.swift */; }; @@ -329,6 +330,7 @@ C4A47DA82B85F82100ADC637 /* ChangePasswordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangePasswordView.swift; sourceTree = ""; }; C4A47DAC2B85FCCD00ADC637 /* User.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = ""; }; C4A47DB22B86387500ADC637 /* AccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountView.swift; sourceTree = ""; }; + C4B3A1542C2581DA0078EAA8 /* Patcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Patcher.swift; sourceTree = ""; }; C4EC6F562BE92CAC000CEAB4 /* local.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = local.plist; sourceTree = ""; }; C4EC6F582BE92D88000CEAB4 /* PListReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PListReader.swift; sourceTree = ""; }; FF025AD72BD0C10F00A86CF8 /* TeamHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TeamHeaderView.swift; sourceTree = ""; }; @@ -1264,23 +1266,24 @@ FFF8ACD02B9238A2008466FA /* Utils */ = { isa = PBXGroup; children = ( + FF6EC9072B947A1E00EA7F5A /* Network */, + FF8E1CE52C006E0200184680 /* Alphabet.swift */, FFA6D7862BB0B7A2003A31F3 /* CloudConvert.swift */, FF92680A2BCEE3E10080F940 /* ContactManager.swift */, FF1DC55A2BAB80C400FD8220 /* DisplayContext.swift */, FFA6D7842BB0B795003A31F3 /* FileImportManager.swift */, + FF1F4B722BFA00FB000B4573 /* HtmlGenerator.swift */, + FF1F4B732BFA00FC000B4573 /* HtmlService.swift */, C49EF0432BE286780077B5AA /* Key.swift */, FFC1E1072BAC29FC008D6F59 /* LocationManager.swift */, FF92680C2BCEE5EA0080F940 /* NetworkMonitor.swift */, - FF1F4B722BFA00FB000B4573 /* HtmlGenerator.swift */, - FF1F4B732BFA00FC000B4573 /* HtmlService.swift */, FF8F26352BAD523300650388 /* PadelRule.swift */, + C4B3A1542C2581DA0078EAA8 /* Patcher.swift */, + C4EC6F582BE92D88000CEAB4 /* PListReader.swift */, FFF8ACD32B92392C008466FA /* SourceFileManager.swift */, FF0EC51D2BB16F680056B6D1 /* SwiftParser.swift */, FF1DC5582BAB767000FD8220 /* Tips.swift */, C49EF01A2BD6A1E80077B5AA /* URLs.swift */, - FF8E1CE52C006E0200184680 /* Alphabet.swift */, - FF6EC9072B947A1E00EA7F5A /* Network */, - C4EC6F582BE92D88000CEAB4 /* PListReader.swift */, ); path = Utils; sourceTree = ""; @@ -1512,6 +1515,7 @@ FF5D30532BD94E2E00F2B93D /* PlayerHolder.swift in Sources */, FF11628C2BD05267000C4809 /* LoserRoundStepScheduleEditorView.swift in Sources */, FF53FBB82BFB302B0051D4C3 /* ClubCourtSetupView.swift in Sources */, + C4B3A1552C2581DA0078EAA8 /* Patcher.swift in Sources */, FF089EBF2BB0B14600F0AEC7 /* FileImportView.swift in Sources */, C4A47D9F2B7D0BCE00ADC637 /* StepperView.swift in Sources */, FFC83D4F2BB807D100750834 /* RoundsView.swift in Sources */, diff --git a/PadelClub/Data/Club.swift b/PadelClub/Data/Club.swift index 0428a90..21d2dde 100644 --- a/PadelClub/Data/Club.swift +++ b/PadelClub/Data/Club.swift @@ -57,7 +57,7 @@ class Club : ModelObject, Storable, Hashable { override func copyFromServerInstance(_ instance: any Storable) -> Bool { guard let copy = instance as? Club else { return false } self.broadcastCode = copy.broadcastCode - Logger.log("write code: \(self.broadcastCode)") +// Logger.log("write code: \(self.broadcastCode)") return true } diff --git a/PadelClub/Utils/Patcher.swift b/PadelClub/Utils/Patcher.swift new file mode 100644 index 0000000..6960bd0 --- /dev/null +++ b/PadelClub/Utils/Patcher.swift @@ -0,0 +1,52 @@ +// +// Patcher.swift +// PadelClub +// +// Created by Laurent Morvillier on 21/06/2024. +// + +import Foundation +import LeStorage + +enum Patch: String, CaseIterable { + case alexisLeDu + + var id: String { + return "padelclub.app.patch.\(self.rawValue)" + } +} + +class Patcher { + + static func applyIfNeeded() { + for patch in Patch.allCases { + if UserDefaults.standard.value(forKey: patch.id) == nil { + self._applyPatch(patch) + UserDefaults.standard.setValue(true, forKey: patch.id) + } + } + } + + fileprivate static func _applyPatch(_ patch: Patch) { + switch patch { + case .alexisLeDu: self._patchAlexisLeDu() + } + } + + fileprivate static func _patchAlexisLeDu() { + guard Store.main.userId == "94f45ed2-8938-4c32-a4b6-e4525073dd33" else { return } + + Logger.log(">>> Start patch...") + + let clubs = DataStore.shared.clubs + + clubs.resetApiCalls() + + for club in clubs.filter({ $0.creator == "d5060b89-e979-4c19-bf78-e459a6ed5318"}) { + club.creator = Store.main.userId + clubs.writeChangeAndInsertOnServer(instance: club) + } + + } + +} diff --git a/PadelClub/Views/Navigation/Toolbox/ToolboxView.swift b/PadelClub/Views/Navigation/Toolbox/ToolboxView.swift index 731f8a5..6789037 100644 --- a/PadelClub/Views/Navigation/Toolbox/ToolboxView.swift +++ b/PadelClub/Views/Navigation/Toolbox/ToolboxView.swift @@ -20,6 +20,12 @@ struct ToolboxView: View { Section { Text("Version de l'application").badge(PadelClubApp.appVersion) SupportButtonView(contentIsUnavailable: false) + Button { + Patcher.applyIfNeeded() + } label: { + Text("Patch") + } + } #if DEBUG