[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-ios] 02/54: Moved AgePicker in its own file
From: |
gnunet |
Subject: |
[taler-taler-ios] 02/54: Moved AgePicker in its own file |
Date: |
Fri, 30 Jun 2023 22:33:34 +0200 |
This is an automated email from the git hooks/post-receive script.
marc-stibane pushed a commit to branch master
in repository taler-ios.
commit d729e1b8b2e5c99dadca4cca930cea7a84f53bc0
Author: Marc Stibane <marc@taler.net>
AuthorDate: Mon Jun 12 19:07:58 2023 +0200
Moved AgePicker in its own file
---
TalerWallet.xcodeproj/project.pbxproj | 8 +++-
TalerWallet1/Helper/AgePicker.swift | 49 ++++++++++++++++++++++++
TalerWallet1/Views/Exchange/ManualWithdraw.swift | 35 ++---------------
3 files changed, 59 insertions(+), 33 deletions(-)
diff --git a/TalerWallet.xcodeproj/project.pbxproj
b/TalerWallet.xcodeproj/project.pbxproj
index 66a3b04..445de65 100644
--- a/TalerWallet.xcodeproj/project.pbxproj
+++ b/TalerWallet.xcodeproj/project.pbxproj
@@ -26,6 +26,7 @@
4E9320432A14F6EA00A87B0E /* WalletColors.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E9320422A14F6EA00A87B0E /* WalletColors.swift
*/; };
4E9320452A1645B600A87B0E /* RequestPayment.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4E9320442A1645B600A87B0E /*
RequestPayment.swift */; };
4E9320472A164BC700A87B0E /* ReceivePurpose.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4E9320462A164BC700A87B0E /*
ReceivePurpose.swift */; };
+ 4E9796902A3765ED006F73BC /* AgePicker.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E97968F2A3765ED006F73BC /* AgePicker.swift */;
};
4EA1ABBE29A3833A008821EA /* PublicConstants.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EA1ABBD29A3833A008821EA /*
PublicConstants.swift */; };
4EA551252A2C923600FEC9A8 /* CurrencyInputView.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EA551242A2C923600FEC9A8 /*
CurrencyInputView.swift */; };
4EAD117629F672FA008EDD0B /* KeyboardResponder.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EAD117529F672FA008EDD0B /*
KeyboardResponder.swift */; };
@@ -151,6 +152,7 @@
4E9320422A14F6EA00A87B0E /* WalletColors.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= WalletColors.swift; sourceTree = "<group>"; };
4E9320442A1645B600A87B0E /* RequestPayment.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= RequestPayment.swift; sourceTree = "<group>"; };
4E9320462A164BC700A87B0E /* ReceivePurpose.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= ReceivePurpose.swift; sourceTree = "<group>"; };
+ 4E97968F2A3765ED006F73BC /* AgePicker.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= AgePicker.swift; sourceTree = "<group>"; };
4EA1ABBD29A3833A008821EA /* PublicConstants.swift */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.swift; path =
PublicConstants.swift; sourceTree = "<group>"; };
4EA551242A2C923600FEC9A8 /* CurrencyInputView.swift */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.swift; path =
CurrencyInputView.swift; sourceTree = "<group>"; };
4EAD117529F672FA008EDD0B /* KeyboardResponder.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= KeyboardResponder.swift; sourceTree = "<group>"; };
@@ -303,6 +305,7 @@
4EB095052989CB7C0043A8A1 /* Helper */ = {
isa = PBXGroup;
children = (
+ 4E97968F2A3765ED006F73BC /* AgePicker.swift */,
4E363CBD2A23CB2100D7E98C /*
AnyTransition+backslide.swift */,
4E16E12229F3BB99008B9C86 /*
CurrencyFormatter.swift */,
4EAD117529F672FA008EDD0B /*
KeyboardResponder.swift */,
@@ -688,6 +691,7 @@
files = (
4ECB62822A0BB01D004ABBB7 /* SelectDays.swift in
Sources */,
4EB095512989CBFE0043A8A1 /* ExchangeModel.swift
in Sources */,
+ 4E9796902A3765ED006F73BC /* AgePicker.swift in
Sources */,
4EB095032989C9BC0043A8A1 /* Controller.swift in
Sources */,
4EB095682989CBFE0043A8A1 /* MainView.swift in
Sources */,
4EB0956A2989CBFE0043A8A1 /* Buttons.swift in
Sources */,
@@ -923,7 +927,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = "GNU
Taler.entitlements";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone
Distribution";
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone
Developer";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 6;
DEVELOPMENT_TEAM = "";
@@ -948,7 +952,7 @@
PRODUCT_BUNDLE_IDENTIFIER =
"com.taler-systems.talerwallet-1";
PRODUCT_NAME = "GNU Taler";
PROVISIONING_PROFILE_SPECIFIER = "";
- "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]"
= iOS_Distribution_230606;
+ "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]"
= Dev230612a;
SUPPORTED_PLATFORMS = "iphoneos
iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
diff --git a/TalerWallet1/Helper/AgePicker.swift
b/TalerWallet1/Helper/AgePicker.swift
new file mode 100644
index 0000000..6f02d82
--- /dev/null
+++ b/TalerWallet1/Helper/AgePicker.swift
@@ -0,0 +1,49 @@
+/*
+ * This file is part of GNU Taler, ©2022-23 Taler Systems S.A.
+ * See LICENSE.md
+ */
+import SwiftUI
+
+struct AgePicker: View {
+ @Binding var ageMenuList: [Int]
+ @Binding var selectedAge: Int
+
+ func setAges(ages: [Int]?) {
+ if let ages {
+ var zero: [Int] = []
+ if ages.count > 0 { // need at least 1 value from exchange
which is not 0
+ if ages[0] != 0 { // ensure that the first age
is "0"
+ zero.insert(0, at: 0) // if not, insert "0" at
position 0
+ }
+ zero += ages
+ if selectedAge >= zero.count { // check for out of bounds
+ selectedAge = 0
+ }
+ } else {
+ selectedAge = 0 // first ensure that selected
is not out of bounds
+ }
+ ageMenuList = zero // set State (will update view)
+ }
+ }
+
+ var body: some View {
+ if ageMenuList.count > 1 {
+ VStack {
+ HStack {
+ Text("If this wallet belongs to a child or teenager, the
generated coins should be age-restricted:")
+ .multilineTextAlignment(.leading)
+ .font(.footnote)
+ Spacer()
+ }.padding(.top)
+ Picker("Select age", selection: $selectedAge) {
+ ForEach($ageMenuList, id: \.self) { item in
+ let index = item.wrappedValue
+ Text((index == 0) ? "unrestricted"
+ : "\(index) years").tag(index)
+ }
+ }
+ }
+ }
+ }
+}
+
diff --git a/TalerWallet1/Views/Exchange/ManualWithdraw.swift
b/TalerWallet1/Views/Exchange/ManualWithdraw.swift
index db32716..194fd2d 100644
--- a/TalerWallet1/Views/Exchange/ManualWithdraw.swift
+++ b/TalerWallet1/Views/Exchange/ManualWithdraw.swift
@@ -41,6 +41,7 @@ struct ManualWithdraw: View {
#endif
let currency = exchange.currency!
let currencyField = CurrencyField(value: $centsToTransfer, currency:
currency) // becomeFirstResponder
+ let agePicker = AgePicker(ageMenuList: $ageMenuList, selectedAge:
$selectedAge)
ScrollView {
Text("from \(exchange.exchangeBaseUrl.trimURL())")
@@ -87,21 +88,8 @@ struct ManualWithdraw: View {
.foregroundColor(quiteSome ? .red : .primary)
} // warnings
- if ageMenuList.count > 1 {
- HStack {
- Text("If this wallet belongs to a child or
teenager, the generated coins should be age-restricted:")
- .multilineTextAlignment(.leading)
- .font(.footnote)
- Spacer()
- }.padding(.top)
- Picker("Select age", selection: $selectedAge) {
- ForEach($ageMenuList, id: \.self) { item in
- let index = item.wrappedValue
- Text((index == 0) ? "unlimited"
- : "\(index)
years").tag(index)
- }
- }
- }
+ agePicker
+
if let tosAcc = manualWithdrawalDetails?.tosAccepted {
if tosAcc {
let restrictAge: Int? = (selectedAge == 0) ? nil
@@ -141,22 +129,7 @@ let _ = print(selectedAge, restrictAge)
let amount = Amount.amountFromCents(currency, centsToTransfer)
do {
manualWithdrawalDetails = try await
model.loadWithdrawalDetailsForAmountM(exchange.exchangeBaseUrl, amount: amount)
- if let ageRestrictions =
manualWithdrawalDetails?.ageRestrictionOptions {
- var ages = ageRestrictions
- let nonzero = ages.count > 0 // need at least 1
value from exchange which is not 0
- if nonzero {
- if ages[0] != 0 { // ensure that the
first age is "0"
- ages.insert(0, at: 0) // if not, insert "0"
at position 0
- }
- if selectedAge >= ages.count { // check for out of
bounds
- selectedAge = 0
- }
- } else {
- selectedAge = 0 // first ensure that
selected is not out of bounds
- }
-print(ages)
- ageMenuList = ages // set State (will update
view)
- }
+ agePicker.setAges(ages:
manualWithdrawalDetails?.ageRestrictionOptions)
} catch { // TODO: error
symLog.log(error.localizedDescription)
manualWithdrawalDetails = nil
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-ios] branch master updated (7ce9180 -> f7f01e5), gnunet, 2023/06/30
- [taler-taler-ios] 02/54: Moved AgePicker in its own file,
gnunet <=
- [taler-taler-ios] 05/54: cleanup, back to Swift 5.8 (for now until Xcode 15 is usable), gnunet, 2023/06/30
- [taler-taler-ios] 04/54: PopToRoot instead of dismiss sheet, gnunet, 2023/06/30
- [taler-taler-ios] 03/54: Cleaned up buttons, gnunet, 2023/06/30
- [taler-taler-ios] 11/54: Accessibility, gnunet, 2023/06/30
- [taler-taler-ios] 18/54: remove loaded, gnunet, 2023/06/30
- [taler-taler-ios] 09/54: Launch animation, SideBarView, gnunet, 2023/06/30
- [taler-taler-ios] 01/54: Big update after DD37, gnunet, 2023/06/30
- [taler-taler-ios] 13/54: Overhaul withdraw + p2p, gnunet, 2023/06/30
- [taler-taler-ios] 17/54: for debugging time-outs, gnunet, 2023/06/30
- [taler-taler-ios] 10/54: Reduce Logging, gnunet, 2023/06/30