# HG changeset patch # User Dennis Concepción Martín # Date 1627320303 -3600 # Node ID ce4eb7416b4177ba1bdef169791789932688a537 # Parent 1c7687d3037343e9ba4f00d84f2e3c3ff81a0738 Add SubscriptionFeatureRow diff -r 1c7687d30373 -r ce4eb7416b41 Simoleon.xcodeproj/project.pbxproj --- a/Simoleon.xcodeproj/project.pbxproj Mon Jul 26 18:24:27 2021 +0100 +++ b/Simoleon.xcodeproj/project.pbxproj Mon Jul 26 18:25:03 2021 +0100 @@ -11,6 +11,7 @@ 950A377826A820F800CAB175 /* DefaultCurrency+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 950A377526A820F400CAB175 /* DefaultCurrency+CoreDataClass.swift */; }; 9555933A269B0AB8000FD726 /* ParseJson.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95559339269B0AB8000FD726 /* ParseJson.swift */; }; 9555933D269B0E0A000FD726 /* CurrencyMetadata.json in Resources */ = {isa = PBXBuildFile; fileRef = 9555933C269B0E0A000FD726 /* CurrencyMetadata.json */; }; + 95561E3F26AF25EF00CCB543 /* SubscriptionFeature.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95561E3E26AF25EF00CCB543 /* SubscriptionFeature.swift */; }; 95562D4D26A8962A0047E778 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95562D4C26A8962A0047E778 /* StoreKit.framework */; }; 95562D5226A8AEF60047E778 /* Purchases in Frameworks */ = {isa = PBXBuildFile; productRef = 95562D5126A8AEF60047E778 /* Purchases */; }; 957065E226A5FE0400523E68 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 957065E126A5FE0400523E68 /* Settings.swift */; }; @@ -74,6 +75,7 @@ 950A377626A820F400CAB175 /* DefaultCurrency+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DefaultCurrency+CoreDataProperties.swift"; sourceTree = ""; }; 95559339269B0AB8000FD726 /* ParseJson.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseJson.swift; sourceTree = ""; }; 9555933C269B0E0A000FD726 /* CurrencyMetadata.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = CurrencyMetadata.json; sourceTree = ""; }; + 95561E3E26AF25EF00CCB543 /* SubscriptionFeature.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionFeature.swift; sourceTree = ""; }; 95562D4C26A8962A0047E778 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; 957065E126A5FE0400523E68 /* Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = ""; }; 9585BB0F26A6B58500E3193E /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; }; @@ -340,6 +342,7 @@ 95D8C8CC26A9784500BCC188 /* SubscribeButton.swift */, 95D8C8CE26A98A7900BCC188 /* RestoreButton.swift */, 95D8C8D026A9BC6200BCC188 /* LockedCurrencyPicker.swift */, + 95561E3E26AF25EF00CCB543 /* SubscriptionFeature.swift */, ); path = Helpers; sourceTree = ""; @@ -516,6 +519,7 @@ 95C5179126A5DC8E00BC2B24 /* ConditionalWrapper.swift in Sources */, 95B54F5126A4ACAC001DC0D8 /* Sidebar.swift in Sources */, 95B54F4626A48852001DC0D8 /* CurrencySelector.swift in Sources */, + 95561E3F26AF25EF00CCB543 /* SubscriptionFeature.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff -r 1c7687d30373 -r ce4eb7416b41 Simoleon.xcodeproj/project.xcworkspace/xcuserdata/dennis.xcuserdatad/UserInterfaceState.xcuserstate Binary file Simoleon.xcodeproj/project.xcworkspace/xcuserdata/dennis.xcuserdatad/UserInterfaceState.xcuserstate has changed diff -r 1c7687d30373 -r ce4eb7416b41 Simoleon/Helpers/CurrencySelector.swift --- a/Simoleon/Helpers/CurrencySelector.swift Mon Jul 26 18:24:27 2021 +0100 +++ b/Simoleon/Helpers/CurrencySelector.swift Mon Jul 26 18:25:03 2021 +0100 @@ -26,11 +26,9 @@ Button(action: { select(currencyPair) }) { CurrencyRow(currencyPair: currencyPair) } - .accessibilityIdentifier("CurrencyRowButton") } } } - .accessibilityIdentifier("AllCurrencies") .gesture(DragGesture() .onChanged({ _ in UIApplication.shared.dismissKeyboard() diff -r 1c7687d30373 -r ce4eb7416b41 Simoleon/Helpers/SubscriptionFeature.swift --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simoleon/Helpers/SubscriptionFeature.swift Mon Jul 26 18:25:03 2021 +0100 @@ -0,0 +1,41 @@ +// +// SubscriptionFeature.swift +// Simoleon +// +// Created by Dennis Concepción Martín on 26/07/2021. +// + +import SwiftUI + +struct SubscriptionFeature: View { + var symbol: LocalizedStringKey + var colour: Color + var title: LocalizedStringKey + var description: LocalizedStringKey + + var body: some View { + HStack(alignment:.top) { + Image(systemName: "\(symbol)") + .foregroundColor(colour) + .font(.title) + + VStack(alignment: .leading) { + Text(title) + .font(.headline) + + Text(description) + } + } + } +} + +struct SubscriptionFeature_Previews: PreviewProvider { + static var previews: some View { + SubscriptionFeature( + symbol: "star.circle.fill", + colour: Color(.systemYellow), + title: "Favourite currencies", + description: "Save your favourite currencies to access them quickly." + ) + } +} diff -r 1c7687d30373 -r ce4eb7416b41 Simoleon/Settings.swift --- a/Simoleon/Settings.swift Mon Jul 26 18:24:27 2021 +0100 +++ b/Simoleon/Settings.swift Mon Jul 26 18:25:03 2021 +0100 @@ -145,6 +145,5 @@ struct Settings_Previews: PreviewProvider { static var previews: some View { Settings() - .environment(\.locale, .init(identifier: "es")) } } diff -r 1c7687d30373 -r ce4eb7416b41 Simoleon/SubscriptionPaywall.swift --- a/Simoleon/SubscriptionPaywall.swift Mon Jul 26 18:24:27 2021 +0100 +++ b/Simoleon/SubscriptionPaywall.swift Mon Jul 26 18:25:03 2021 +0100 @@ -34,57 +34,33 @@ Divider() - HStack(alignment:.top) { - Image(systemName: "star.circle.fill") - .foregroundColor(Color(.systemYellow)) - .font(.title) - - VStack(alignment: .leading) { - Text("Favourite currencies", comment: "Subscription feature title") - .font(.headline) - - Text("Save your favourite currencies to access them quickly.", comment: "Subscription feature description") - } - } + SubscriptionFeature( + symbol: "star.circle.fill", + colour: Color(.systemYellow), + title: "Favourite currencies", + description: "Save your favourite currencies to access them quickly." + ) - HStack(alignment:.top) { - Image(systemName: "flag.circle.fill") - .foregroundColor(Color(.systemRed)) - .font(.title) - - VStack(alignment: .leading) { - Text("Over 170 currencies", comment: "Subscription feature title") - .font(.headline) - - Text("Have access to almost every currency of the world.", comment: "Subscription feature description") - } - } + SubscriptionFeature( + symbol: "flag.circle.fill", + colour: Color(.systemRed), + title: "Over 170 currencies", + description: "Have access to almost every currency of the world." + ) - HStack(alignment:.top) { - Image(systemName: "icloud.circle.fill") - .foregroundColor(Color(.systemBlue)) - .font(.title) - - VStack(alignment: .leading) { - Text("Simoleon on all your devices", comment: "Subscription feature title") - .font(.headline) - - Text("Your settings and favourite currencies in all your devices.", comment: "Subscription feature description") - } - } + SubscriptionFeature( + symbol: "icloud.circle.fill", + colour: Color(.systemBlue), + title: "Simoleon on all your devices", + description: "Your settings and favourite currencies in all your devices." + ) - HStack(alignment:.top) { - Image(systemName: "bitcoinsign.circle.fill") - .foregroundColor(Color(.systemOrange)) - .font(.title) - - VStack(alignment: .leading) { - Text("Cryptos and commodities", comment: "Subscription feature title") - .font(.headline) - - Text("Convert your currency between cryptos, gold, and silver.", comment: "Subscription feature description") - } - } + SubscriptionFeature( + symbol: "bitcoinsign.circle.fill", + colour: Color(.systemOrange), + title: "Cryptos and commodities", + description: "Convert your currency between cryptos, gold, and silver." + ) Spacer() SubscribeButton(showingSubscriptionPaywall: $showingSubscriptionPaywall)