From ebd90da94344fca699129e44715c74068329f954 Mon Sep 17 00:00:00 2001 From: gmc Date: Thu, 20 Jun 2024 00:53:16 +0200 Subject: [PATCH 01/10] [TF-1550] add settings row --- TwoFAS/TwoFAS.xcodeproj/project.pbxproj | 12 ++++ .../NaviIconSort.imageset/Contents.json | 15 +++++ .../NaviIconSort.imageset/NaviIconSort.pdf | Bin 0 -> 5773 bytes .../Settings/SettingsView.swift | 43 ++++++++------ .../Settings/SortTokens/SortTokensView.swift | 55 ++++++++++++++++++ 5 files changed, 108 insertions(+), 17 deletions(-) create mode 100644 TwoFAS/TwoFASWatch Watch App/Assets.xcassets/NaviIconSort.imageset/Contents.json create mode 100644 TwoFAS/TwoFASWatch Watch App/Assets.xcassets/NaviIconSort.imageset/NaviIconSort.pdf create mode 100644 TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift diff --git a/TwoFAS/TwoFAS.xcodeproj/project.pbxproj b/TwoFAS/TwoFAS.xcodeproj/project.pbxproj index b17ded86..343bedfe 100644 --- a/TwoFAS/TwoFAS.xcodeproj/project.pbxproj +++ b/TwoFAS/TwoFAS.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 8F00E46A2C23953B001F15AD /* SortTokensView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F00E4692C23953B001F15AD /* SortTokensView.swift */; }; C200E49E1FB3911B00D7C748 /* Storage.h in Headers */ = {isa = PBXBuildFile; fileRef = C200E49C1FB3911B00D7C748 /* Storage.h */; settings = {ATTRIBUTES = (Public, ); }; }; C200E4A11FB3911B00D7C748 /* Storage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C200E49A1FB3911B00D7C748 /* Storage.framework */; }; C200E4A21FB3911B00D7C748 /* Storage.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C200E49A1FB3911B00D7C748 /* Storage.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -1875,6 +1876,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 8F00E4692C23953B001F15AD /* SortTokensView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SortTokensView.swift; sourceTree = ""; }; C200E49A1FB3911B00D7C748 /* Storage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Storage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C200E49C1FB3911B00D7C748 /* Storage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Storage.h; sourceTree = ""; }; C200E49D1FB3911B00D7C748 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -3305,6 +3307,14 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 8F00E4682C239524001F15AD /* SortTokens */ = { + isa = PBXGroup; + children = ( + 8F00E4692C23953B001F15AD /* SortTokensView.swift */, + ); + path = SortTokens; + sourceTree = ""; + }; C200E46A1FB38E6200D7C748 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -4971,6 +4981,7 @@ C244BE492BD07AA000F7E566 /* Settings */ = { isa = PBXGroup; children = ( + 8F00E4682C239524001F15AD /* SortTokens */, C244BE4B2BD07AFF00F7E566 /* Security */, C244BE4A2BD07AFA00F7E566 /* About */, C293782F2BD1A218008D5125 /* SettingsView.swift */, @@ -10193,6 +10204,7 @@ C2B86D2A2BC33D3000AAAC63 /* AppDelegateInteractor.swift in Sources */, C2A4D32E2BC0B1B20001587C /* Token.swift in Sources */, C268918A2BC4960600713078 /* ServiceListPresenter.swift in Sources */, + 8F00E46A2C23953B001F15AD /* SortTokensView.swift in Sources */, C26983822BCC8326009B3BE2 /* AppPresenter.swift in Sources */, C274C9D02BAB8ABB008E7212 /* TwoFASWatchApp.swift in Sources */, C2627F3A2BC72E96009F93A9 /* ServicePresenter.swift in Sources */, diff --git a/TwoFAS/TwoFASWatch Watch App/Assets.xcassets/NaviIconSort.imageset/Contents.json b/TwoFAS/TwoFASWatch Watch App/Assets.xcassets/NaviIconSort.imageset/Contents.json new file mode 100644 index 00000000..2691222d --- /dev/null +++ b/TwoFAS/TwoFASWatch Watch App/Assets.xcassets/NaviIconSort.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "NaviIconSort.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "template" + } +} diff --git a/TwoFAS/TwoFASWatch Watch App/Assets.xcassets/NaviIconSort.imageset/NaviIconSort.pdf b/TwoFAS/TwoFASWatch Watch App/Assets.xcassets/NaviIconSort.imageset/NaviIconSort.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ccf9b9cfdd17fcf965dcb72f2244f2e3f5fe82ab GIT binary patch literal 5773 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 literal 0 HcmV?d00001 diff --git a/TwoFAS/TwoFASWatch Watch App/Settings/SettingsView.swift b/TwoFAS/TwoFASWatch Watch App/Settings/SettingsView.swift index 191d8603..71a6cc4e 100644 --- a/TwoFAS/TwoFASWatch Watch App/Settings/SettingsView.swift +++ b/TwoFAS/TwoFASWatch Watch App/Settings/SettingsView.swift @@ -19,6 +19,12 @@ import SwiftUI +enum SettingsPath: Hashable { + case security + case about + case sortTokens +} + struct SettingsView: View { @Binding var path: NavigationPath @@ -26,23 +32,15 @@ struct SettingsView: View { var body: some View { List { NavigationLink(value: SettingsPath.security) { - HStack { - Image(systemName: "lock.fill") - Text(T.Settings.security) - .font(.callout) - .padding(4) - .foregroundStyle(.primary) - } + settingsRow(image: Image(systemName: "lock.fill"), title: T.Settings.security) } NavigationLink(value: SettingsPath.about) { - HStack { - Image(systemName: "info.bubble.fill") - Text(T.Settings.about) - .font(.callout) - .padding(4) - .foregroundStyle(.primary) - } + settingsRow(image: Image(systemName: "info.bubble.fill"), title: T.Settings.about) + } + + NavigationLink(value: SettingsPath.sortTokens) { + settingsRow(image: Image(.naviIconSort), title: T.Settings.sortTokens) } } .navigationDestination(for: SettingsPath.self) { route in @@ -54,6 +52,7 @@ struct SettingsView: View { ) ) case .about: AboutView() + case .sortTokens: EmptyView() } } .containerBackground(.red.gradient, for: .navigation) @@ -63,9 +62,19 @@ struct SettingsView: View { .navigationBarTitleDisplayMode(.automatic) .listItemTint(.clear) } + + private func settingsRow(image: Image, title: String) -> some View { + HStack { + image + .foregroundColor(.primary) + Text(title) + .font(.callout) + .padding(4) + .foregroundStyle(.primary) + } + } } -enum SettingsPath: Hashable { - case security - case about +#Preview { + SettingsView(path: .constant(NavigationPath())) } diff --git a/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift new file mode 100644 index 00000000..3b8042b6 --- /dev/null +++ b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift @@ -0,0 +1,55 @@ +// +// This file is part of the 2FAS iOS app (https://github.com/twofas/2fas-ios) +// Copyright © 2024 Two Factor Authentication Service, Inc. +// Contributed by Grzegorz Machnio. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see +// + +import SwiftUI + +protocol SortTokensPresenting: ObservableObject { + func onAppear() +} + +final class SortTokensPresenter: SortTokensPresenting { + func onAppear() { + + } +} + +struct SortTokensView: View { + @ObservedObject + var presenter: Presenter + + var body: some View { + List { + + } + .containerBackground(.red.gradient, for: .navigation) + .listStyle(.carousel) + .environment(\.defaultMinListRowHeight, WatchConsts.minRowHeight) + .navigationTitle(T.Settings.sortTokens) + .navigationBarTitleDisplayMode(.automatic) + .listItemTint(.clear) + } +} + +#Preview { + final class SortTokensPresenterMock: SortTokensPresenting { + func onAppear() {} + } + + return SortTokensView(presenter: SortTokensPresenterMock()) +} From 74750e4e6b994fd9017b1c8553092c23d4eeecfa Mon Sep 17 00:00:00 2001 From: gmc Date: Tue, 25 Jun 2024 22:07:14 +0200 Subject: [PATCH 02/10] [OSM-1550] add localizable files, UI adjustments --- TwoFAS/Common/Sources/Models/SortType.swift | 2 +- TwoFAS/TwoFAS.xcodeproj/project.pbxproj | 8 ++ .../TwoFAS/Other/de.lproj/Localizable.strings | Bin 178074 -> 177878 bytes .../TwoFAS/Other/en.lproj/Localizable.strings | Bin 167450 -> 167250 bytes .../TwoFAS/Other/es.lproj/Localizable.strings | Bin 178374 -> 178154 bytes .../TwoFAS/Other/fr.lproj/Localizable.strings | Bin 180138 -> 179916 bytes .../TwoFAS/Other/id.lproj/Localizable.strings | Bin 172292 -> 172160 bytes .../TwoFAS/Other/it.lproj/Localizable.strings | Bin 176854 -> 176602 bytes .../TwoFAS/Other/nl.lproj/Localizable.strings | Bin 175356 -> 175380 bytes .../TwoFAS/Other/pl.lproj/Localizable.strings | Bin 174358 -> 174148 bytes .../Other/pt-BR.lproj/Localizable.strings | Bin 175472 -> 175246 bytes .../Other/pt-PT.lproj/Localizable.strings | Bin 177208 -> 176982 bytes .../TwoFAS/Other/tr.lproj/Localizable.strings | Bin 173316 -> 172682 bytes .../TwoFAS/Other/uk.lproj/Localizable.strings | Bin 174394 -> 174206 bytes .../Other/zh-Hans.lproj/Localizable.strings | Bin 134634 -> 134530 bytes TwoFAS/TwoFASAuth/Generated/T.generated.swift | 4 +- .../Data/InteractorFactory.swift | 4 + .../ServiceList/ServiceListInteractor.swift | 2 +- .../Settings/SettingsView.swift | 29 ++++--- .../SortTokens/SortTokensInteractor.swift | 43 ++++++++++ .../SortTokens/SortTokensPresenter.swift | 77 ++++++++++++++++++ .../Settings/SortTokens/SortTokensView.swift | 49 ++++++++--- 22 files changed, 193 insertions(+), 25 deletions(-) create mode 100644 TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensInteractor.swift create mode 100644 TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensPresenter.swift diff --git a/TwoFAS/Common/Sources/Models/SortType.swift b/TwoFAS/Common/Sources/Models/SortType.swift index 765b8ce5..933e9d10 100644 --- a/TwoFAS/Common/Sources/Models/SortType.swift +++ b/TwoFAS/Common/Sources/Models/SortType.swift @@ -20,7 +20,7 @@ import Foundation public enum SortType: String, CaseIterable, Equatable { + case manual case az case za - case manual } diff --git a/TwoFAS/TwoFAS.xcodeproj/project.pbxproj b/TwoFAS/TwoFAS.xcodeproj/project.pbxproj index 343bedfe..2691f1fe 100644 --- a/TwoFAS/TwoFAS.xcodeproj/project.pbxproj +++ b/TwoFAS/TwoFAS.xcodeproj/project.pbxproj @@ -8,6 +8,8 @@ /* Begin PBXBuildFile section */ 8F00E46A2C23953B001F15AD /* SortTokensView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F00E4692C23953B001F15AD /* SortTokensView.swift */; }; + 8F872DE92C24EE2600160D14 /* SortTokensPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F872DE82C24EE2600160D14 /* SortTokensPresenter.swift */; }; + 8F872DEB2C24EE5500160D14 /* SortTokensInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F872DEA2C24EE5500160D14 /* SortTokensInteractor.swift */; }; C200E49E1FB3911B00D7C748 /* Storage.h in Headers */ = {isa = PBXBuildFile; fileRef = C200E49C1FB3911B00D7C748 /* Storage.h */; settings = {ATTRIBUTES = (Public, ); }; }; C200E4A11FB3911B00D7C748 /* Storage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C200E49A1FB3911B00D7C748 /* Storage.framework */; }; C200E4A21FB3911B00D7C748 /* Storage.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C200E49A1FB3911B00D7C748 /* Storage.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -1877,6 +1879,8 @@ /* Begin PBXFileReference section */ 8F00E4692C23953B001F15AD /* SortTokensView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SortTokensView.swift; sourceTree = ""; }; + 8F872DE82C24EE2600160D14 /* SortTokensPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SortTokensPresenter.swift; sourceTree = ""; }; + 8F872DEA2C24EE5500160D14 /* SortTokensInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SortTokensInteractor.swift; sourceTree = ""; }; C200E49A1FB3911B00D7C748 /* Storage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Storage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C200E49C1FB3911B00D7C748 /* Storage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Storage.h; sourceTree = ""; }; C200E49D1FB3911B00D7C748 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -3311,6 +3315,8 @@ isa = PBXGroup; children = ( 8F00E4692C23953B001F15AD /* SortTokensView.swift */, + 8F872DE82C24EE2600160D14 /* SortTokensPresenter.swift */, + 8F872DEA2C24EE5500160D14 /* SortTokensInteractor.swift */, ); path = SortTokens; sourceTree = ""; @@ -10219,6 +10225,7 @@ C2A4D3312BC0B2540001587C /* TokenGenerator.swift in Sources */, C29378382BD1BF15008D5125 /* SecurityPresenter.swift in Sources */, C2A4D32D2BC0B1AD0001587C /* TokenHandler.swift in Sources */, + 8F872DE92C24EE2600160D14 /* SortTokensPresenter.swift in Sources */, C2B86D222BC3058A00AAAC63 /* UserDefaultsRepository.swift in Sources */, C2B86D342BC3571E00AAAC63 /* ServiceView.swift in Sources */, C27D99E12BD53AB30008203F /* LogoView.swift in Sources */, @@ -10227,6 +10234,7 @@ C293783A2BD1BF23008D5125 /* SecurityInteractor.swift in Sources */, C27D99DF2BD52C8A0008203F /* WatchConsts.swift in Sources */, C2B86D382BC35B8300AAAC63 /* IconRenderer.swift in Sources */, + 8F872DEB2C24EE5500160D14 /* SortTokensInteractor.swift in Sources */, C2B86D322BC356BA00AAAC63 /* ServiceListView.swift in Sources */, C281A2732BD47D6C0068451C /* SuccessView.swift in Sources */, C268918F2BC4974800713078 /* Category.swift in Sources */, diff --git a/TwoFAS/TwoFAS/Other/de.lproj/Localizable.strings b/TwoFAS/TwoFAS/Other/de.lproj/Localizable.strings index 4abb1af577372cf5846f64735d51b38b1719f2a6..cccd875c011b75c17a0ed44c5e737ff4eeaf59c0 100644 GIT binary patch delta 233 zcmbRBp6l9Mt_dH7-5H7)su)rkiWxG2WHy5WgYU$1(vyW5MRZMp9504ahCCo`#9#o# zCSaB!gB6fx1|~rw+90{+5XS8xjEvDt+pSp{6|ASf_GaP}1nEr&8lA$B$WQ__DR=q- zJ4W~R{SJ)V_d77{DHKcs+F8bs4|YQ-P-)5Je;*~c_itk2W}UuZE0egUIYScA^fVv_ x*`LN>4#a5;mOyP549P$@faFqubn2uSWmb?mC6f&rB&YMvVd7ydp1k0d7yu}jI643T delta 315 zcmccimTT5~t_dI6qZl$7k{B{4o|B#|&nTj6%%H&F$WXvg1f-1^41m}K$TDOwX0QUX zEP$jj5GpX}0_Dt`6BxHAFfv9nF{VzQ$1f?K$B@cU4#Y(a@eIWb$qX4lb}mEW^k>YB z#we0$4EaDsKq-cj>3^0o8Bfn-VHAnaWXJ=WoC~-2Yc+`)+1N1#4j!kQ;z@ pKJ`0e>$J&oE~46I4CV|;K)Ey^2I)=%^3#CO5@?A9 pLo(0=kX#CoPMvm+QJFO#=!}x-A4-@c8H1-kP+$_Bp6|-Y3ILlICa3@a delta 226 zcmcaKi)+>#t_e5UqZl$7k{B{4zR}k;W>8>oWGG-L0@6kd20&~AWEnCTGgtvx7C_P% z2o)G~fpX@XJs4kpVN9Jofm>2Mk0F(z9Egh;;u(q=k{L39>|BP#$uZxIQRLDX@_}lA zG7Ke?*L-sn&Sb~~8kY#fa1*8<%V3f>S70as8j=W>2C-6sO7g*qATl6+BG9D;K)RTr W6wCq|Jy{{dy;=9$cHM7`oznms12uL4 diff --git a/TwoFAS/TwoFAS/Other/es.lproj/Localizable.strings b/TwoFAS/TwoFAS/Other/es.lproj/Localizable.strings index 61eb28cd667b9491ba077d65dac9e6571554949b..62c40b7aa001f9fd404e32a82a831556f8216836 100644 GIT binary patch delta 209 zcmX^1k?Ylat_kmj-5H7)su)rkiWxG2WHy5WgYU#M(vt-lMJ!E$9504ahCCo`#9#o# zCSaB!gB6fx1|~rw+F&^YAjt*fX))+eZeVq8UdXt8AtR#^YkN2ce}D57^A4K3#tW6W4Ux4km%=v)LK>SQQvb8S|BP#>0j6x zjZq}i81jLNfKm)4(+zepsZY=5V3c!D0rK;J8Wk8yfwTexk}4ptfFTDc4w5ZmcnLH- w6{w~J$SVYjrUGe@2uMZd`a;404L5m`2YX_ diff --git a/TwoFAS/TwoFAS/Other/id.lproj/Localizable.strings b/TwoFAS/TwoFAS/Other/id.lproj/Localizable.strings index 90006d5a65bb557f99090987b0b93e806571fdb8..c8a0f7aaf94302aeb4c7b290f2770b503951dd0d 100644 GIT binary patch delta 1481 zcmb_cT}WI<6h3!~O}dJ%t2VBt*^NbwF{^HDwQXu!AF7F%Dp_TVBq6K2u6I}0#ok0L zh(b%#S_)~$WSW9M^sRj=1R{iBNgxkGK$53W`ePpQB#8l`(4>)kXJ(fq5Xeio%-@-r z?|kRXckY*0UDH=wXC4)`(-?hDG5U;b^hxs5;qU(_mp-dF@HQ45bdpjS_frGfTY46x z_poZxJzHvd@4^Xd{oxlYTT3fj)}@)L5WrFtL5t%Ak5Tk~>W6&{<9T*GWCIu@eOW z_R~hK6r$bazxDn1=XSly`Pq71u6~+V zl+A5FuEhZYM{@0duRMKhui@1@EBbQ|0eDpHa*F^PU21by9ItNE35^5WrcneL0aF`H zB08hvni06Fk6J~EIz25sh2|Nba-}}7g;xy(tqOyC_pCVe(r^p1df^xmm#Pw?T5bA7 z>9z@8Q(XP#wMtYdDm-$1SyM>J!@E4HMF{r`4!TtGM=`?>rv7TQ%J{Kro_#D6Y&e?+ zmQYr~YU>-T(xi9tyhs(cYQeC4S^OZUJd+}*x@N_zD)^JQsdAUCo#iZThX!bfx=;k! zcOHgyNUpt7;!ER=O(~5))hs(MuZ-v^dG3MbtFiT6*3Kd9vn*LNMqMNNKBp!@w)`{T zl~dt-c_UCP!_B2CykwQin!5Zz9UaA0ZoOz+X-0HOEix{q0RW`||9D|+%YlfYJ3tG?519$85Ob~{Zv5*$c3+- z_Nwc1P+8%e7?!_Zbo&k>2R+oCx%d2%+*p9h@63sWTz}1-%m083H+AMi@rKgdXXjC| z2inVIsIS6UK3)(`Q7_6st4q`9MxsBF-F=mOVlYQ1Ni9|ZV`5P_xLzuMX)CL3qGm+V zfWJ)x|1dE&qYcu#$kjVYXp`QHVvNbfzBh9?Pma3$mGG8_bkbN|4rZL(6kbAy{}>$m BXmkJo delta 2129 zcmcIl&udgy6h7}lP={b*UBn^CJQWt*b>XHDxz!?3K%BqEQvQ3Q;E8~akns3N0oFT&cSoWz5b z3r~)oJ~BUdWZwJrOk+c*^ z2C#F|od_^1!$%pjinER}BeKY)J}y((A%i5L1f(Zqay-yf@U$T7wkrt$GUijm znF;*Jdc5GPp4=VG+1ZO`sqH;)s*QfEmz;l|n07u{NFO{fpDFkx4#rUqX+O6W9%4@58c!H@POhqp%)9)rwf@#{577H2E+gm5T$i{5%!_Mu4MqI_%(fVUZse-8ek=PdSijVY+{C2z6qLs z!qg&T=Mr-~xjooA>QfEy6*`~fBtROjnl3gGq*bH7nxQJPRGa?`+YEyaz2~5|`=*!8 zv#x28^sB`rUrp*!i7&1rF;bo?@>GbgNY2>9m&}*%J;+{b&UCVpDS)@cXm4HiI@i^p zt#ODy6}2i%o2E7nKlx=aua~QM*;LjXbXP#7qY9<=0>~hQCkP^G?_I6-omb2Q`}mZ} z*kwPM4-Tpf^?I}Q(7p_5vgt(_H;Xl8Fui22r4q?u+$uk5f7sD**A4R1=2t?hKK!v{ z#HTIot)jt#EttJZ8xh-ywoJVkl>1(IVlLXK>hKieY9GUwPapQk(AN!^XxmE(VBnhY zBD1ISxF%3`BQ}IS>`XZayeYiKtWlGyngSJE?E;sK@6uwYE+YY+0MN8O>E%;*H8>|9 zbR9Zw_0F(es<4?Md9T7!JIP{}wb{iBN-o=(ytmqZaSf$>_M<87*^eR&NC6=h)2j`x zg8!v=_iN|v&Ql9V)x`|hQhNLI(XtR9N;Lq#k dSPL~;w41w4&i4Og;*Ms21vwyxWUcI!%u8&_$?yOG diff --git a/TwoFAS/TwoFAS/Other/it.lproj/Localizable.strings b/TwoFAS/TwoFAS/Other/it.lproj/Localizable.strings index c597df220e27e64aabd5fdf09aff609409f47cf6..0c4b48d81ac5919de416c2a996b9b0a2f7478868 100644 GIT binary patch delta 205 zcmccilUM%pw4)PVuoaf42D#OT!uu3_~~y> zGD=RbWnz>7sSt#yNMpzcsszcGOrLj!QGIf50pH}af4F#G01eM%$ODq440+Szx|qbJ zlYwfX0zhFToecTY9X2vb+ZF+J6ayWd%1{D?`9MX9KwJnkA(bHq2tmAJAg=%jLDrUl etObjvFeFarxyGnDdHxTrc5^1i?dD8O?CSxezeY*` diff --git a/TwoFAS/TwoFAS/Other/nl.lproj/Localizable.strings b/TwoFAS/TwoFAS/Other/nl.lproj/Localizable.strings index 58b06455984af2d09c03b2dcddb6a6f1916b0964..d343185367fac79830c071bb4eec313f6820e719 100644 GIT binary patch delta 1398 zcmb_cTS$~a6rLG_mCZzxmDJSVWHZ@a*Gp;_B8$`v#K0&mE7!fao0rvfy|ADOK~j)d ze>epZR@zPIp&s^05_}A-mmUm)pr?8(ie4i7&dgf&(nG{B|39~L&Ue1^&3s?6UVmeq z`j%18A}q%IY=DLE?P3ONy!ylKs>I+38)Uusm$OpzooZCZ_Fz_}zO>??y=N!+rPcUp z!N*h03(kXadpZx+TLLT$2hoY?79O8&5wA1Nq@vC7(XjZ;&6W97={YL$;y3%nq|i{+em?1Bxh(ei^$G23*aQGY!IkD?i$D;~DH^TcdG7#LOXb7_a zW)$p%Ion!MXuy)_@hPAK_<9kPSTtbKhvt&wmArzGT4mFW=;bc6X3EPRLq&CBHnqR@RDL%$NWz8>U7>q~304(3C2TtSM;cRRSP%uq|TXh2HPKSWP* zHsD{oBjZk1!rJghm&-wsb6#IK3Qr~xbbTvgSfM*W=?p73L40ZUo7_GGpc8cGBcO>O zkPo^W1VhV!{1TOVuS0oRi&P*t+~PTM^`RImasf824s3 delta 1807 zcmb_dTT4_?6kdBrTGNe6om8xy5>}{b7Tt*OAw!UgEQBa>oH^Q%b7|(N*@cN-!k3Cp zw0lspD_IW_A@gcPP}D;ZJ!B94g1{o^C8%%hJx9kRD2T(Ev-e)NZ+&a6J=Z1zKRyJm zd@npqQR<|q7Z4k28%a?UB`JmPMykiV39ANbr0rO3#cv}XMYWJ^dD0?4kseAR<@SzZKQq^T`$Z-KZ$?7JOaUl!BQ8o;XFY z>M^TsoJ61>H(!UkA>nX*8qIxq7Xt329v>7z?VJ-Uy~M=YvCrbdV*TX3sMMF2iS^mB zB_gtCKBG)AjEkyWWL3L-Us7sa#ev;5?iDEMfy;=e3ahdWarsg#$kXx0H&VwEN3Oj{2N~aAVyN@G=OG+ytisuZFbNz*=&^w1@K(85=XEO?fu_=?Ks11fG>N9)C zxEp|ZFC_iu+kVaYZ0D{6O_J#c|ShC#=`&IiIwae=FI6~mTu zck%FXcaBO2yzogvtE+OA-ZdoW>E$6k{*Z(7BC{iR=)cuk9n zf_AXD3wdy6(^sHR-j*FfZdZ0-3q9pnkGG2Ae{pv7j=a(Sd)xYbz)j1UaA(*?O(Sdq zr+$mtezDh#UxukJ@dss|K66(lmom?sRXEpok!-;|Ss`{zH;^rN2zuxYbZXK>NAu)3 z#l--b&k(rP9rtDNHs1l?Ghx%n*2K;VgYSo=2akdS=89n;EyGqtCrrX-Cb(j~CPpt* zOdIRT`?4z23<#X$Nr*Yd39Q*DY<#87VBwOgWj2 z@VnoXJY?`GgER)+SOzo5CcevvVT31^-KDYP6nV|*^H6jdj{WZAL1H%fwzQLNCHcc+ zFCRC@Zj4q_CGDU9o(-gHAIMAkS*s{oWG@$tJ%aysC9WEk=L>Tg>hUtUPU9q?KaR>& v>29VwmxKL}QAoCh_Ii_Z%dOt|BP#$t{13QRLDX z@_}lAG7Kftd(JSbPyYQ!hPj+UVfu!ZjPlY*vJ9m_Yw{Q}8Eb%a2}9y^yCqEG+=)OA d$aPf=snY|R7)7T4JIyHHtp8`b{vXE5)c~(`H<|zd diff --git a/TwoFAS/TwoFAS/Other/pt-BR.lproj/Localizable.strings b/TwoFAS/TwoFAS/Other/pt-BR.lproj/Localizable.strings index 3b78e4f8e7d21253536b9f02597f059579005979..5c10393b40ca62e07ae576773d2f5a23ddeeb325 100644 GIT binary patch delta 184 zcmexxi>vP@*My(K?hHi?RSc;N#SEE1GMhnx!FLj)zOE^d;l)tOkO!oV7z}{e1k5sI zumbYTz$8dS8zi?mhEer@J2w;Kc5Wu7)Ya4bHZh87n=zO(Bmrg9fEc7d4aiReLQ9}E z77WQiGeB}FKst4L!7D~()_kB#N+#cnl9Uc+0JDL{mjGGWKn;07_bD-0GjIU_9atr% delta 216 zcmeCX$@SqD*My(!Q4E<3Ner2jc^LI|jTsae92p82ih#5cg8>km09l3%#tc?KmIaVB z20{e}U7(!#<_t#F|BR`V1NbE;&;QFNoC?$y&rr;e%#gv5%8<*D$Phn0<|w1&$WvfI(ldG8 iM^)xRhSJFmE%NNeKwSk4`I7~vdbV~lZtY~sTnzw1RX5B4 diff --git a/TwoFAS/TwoFAS/Other/pt-PT.lproj/Localizable.strings b/TwoFAS/TwoFAS/Other/pt-PT.lproj/Localizable.strings index d3b45dd984dd67ca1c41250ac1b5cb71e224d5a5..e781ae8e9ddf56da0b8d425ed8d2bf8218b538fd 100644 GIT binary patch delta 189 zcmdn-g6rBdt_i<|-5H7)su)rkiWxG2WHy5WgYRS}MtxmVAj^xPlpzmD8!;FFu?d)E z$Y2HJnSn`=h&D*BIgW9A93!J5Q#&Us<91F~CjIr3H@JyvnlYF&Bmotq0WrvkG$20> z2rYqDSui96jRDD}Fqln$V9KP-Ud)gWbWO?h533j@rGp_HpcN%RRyI&a9?+3W4Au-> E0AuMSs2ws^B79OVhRjpU_*)-9y8=m59nr+oP6|)6lV%hlLA8_ fL+P};jIz_?`xyDAU-e>=YL91T+#b)&6ulk*c2Y8| diff --git a/TwoFAS/TwoFAS/Other/tr.lproj/Localizable.strings b/TwoFAS/TwoFAS/Other/tr.lproj/Localizable.strings index 7ca3215e44bd3ae521883a0a31bafe062b27081c..a6d5d8a8036179746a8fb07e21689269c4b6d7d9 100644 GIT binary patch delta 5374 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 delta 6172 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 WH@jbASwM8Ic(N#MrFaKh$Nm?y4HUot diff --git a/TwoFAS/TwoFAS/Other/uk.lproj/Localizable.strings b/TwoFAS/TwoFAS/Other/uk.lproj/Localizable.strings index 6a97e0aca3a0df0d0a9ee4f251be786d2505062b..aa996e7dc2b2e78b4a24baee62f171ce3e12b949 100644 GIT binary patch delta 183 zcmdmWiR<45t_k0T-5H7)su)rkiWxG2WHy5WgYU$D`nsk-h8IIALmrSeVlV(=6EMq= z!3xMT1Ct;TZIImND8|($(`DV6IHqr1z$i2Mzp>WlV6%wR?UKxl+a;Nq6qijlP!-iS zV=!k(0;*2~VvvbxKz$YJcd+;av&~Zh-WBfNM^_YvU3>{ zr$1t3G)9q3W5@?80!lHIOkZ)1QGI$O6QdBj4T}Lw2!q1(4PK10+Ab`1EDkInAtx4R x1|0?k7F(7u7Be92#9{#ETLD!#0o6E9|8s;O1PLR8a?!JHupD3=DrAl+#|ei{&30xhv% zNCuh!l1pJQo35~qQJKA%As^_DlIaN^j1n>o!4MwM_!1y18>l4@=sqO|YX&X=)m$e1 delta 191 zcmZpg&GBkB$Aq8kQ4E<3Ner2jc^LI|jTsae92p82ih#5cg8>km09l3%#tc?KmIaVB z20{e}U7(!#<_yOElZ>g8|DBYS%wtGpCb$U81jKiK?+Ky&*NlL)5uOqZTI_D){}6?a^Js(vzKSqn%k S?Mv#0<_)K|Z#czh<^%u;1T`rD diff --git a/TwoFAS/TwoFASAuth/Generated/T.generated.swift b/TwoFAS/TwoFASAuth/Generated/T.generated.swift index 8e168167..b6e5d354 100644 --- a/TwoFAS/TwoFASAuth/Generated/T.generated.swift +++ b/TwoFAS/TwoFASAuth/Generated/T.generated.swift @@ -388,8 +388,6 @@ internal enum T { internal static func newServices(_ p1: Int) -> String { return T.tr("Localizable", "backup__new_services", p1, fallback: "%d new services") } - /// This file is in a newer format version than the one the app supports - internal static let newerFormatNotSupported = T.tr("Localizable", "backup__newer_format_not_supported", fallback: "This file is in a newer format version than the one the app supports") /// Nothing to import internal static let noNewServices = T.tr("Localizable", "backup__no_new_services", fallback: "Nothing to import") /// Either this file is empty, or all the services within are already available in the app @@ -1155,6 +1153,8 @@ internal enum T { internal static let showNextToken = T.tr("Localizable", "settings__show_next_token", fallback: "Show next token") /// Show next token when current one is about to expire. internal static let showNextTokenDesc = T.tr("Localizable", "settings__show_next_token_desc", fallback: "Show next token when current one is about to expire.") + /// Sort tokens + internal static let sortTokens = T.tr("Localizable", "settings__sort_tokens", fallback: "Sort tokens") /// An SSL error has occurred and a secure connection to the server cannot be made. Ensure you have the latest version of the app or try to change the network. internal static let sslErrorDescription = T.tr("Localizable", "settings__ssl_error_description", fallback: "An SSL error has occurred and a secure connection to the server cannot be made. Ensure you have the latest version of the app or try to change the network.") /// SSL Error diff --git a/TwoFAS/TwoFASWatch Watch App/Data/InteractorFactory.swift b/TwoFAS/TwoFASWatch Watch App/Data/InteractorFactory.swift index 753b763e..21182807 100644 --- a/TwoFAS/TwoFASWatch Watch App/Data/InteractorFactory.swift +++ b/TwoFAS/TwoFASWatch Watch App/Data/InteractorFactory.swift @@ -48,4 +48,8 @@ final class InteractorFactory { func pinInteractor(variant: PINKeyboardVariant) -> PINKeyboardInteracting { PINKeyboardInteractor(mainRepository: MainRepositoryImpl.shared, variant: variant) } + + func sortTokensInteractor() -> SortTokensInteracting { + SortTokensInteractor(mainRepository: MainRepositoryImpl.shared) + } } diff --git a/TwoFAS/TwoFASWatch Watch App/ServiceList/ServiceListInteractor.swift b/TwoFAS/TwoFASWatch Watch App/ServiceList/ServiceListInteractor.swift index 444212c2..b902f313 100644 --- a/TwoFAS/TwoFASWatch Watch App/ServiceList/ServiceListInteractor.swift +++ b/TwoFAS/TwoFASWatch Watch App/ServiceList/ServiceListInteractor.swift @@ -37,6 +37,6 @@ extension ServiceListInteractor: ServiceListInteracting { var hasServices: Bool { mainRepository.hasServices } func listAllServices() -> [CategoryData] { - mainRepository.listAllServicesWithingCategories(for: nil, sorting: .manual, ids: []) + mainRepository.listAllServicesWithingCategories(for: nil, sorting: mainRepository.sortType ?? .manual, ids: []) } } diff --git a/TwoFAS/TwoFASWatch Watch App/Settings/SettingsView.swift b/TwoFAS/TwoFASWatch Watch App/Settings/SettingsView.swift index 71a6cc4e..9766c34f 100644 --- a/TwoFAS/TwoFASWatch Watch App/Settings/SettingsView.swift +++ b/TwoFAS/TwoFASWatch Watch App/Settings/SettingsView.swift @@ -34,25 +34,32 @@ struct SettingsView: View { NavigationLink(value: SettingsPath.security) { settingsRow(image: Image(systemName: "lock.fill"), title: T.Settings.security) } - - NavigationLink(value: SettingsPath.about) { - settingsRow(image: Image(systemName: "info.bubble.fill"), title: T.Settings.about) - } NavigationLink(value: SettingsPath.sortTokens) { settingsRow(image: Image(.naviIconSort), title: T.Settings.sortTokens) } + + NavigationLink(value: SettingsPath.about) { + settingsRow(image: Image(systemName: "info.bubble.fill"), title: T.Settings.about) + } } .navigationDestination(for: SettingsPath.self) { route in switch route { - case .security: SecurityView( - path: $path, - presenter: SecurityPresenter( - interactor: InteractorFactory.shared.securityInteractor() + case .security: + SecurityView( + path: $path, + presenter: SecurityPresenter( + interactor: InteractorFactory.shared.securityInteractor() + ) + ) + case .about: + AboutView() + case .sortTokens: + SortTokensView( + presenter: SortTokensPresenter( + interactor: InteractorFactory.shared.sortTokensInteractor() + ) ) - ) - case .about: AboutView() - case .sortTokens: EmptyView() } } .containerBackground(.red.gradient, for: .navigation) diff --git a/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensInteractor.swift b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensInteractor.swift new file mode 100644 index 00000000..b06e55b8 --- /dev/null +++ b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensInteractor.swift @@ -0,0 +1,43 @@ +// +// This file is part of the 2FAS iOS app (https://github.com/twofas/2fas-ios) +// Copyright © 2024 Two Factor Authentication Service, Inc. +// Contributed by Grzegorz Machnio. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see +// + +import CommonWatch + +protocol SortTokensInteracting { + var currentSortType: SortType { get } + + func set(_ sortType: SortType) +} + +final class SortTokensInteractor: SortTokensInteracting { + var currentSortType: SortType { + mainRepository.sortType ?? .manual + } + + private let mainRepository: MainRepository + + init(mainRepository: MainRepository) { + self.mainRepository = mainRepository + } + + func set(_ sortType: SortType) { + Log("SortInteractor - saving new sort type \(sortType)", module: .interactor) + mainRepository.setSortType(sortType) + } +} diff --git a/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensPresenter.swift b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensPresenter.swift new file mode 100644 index 00000000..f0fe35e8 --- /dev/null +++ b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensPresenter.swift @@ -0,0 +1,77 @@ +// +// This file is part of the 2FAS iOS app (https://github.com/twofas/2fas-ios) +// Copyright © 2024 Two Factor Authentication Service, Inc. +// Contributed by Grzegorz Machnio. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see +// + +import CommonWatch +import SwiftUI + +protocol SortTokensPresenting: ObservableObject { + var currentSortType: SortType { get } + var sortTypes: [SortType] { get } + + func onAppear() + func set(_ sortType: SortType) +} + +final class SortTokensPresenter: SortTokensPresenting { + @Published + var currentSortType: SortType = .manual + + var sortTypes: [SortType] { + SortType.allCases + } + + private let interactor: SortTokensInteracting + + init(interactor: SortTokensInteracting) { + self.interactor = interactor + } + + func onAppear() { + currentSortType = interactor.currentSortType + } + + func set(_ sortType: SortType) { + interactor.set(sortType) + currentSortType = sortType + } +} + +extension SortType { + var localized: String { + switch self { + case .az: return T.Tokens.sortByAToZ + case .za: return T.Tokens.sortByZToA + case .manual: return T.Tokens.sortByManual + } + } + + func image(forSelectedOption option: Self, configuration: UIImage.SymbolConfiguration) -> UIImage { + var image: UIImage? + switch self { + case .az: image = UIImage(systemName: "arrow.down") + case .za: image = UIImage(systemName: "arrow.up") + case .manual: image = UIImage(systemName: "line.3.horizontal") + } + + if self == option { + image = image?.withConfiguration(configuration) + } + return image?.withRenderingMode(.alwaysTemplate) ?? UIImage() + } +} diff --git a/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift index 3b8042b6..c5bc5076 100644 --- a/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift +++ b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift @@ -18,16 +18,8 @@ // import SwiftUI - -protocol SortTokensPresenting: ObservableObject { - func onAppear() -} - -final class SortTokensPresenter: SortTokensPresenting { - func onAppear() { - - } -} +import UIKit +import CommonWatch struct SortTokensView: View { @ObservedObject @@ -35,7 +27,26 @@ struct SortTokensView: View { var body: some View { List { + ForEach(presenter.sortTypes, id: \.rawValue) { sortType in + HStack { + Image(uiImage: sortType.image( + forSelectedOption: sortType, + configuration: (UIImage.SymbolConfiguration(weight: presenter.currentSortType == sortType ? .heavy : .regular))) + ) + .foregroundColor(.primary) + Text(sortType.localized) + .font(.callout) + .fontWeight(presenter.currentSortType == sortType ? .heavy : .regular) + .padding(4) + .foregroundStyle(.primary) + } + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .leading) + .contentShape(Rectangle()) + .onTapGesture { + presenter.set(sortType) + } + } } .containerBackground(.red.gradient, for: .navigation) .listStyle(.carousel) @@ -43,12 +54,30 @@ struct SortTokensView: View { .navigationTitle(T.Settings.sortTokens) .navigationBarTitleDisplayMode(.automatic) .listItemTint(.clear) + .onAppear { + presenter.onAppear() + } + } + + private func sortOptionRow(image: Image, title: String) -> some View { + HStack { + image + .foregroundColor(.primary) + Text(title) + .font(.callout) + .padding(4) + .foregroundStyle(.primary) + } } } #Preview { final class SortTokensPresenterMock: SortTokensPresenting { + var currentSortType: CommonWatch.SortType = .manual + var sortTypes: [CommonWatch.SortType] = CommonWatch.SortType.allCases + func onAppear() {} + func set(_ sortType: SortType) {} } return SortTokensView(presenter: SortTokensPresenterMock()) From 4297a98f9f673d48a4ce538b0c234ff8d8d2cd6c Mon Sep 17 00:00:00 2001 From: gmc Date: Tue, 25 Jun 2024 23:02:35 +0200 Subject: [PATCH 03/10] [TF-1550] bump watch deploy target to 10.5 --- TwoFAS/TwoFAS.xcodeproj/project.pbxproj | 6 ++++-- .../TwoFAS/Other/Generated/T.generated.swift | 2 ++ .../TwoFAS/Other/de.lproj/Localizable.strings | Bin 177878 -> 177878 bytes .../TwoFAS/Other/en.lproj/Localizable.strings | Bin 167250 -> 167250 bytes .../TwoFAS/Other/es.lproj/Localizable.strings | Bin 178154 -> 178154 bytes .../TwoFAS/Other/fr.lproj/Localizable.strings | Bin 179916 -> 179916 bytes .../TwoFAS/Other/id.lproj/Localizable.strings | Bin 172160 -> 172160 bytes .../TwoFAS/Other/it.lproj/Localizable.strings | Bin 176602 -> 176602 bytes .../TwoFAS/Other/nl.lproj/Localizable.strings | Bin 175380 -> 175380 bytes .../TwoFAS/Other/pl.lproj/Localizable.strings | Bin 174148 -> 174148 bytes .../Other/pt-BR.lproj/Localizable.strings | Bin 175246 -> 175246 bytes .../Other/pt-PT.lproj/Localizable.strings | Bin 176982 -> 176982 bytes .../TwoFAS/Other/tr.lproj/Localizable.strings | Bin 172682 -> 172682 bytes .../TwoFAS/Other/uk.lproj/Localizable.strings | Bin 174206 -> 174206 bytes .../Other/zh-Hans.lproj/Localizable.strings | Bin 134530 -> 134530 bytes 15 files changed, 6 insertions(+), 2 deletions(-) diff --git a/TwoFAS/TwoFAS.xcodeproj/project.pbxproj b/TwoFAS/TwoFAS.xcodeproj/project.pbxproj index 2691f1fe..337b14db 100644 --- a/TwoFAS/TwoFAS.xcodeproj/project.pbxproj +++ b/TwoFAS/TwoFAS.xcodeproj/project.pbxproj @@ -12136,7 +12136,7 @@ SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 10.4; + WATCHOS_DEPLOYMENT_TARGET = 10.5; }; name = Debug; }; @@ -12177,7 +12177,7 @@ SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 10.4; + WATCHOS_DEPLOYMENT_TARGET = 10.5; }; name = Release; }; @@ -12226,6 +12226,7 @@ TARGETED_DEVICE_FAMILY = 4; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; + WATCHOS_DEPLOYMENT_TARGET = 10.5; }; name = Debug; }; @@ -12272,6 +12273,7 @@ TARGETED_DEVICE_FAMILY = 4; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; + WATCHOS_DEPLOYMENT_TARGET = 10.5; }; name = Release; }; diff --git a/TwoFAS/TwoFAS/Other/Generated/T.generated.swift b/TwoFAS/TwoFAS/Other/Generated/T.generated.swift index 8e168167..25550683 100644 --- a/TwoFAS/TwoFAS/Other/Generated/T.generated.swift +++ b/TwoFAS/TwoFAS/Other/Generated/T.generated.swift @@ -1155,6 +1155,8 @@ internal enum T { internal static let showNextToken = T.tr("Localizable", "settings__show_next_token", fallback: "Show next token") /// Show next token when current one is about to expire. internal static let showNextTokenDesc = T.tr("Localizable", "settings__show_next_token_desc", fallback: "Show next token when current one is about to expire.") + /// Sort tokens + internal static let sortTokens = T.tr("Localizable", "settings__sort_tokens", fallback: "Sort tokens") /// An SSL error has occurred and a secure connection to the server cannot be made. Ensure you have the latest version of the app or try to change the network. internal static let sslErrorDescription = T.tr("Localizable", "settings__ssl_error_description", fallback: "An SSL error has occurred and a secure connection to the server cannot be made. Ensure you have the latest version of the app or try to change the network.") /// SSL Error diff --git a/TwoFAS/TwoFAS/Other/de.lproj/Localizable.strings b/TwoFAS/TwoFAS/Other/de.lproj/Localizable.strings index cccd875c011b75c17a0ed44c5e737ff4eeaf59c0..dc5bae92049bff5fe3120f3d6d093146128206ea 100644 GIT binary patch delta 36 qcmccimh0MEt_|LdyhaRG42BHmK+=f8vN?jWJ%W*Odjum>-Btk6Q3@Xb delta 36 ocmccimh0MEt_|LdyoL-`3gJ&ciYdl)0rlx+ak`U+YA delta 36 ocmaF$p6k_nt__}yyoL-`3^0M<|nPyhe` diff --git a/TwoFAS/TwoFAS/Other/fr.lproj/Localizable.strings b/TwoFAS/TwoFAS/Other/fr.lproj/Localizable.strings index a60fda622dc7028549a58e56e6bc6196a7a18768..acea723625fb1a4694d30da06b7e781de9824258 100644 GIT binary patch delta 36 qcmX@}m+Q=5t__}yyhaRG42BHmK+=f8vN?>gJ&ciYdl(~A*gJ&ciYdl(~A%LV|?Ub%7 diff --git a/TwoFAS/TwoFAS/Other/pl.lproj/Localizable.strings b/TwoFAS/TwoFAS/Other/pl.lproj/Localizable.strings index a8e8f65cb4a5ca5064f4e0dbdb7fef0deacbaa35..6c2434b35bb8e7eec4083b0a79c9eaf6ae73436c 100644 GIT binary patch delta 36 qcmX?df$PWxt__}yyhaRG42BHmK+=f8vN?>gJ&ciYdl)0ryJY~yLkb!I delta 36 ocmX?df$PWxt__}yyoL-`3$fUO#0J#wfBLDyZ diff --git a/TwoFAS/TwoFAS/Other/pt-PT.lproj/Localizable.strings b/TwoFAS/TwoFAS/Other/pt-PT.lproj/Localizable.strings index e781ae8e9ddf56da0b8d425ed8d2bf8218b538fd..3ef29330ee04aefd7f6076f2dc9818f23d2b27a6 100644 GIT binary patch delta 36 qcmccijO*Gnt_`7#yhaRG42BHmK+=f8vN?&dJ&BQVdlDnlmyH0@iVCX$ delta 36 ocmccijO*Gnt_`7#yoL-`3r@Tk6>in9>K_Dv=9KXu?W`y delta 36 ocmeA=%GGt0YlAl%M%>V!Z diff --git a/TwoFAS/TwoFAS/Other/uk.lproj/Localizable.strings b/TwoFAS/TwoFAS/Other/uk.lproj/Localizable.strings index aa996e7dc2b2e78b4a24baee62f171ce3e12b949..4b7427100be6e147594582de30c51884df359da3 100644 GIT binary patch delta 36 qcmex&f$QG|t_^{VyhaRG42BHmK+=f8vN?{iJ&uuadmJN^!g2uB0tw*& delta 36 ocmex&f$QG|t_^{VyoL-`3$fU#r0Hk6E-~a#s From 282f2b222b33d6cb1035211d5f159de15e34fc68 Mon Sep 17 00:00:00 2001 From: gmc Date: Wed, 26 Jun 2024 23:17:42 +0200 Subject: [PATCH 04/10] [TF-1550] revert bump watchos version to 10.5 --- TwoFAS/TwoFAS.xcodeproj/project.pbxproj | 6 +-- .../xcshareddata/swiftpm/Package.resolved | 40 +++++++++---------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/TwoFAS/TwoFAS.xcodeproj/project.pbxproj b/TwoFAS/TwoFAS.xcodeproj/project.pbxproj index 337b14db..2691f1fe 100644 --- a/TwoFAS/TwoFAS.xcodeproj/project.pbxproj +++ b/TwoFAS/TwoFAS.xcodeproj/project.pbxproj @@ -12136,7 +12136,7 @@ SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 10.5; + WATCHOS_DEPLOYMENT_TARGET = 10.4; }; name = Debug; }; @@ -12177,7 +12177,7 @@ SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; - WATCHOS_DEPLOYMENT_TARGET = 10.5; + WATCHOS_DEPLOYMENT_TARGET = 10.4; }; name = Release; }; @@ -12226,7 +12226,6 @@ TARGETED_DEVICE_FAMILY = 4; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; - WATCHOS_DEPLOYMENT_TARGET = 10.5; }; name = Debug; }; @@ -12273,7 +12272,6 @@ TARGETED_DEVICE_FAMILY = 4; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; - WATCHOS_DEPLOYMENT_TARGET = 10.5; }; name = Release; }; diff --git a/TwoFAS/TwoFAS.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/TwoFAS/TwoFAS.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index c2b3dac8..96c33dc2 100644 --- a/TwoFAS/TwoFAS.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/TwoFAS/TwoFAS.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -6,8 +6,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/abseil-cpp-binary.git", "state" : { - "revision" : "bfc0b6f81adc06ce5121eb23f628473638d67c5c", - "version" : "1.2022062300.0" + "revision" : "748c7837511d0e6a507737353af268484e1745e2", + "version" : "1.2024011601.1" } }, { @@ -15,8 +15,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/app-check.git", "state" : { - "revision" : "3e464dad87dad2d29bb29a97836789bf0f8f67d2", - "version" : "10.18.1" + "revision" : "076b241a625e25eac22f8849be256dfb960fcdfe", + "version" : "10.19.1" } }, { @@ -33,8 +33,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/firebase-ios-sdk", "state" : { - "revision" : "fe09d61a539e11fdbe24f269bba10144b6145fe2", - "version" : "10.22.0" + "revision" : "8bcaf973b1d84e119b7c7c119abad72ed460979f", + "version" : "10.27.0" } }, { @@ -42,8 +42,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleAppMeasurement.git", "state" : { - "revision" : "bf3bb24f6b60a7acedaef504e9ce97154203217a", - "version" : "10.22.0" + "revision" : "70df02431e216bed98dd461e0c4665889245ba70", + "version" : "10.27.0" } }, { @@ -60,8 +60,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleUtilities.git", "state" : { - "revision" : "830ffa9276e10267881f2697283c2fcd867603fd", - "version" : "7.13.0" + "revision" : "57a1d307f42df690fdef2637f3e5b776da02aad6", + "version" : "7.13.3" } }, { @@ -69,8 +69,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/grpc-binary.git", "state" : { - "revision" : "a673bc2937fbe886dd1f99c401b01b6d977a9c98", - "version" : "1.49.1" + "revision" : "e9fad491d0673bdda7063a0341fb6b47a30c5359", + "version" : "1.62.2" } }, { @@ -78,8 +78,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/gtm-session-fetcher.git", "state" : { - "revision" : "76135c9f4e1ac85459d5fec61b6f76ac47ab3a4c", - "version" : "3.3.1" + "revision" : "0382ca27f22fb3494cf657d8dc356dc282cd1193", + "version" : "3.4.1" } }, { @@ -105,8 +105,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/MobileNativeFoundation/Kronos", "state" : { - "revision" : "a46542ce639581af2a85ab9ec1616a507a5d4ae2", - "version" : "4.2.2" + "revision" : "1b2d25bb6aad7052559035906f9fd01bb71fe6ba", + "version" : "4.3.0" } }, { @@ -114,8 +114,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/leveldb.git", "state" : { - "revision" : "43aaef65e0c665daadf848761d560e446d350d3d", - "version" : "1.22.4" + "revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1", + "version" : "1.22.5" } }, { @@ -159,8 +159,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-protobuf.git", "state" : { - "revision" : "65e8f29b2d63c4e38e736b25c27b83e012159be8", - "version" : "1.25.2" + "revision" : "9f0c76544701845ad98716f3f6a774a892152bcb", + "version" : "1.26.0" } } ], From 3bb58f2f960f47b1733ce9fc7f29d4c4cf443a01 Mon Sep 17 00:00:00 2001 From: gmc Date: Wed, 26 Jun 2024 23:38:03 +0200 Subject: [PATCH 05/10] [TF-1550] move extension to view --- .../SortTokens/SortTokensPresenter.swift | 24 ------------------- .../Settings/SortTokens/SortTokensView.swift | 24 +++++++++++++++++++ 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensPresenter.swift b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensPresenter.swift index f0fe35e8..ee8309d3 100644 --- a/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensPresenter.swift +++ b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensPresenter.swift @@ -51,27 +51,3 @@ final class SortTokensPresenter: SortTokensPresenting { currentSortType = sortType } } - -extension SortType { - var localized: String { - switch self { - case .az: return T.Tokens.sortByAToZ - case .za: return T.Tokens.sortByZToA - case .manual: return T.Tokens.sortByManual - } - } - - func image(forSelectedOption option: Self, configuration: UIImage.SymbolConfiguration) -> UIImage { - var image: UIImage? - switch self { - case .az: image = UIImage(systemName: "arrow.down") - case .za: image = UIImage(systemName: "arrow.up") - case .manual: image = UIImage(systemName: "line.3.horizontal") - } - - if self == option { - image = image?.withConfiguration(configuration) - } - return image?.withRenderingMode(.alwaysTemplate) ?? UIImage() - } -} diff --git a/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift index c5bc5076..ebaa1e68 100644 --- a/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift +++ b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift @@ -71,6 +71,30 @@ struct SortTokensView: View { } } +extension SortType { + var localized: String { + switch self { + case .az: return T.Tokens.sortByAToZ + case .za: return T.Tokens.sortByZToA + case .manual: return T.Tokens.sortByManual + } + } + + func image(forSelectedOption option: Self, configuration: UIImage.SymbolConfiguration) -> UIImage { + var image: UIImage? + switch self { + case .az: image = UIImage(systemName: "arrow.down") + case .za: image = UIImage(systemName: "arrow.up") + case .manual: image = UIImage(systemName: "line.3.horizontal") + } + + if self == option { + image = image?.withConfiguration(configuration) + } + return image?.withRenderingMode(.alwaysTemplate) ?? UIImage() + } +} + #Preview { final class SortTokensPresenterMock: SortTokensPresenting { var currentSortType: CommonWatch.SortType = .manual From 70683ef9e3353e9ad9d834ca8c28e68f7820396d Mon Sep 17 00:00:00 2001 From: gmc Date: Sat, 29 Jun 2024 12:57:24 +0200 Subject: [PATCH 06/10] [TF-1550] move logic to presenter --- .../Settings/SortTokens/SortTokensPresenter.swift | 9 +++++++++ .../Settings/SortTokens/SortTokensView.swift | 10 +++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensPresenter.swift b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensPresenter.swift index ee8309d3..17883b7c 100644 --- a/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensPresenter.swift +++ b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensPresenter.swift @@ -26,6 +26,7 @@ protocol SortTokensPresenting: ObservableObject { func onAppear() func set(_ sortType: SortType) + func image(for sortType: SortType) -> Image } final class SortTokensPresenter: SortTokensPresenting { @@ -50,4 +51,12 @@ final class SortTokensPresenter: SortTokensPresenting { interactor.set(sortType) currentSortType = sortType } + + func image(for sortType: SortType) -> Image { + let configuration: UIImage.SymbolConfiguration = { + return .init(weight: currentSortType == sortType ? .heavy : .regular) + }() + + return Image(uiImage: sortType.image(forSelectedOption: sortType, configuration: configuration)) + } } diff --git a/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift index ebaa1e68..98b33b0e 100644 --- a/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift +++ b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensView.swift @@ -29,11 +29,8 @@ struct SortTokensView: View { List { ForEach(presenter.sortTypes, id: \.rawValue) { sortType in HStack { - Image(uiImage: sortType.image( - forSelectedOption: sortType, - configuration: (UIImage.SymbolConfiguration(weight: presenter.currentSortType == sortType ? .heavy : .regular))) - ) - .foregroundColor(.primary) + presenter.image(for: sortType) + .foregroundColor(.primary) Text(sortType.localized) .font(.callout) @@ -102,6 +99,9 @@ extension SortType { func onAppear() {} func set(_ sortType: SortType) {} + func image(for sortType: SortType) -> Image { + .init(systemName: "arrowDown") + } } return SortTokensView(presenter: SortTokensPresenterMock()) From d502fc897f932f7d51cb849bead09152eb0f1360 Mon Sep 17 00:00:00 2001 From: gmc Date: Mon, 15 Jul 2024 11:51:39 +0200 Subject: [PATCH 07/10] [TF-1550] pr changes --- .../Settings/SortTokens/SortTokensInteractor.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensInteractor.swift b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensInteractor.swift index b06e55b8..a51055e7 100644 --- a/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensInteractor.swift +++ b/TwoFAS/TwoFASWatch Watch App/Settings/SortTokens/SortTokensInteractor.swift @@ -19,7 +19,7 @@ import CommonWatch -protocol SortTokensInteracting { +protocol SortTokensInteracting: AnyObject { var currentSortType: SortType { get } func set(_ sortType: SortType) From b7df6f5a776ea4d68b9d81a2296a17e66f98108c Mon Sep 17 00:00:00 2001 From: gmc Date: Tue, 16 Jul 2024 22:59:17 +0200 Subject: [PATCH 08/10] [TF-1579] new greek translation file --- .../TwoFAS/Other/el.lproj/Localizable.strings | Bin 185086 -> 185066 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/TwoFAS/TwoFAS/Other/el.lproj/Localizable.strings b/TwoFAS/TwoFAS/Other/el.lproj/Localizable.strings index 9e620e601ba23c0246e53672deb4642933877065..06eb2d501dcbe68a8523c1a85c5035d077f973a6 100644 GIT binary patch delta 304 zcmeyjl>60E?hUGp+@%bu3_1)742BG5lMNWfd5svX7)%*VfTRI~#pV#k1yYksY(yuw z+qrD^mPwFjU(39Y`3UpY$s4jnHy^h?z&LqxmJm?ZZSzapU7XV+&oW6(u4mNR{L-B( zo>5`4K%(nr^W{8@P-gpzNv4eUlNa1}-<)_)pp;QzdqFUx?CI&|ZA`q=7sxSjP8VLl zC^P-O3X|6Mk8(_YjMH`7n8YD6jXq4PrrS#ZWsDV>jv>ixmsDoDB|ceQTxvVNHB%Db z^!10Bq^9$`FmX(u>d7==vZ$Wac1JHJ1tx@H+ku9$7)(E(z$i8SZ8a0u_SH2^8SEf= TjqTPgOphdyl-kZ?I%om_^f_V4 delta 367 zcmaF0l>6UO?hUGp+!+j|3_1)73t3?iouA%U~>rL0x1@TK!%{{ zc2gO(C!d$p+UzeACoj66c{B4m1_kC_%qN+*Fz*D?`sOW)UDekeVL;4 fryGYd$!+hiVJcw9VT(u$(^p9xa&q&S&X@oIP9A*u From fb8675d7222254c771a2d698e424573c0307d43c Mon Sep 17 00:00:00 2001 From: gmc Date: Wed, 17 Jul 2024 17:11:23 +0200 Subject: [PATCH 09/10] [TF-0] bump version --- TwoFAS/TwoFAS.xcodeproj/project.pbxproj | 168 ++++++++++++------------ 1 file changed, 84 insertions(+), 84 deletions(-) diff --git a/TwoFAS/TwoFAS.xcodeproj/project.pbxproj b/TwoFAS/TwoFAS.xcodeproj/project.pbxproj index c41451d4..fce68974 100644 --- a/TwoFAS/TwoFAS.xcodeproj/project.pbxproj +++ b/TwoFAS/TwoFAS.xcodeproj/project.pbxproj @@ -11193,12 +11193,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Storage/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11236,12 +11236,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Storage/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11277,12 +11277,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11322,12 +11322,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11365,12 +11365,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ""; INFOPLIST_FILE = Protection/Info.plist; @@ -11409,12 +11409,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ""; INFOPLIST_FILE = Protection/Info.plist; @@ -11451,12 +11451,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ""; INFOPLIST_FILE = PushNotifications/Info.plist; @@ -11499,12 +11499,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ""; INFOPLIST_FILE = PushNotifications/Info.plist; @@ -11674,7 +11674,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFAS/Other/TwoFAS.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = dwarf; DEPLOYMENT_POSTPROCESSING = NO; DEVELOPMENT_TEAM = ZY8UR5ADFW; @@ -11720,7 +11720,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFAS/Other/TwoFAS.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEPLOYMENT_POSTPROCESSING = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_BITCODE = NO; @@ -11764,12 +11764,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11811,12 +11811,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11854,12 +11854,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Sync/Other/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11898,12 +11898,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Sync/Other/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11940,11 +11940,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -11985,11 +11985,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -12029,12 +12029,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -12075,12 +12075,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -12122,7 +12122,7 @@ CODE_SIGN_ENTITLEMENTS = "TwoFASWatch Watch App/TwoFASWatch Watch App.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_ASSET_PATHS = "\"TwoFASWatch Watch App/Preview Content\""; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_PREVIEWS = YES; @@ -12165,7 +12165,7 @@ CODE_SIGN_ENTITLEMENTS = "TwoFASWatch Watch App/TwoFASWatch Watch App.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_ASSET_PATHS = "\"TwoFASWatch Watch App/Preview Content\""; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_PREVIEWS = YES; @@ -12203,11 +12203,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -12252,11 +12252,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -12299,11 +12299,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -12348,11 +12348,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -12395,12 +12395,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ""; GENERATE_INFOPLIST_FILE = YES; @@ -12441,12 +12441,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ""; GENERATE_INFOPLIST_FILE = YES; @@ -12485,7 +12485,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFASAuth/TwoFASAuth.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = ZY8UR5ADFW; FRAMEWORK_SEARCH_PATHS = ""; @@ -12519,7 +12519,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFASAuth/TwoFASAuth.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ZY8UR5ADFW; FRAMEWORK_SEARCH_PATHS = ""; @@ -12554,12 +12554,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = TimeVerification/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -12599,12 +12599,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = TimeVerification/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -12641,11 +12641,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -12690,11 +12690,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -12737,7 +12737,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = TwoFASTests/Info.plist; @@ -12767,7 +12767,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = TwoFASTests/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -12799,7 +12799,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFAS/Other/TwoFASWidgetExtension.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = TwoFASWidget/Info.plist; @@ -12835,7 +12835,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFAS/Other/TwoFASWidgetExtension.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = TwoFASWidget/Info.plist; @@ -12868,7 +12868,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFASServiceIntent/TwoFASServiceIntent.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = TwoFASServiceIntent/Info.plist; @@ -12902,7 +12902,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFASServiceIntent/TwoFASServiceIntent.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = TwoFASServiceIntent/Info.plist; @@ -12934,7 +12934,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -12963,7 +12963,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -12991,11 +12991,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13038,11 +13038,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13083,11 +13083,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13130,11 +13130,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13175,11 +13175,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13223,11 +13223,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13269,11 +13269,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13317,11 +13317,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; + DYLIB_CURRENT_VERSION = 2; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13362,7 +13362,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)"; CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = ProtectionTests/Info.plist; @@ -13394,7 +13394,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)"; CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = ProtectionTests/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; From 9e5cab719f65be148cf004807de6d907e2589c89 Mon Sep 17 00:00:00 2001 From: gmc Date: Sat, 20 Jul 2024 21:02:47 +0200 Subject: [PATCH 10/10] [TF-0] set build number to 1 --- TwoFAS/TwoFAS.xcodeproj/project.pbxproj | 168 ++++++++++++------------ 1 file changed, 84 insertions(+), 84 deletions(-) diff --git a/TwoFAS/TwoFAS.xcodeproj/project.pbxproj b/TwoFAS/TwoFAS.xcodeproj/project.pbxproj index 44146230..3a13768a 100644 --- a/TwoFAS/TwoFAS.xcodeproj/project.pbxproj +++ b/TwoFAS/TwoFAS.xcodeproj/project.pbxproj @@ -11213,12 +11213,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Storage/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11256,12 +11256,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Storage/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11297,12 +11297,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11342,12 +11342,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11385,12 +11385,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ""; INFOPLIST_FILE = Protection/Info.plist; @@ -11429,12 +11429,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ""; INFOPLIST_FILE = Protection/Info.plist; @@ -11471,12 +11471,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ""; INFOPLIST_FILE = PushNotifications/Info.plist; @@ -11519,12 +11519,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ""; INFOPLIST_FILE = PushNotifications/Info.plist; @@ -11694,7 +11694,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFAS/Other/TwoFAS.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEPLOYMENT_POSTPROCESSING = NO; DEVELOPMENT_TEAM = ZY8UR5ADFW; @@ -11740,7 +11740,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFAS/Other/TwoFAS.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEPLOYMENT_POSTPROCESSING = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_BITCODE = NO; @@ -11784,12 +11784,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11831,12 +11831,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11874,12 +11874,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Sync/Other/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11918,12 +11918,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = Sync/Other/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -11960,11 +11960,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -12005,11 +12005,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -12049,12 +12049,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -12095,12 +12095,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -12142,7 +12142,7 @@ CODE_SIGN_ENTITLEMENTS = "TwoFASWatch Watch App/TwoFASWatch Watch App.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"TwoFASWatch Watch App/Preview Content\""; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_PREVIEWS = YES; @@ -12185,7 +12185,7 @@ CODE_SIGN_ENTITLEMENTS = "TwoFASWatch Watch App/TwoFASWatch Watch App.entitlements"; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"TwoFASWatch Watch App/Preview Content\""; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_PREVIEWS = YES; @@ -12223,11 +12223,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -12272,11 +12272,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -12319,11 +12319,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -12368,11 +12368,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -12415,12 +12415,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ""; GENERATE_INFOPLIST_FILE = YES; @@ -12461,12 +12461,12 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ""; GENERATE_INFOPLIST_FILE = YES; @@ -12505,7 +12505,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFASAuth/TwoFASAuth.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = ZY8UR5ADFW; FRAMEWORK_SEARCH_PATHS = ""; @@ -12539,7 +12539,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFASAuth/TwoFASAuth.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ZY8UR5ADFW; FRAMEWORK_SEARCH_PATHS = ""; @@ -12574,12 +12574,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = TimeVerification/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -12619,12 +12619,12 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = TimeVerification/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -12661,11 +12661,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -12710,11 +12710,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -12757,7 +12757,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = TwoFASTests/Info.plist; @@ -12787,7 +12787,7 @@ BUNDLE_LOADER = "$(TEST_HOST)"; CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = TwoFASTests/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved."; @@ -12819,7 +12819,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFAS/Other/TwoFASWidgetExtension.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = TwoFASWidget/Info.plist; @@ -12855,7 +12855,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFAS/Other/TwoFASWidgetExtension.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = TwoFASWidget/Info.plist; @@ -12888,7 +12888,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFASServiceIntent/TwoFASServiceIntent.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = TwoFASServiceIntent/Info.plist; @@ -12922,7 +12922,7 @@ CODE_SIGN_ENTITLEMENTS = TwoFASServiceIntent/TwoFASServiceIntent.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = TwoFASServiceIntent/Info.plist; @@ -12954,7 +12954,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -12983,7 +12983,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = ZY8UR5ADFW; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -13011,11 +13011,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13058,11 +13058,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13103,11 +13103,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13150,11 +13150,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13195,11 +13195,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13243,11 +13243,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13289,11 +13289,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13337,11 +13337,11 @@ CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ZY8UR5ADFW; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 2; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; @@ -13382,7 +13382,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)"; CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = ProtectionTests/Info.plist; @@ -13414,7 +13414,7 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)"; CLANG_ENABLE_OBJC_WEAK = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = ZY8UR5ADFW; INFOPLIST_FILE = ProtectionTests/Info.plist; INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Two Factor Authentication Service, Inc. All rights reserved.";