diff --git a/ios/BlueWallet.xcodeproj/project.pbxproj b/ios/BlueWallet.xcodeproj/project.pbxproj index f0e104a9..df47e8e9 100644 --- a/ios/BlueWallet.xcodeproj/project.pbxproj +++ b/ios/BlueWallet.xcodeproj/project.pbxproj @@ -714,6 +714,7 @@ 3271B0A8236E2E0700DA766F = { CreatedOnToolsVersion = 11.2; DevelopmentTeam = A7W54YZ4WU; + LastSwiftMigration = 1130; ProvisioningStyle = Automatic; }; B40D4E2F225841EC00428FCC = { @@ -724,6 +725,7 @@ B40D4E3B225841ED00428FCC = { CreatedOnToolsVersion = 10.2; DevelopmentTeam = A7W54YZ4WU; + LastSwiftMigration = 1130; ProvisioningStyle = Manual; SystemCapabilities = { com.apple.Keychain = { @@ -904,54 +906,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 4FDB39F68F10F51AE790BD25 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-BlueWallet/Pods-BlueWallet-resources.sh", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-BlueWallet/Pods-BlueWallet-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; 6F7747C31A9EE6DDC5108476 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1584,7 +1538,7 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -1614,7 +1568,7 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; @@ -1751,7 +1705,7 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; WATCHOS_DEPLOYMENT_TARGET = 5.0; }; @@ -1784,7 +1738,7 @@ SDKROOT = watchos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 4; WATCHOS_DEPLOYMENT_TARGET = 5.0; }; diff --git a/ios/BlueWalletWatch Extension/Objects/WatchDataSource.swift b/ios/BlueWalletWatch Extension/Objects/WatchDataSource.swift index 2806c69e..7d0177f4 100644 --- a/ios/BlueWalletWatch Extension/Objects/WatchDataSource.swift +++ b/ios/BlueWalletWatch Extension/Objects/WatchDataSource.swift @@ -88,7 +88,7 @@ class WatchDataSource: NSObject, WCSessionDelegate { func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) { if activationState == .activated { - if let existingData = keychain.getData(Wallet.identifier), let walletData = try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(existingData) as? [Wallet] { + if let existingData = keychain.getData(Wallet.identifier), let walletData = ((try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(existingData) as? [Wallet]) as [Wallet]??) { guard let walletData = walletData, walletData != self.wallets else { return } wallets = walletData WatchDataSource.postDataUpdatedNotification() diff --git a/ios/TodayExtension/New Group/API.swift b/ios/TodayExtension/New Group/API.swift index 3a49ad4c..a74d4e76 100644 --- a/ios/TodayExtension/New Group/API.swift +++ b/ios/TodayExtension/New Group/API.swift @@ -15,7 +15,7 @@ class API { URLSession.shared.dataTask(with: url) { (data, response, error) in guard let dataResponse = data, - let json = try? JSONSerialization.jsonObject(with: dataResponse, options: .mutableContainers) as? Dictionary, + let json = ((try? JSONSerialization.jsonObject(with: dataResponse, options: .mutableContainers) as? Dictionary) as Dictionary??), error == nil else { print(error?.localizedDescription ?? "Response Error") completion(nil, error) diff --git a/ios/TodayExtension/TodayDataStore.swift b/ios/TodayExtension/TodayDataStore.swift index 5059b112..ff2eda31 100644 --- a/ios/TodayExtension/TodayDataStore.swift +++ b/ios/TodayExtension/TodayDataStore.swift @@ -25,13 +25,13 @@ struct TodayDataStore { } var rateDoubleValue: Double? { - let rateDigits = rate.replacingOccurrences(of: ",", with: ""); let numberFormatter = NumberFormatter() numberFormatter.numberStyle = .decimal + numberFormatter.locale = Locale(identifier: API.getUserPreferredCurrencyLocale()) numberFormatter.maximumFractionDigits = 2 numberFormatter.minimumFractionDigits = 2 - if let rateDoubleValue = numberFormatter.number(from: rateDigits) { + if let rateDoubleValue = numberFormatter.number(from: rate) { return rateDoubleValue.doubleValue } @@ -39,17 +39,16 @@ struct TodayDataStore { } var formattedRate: String? { - let rateDigits = rate.replacingOccurrences(of: ",", with: ""); let numberFormatter = NumberFormatter() + numberFormatter.locale = Locale(identifier: API.getUserPreferredCurrencyLocale()) numberFormatter.numberStyle = .decimal numberFormatter.maximumFractionDigits = 2 numberFormatter.minimumFractionDigits = 2 - if let rateNumber = numberFormatter.number(from: rateDigits) { + if let rateNumber = numberFormatter.number(from: rate) { numberFormatter.numberStyle = .currency - numberFormatter.locale = Locale(identifier: API.getUserPreferredCurrencyLocale()) return numberFormatter.string(from: rateNumber); } - return nil + return rate } } diff --git a/ios/TodayExtension/TodayViewController.swift b/ios/TodayExtension/TodayViewController.swift index fa23710c..12c59289 100644 --- a/ios/TodayExtension/TodayViewController.swift +++ b/ios/TodayExtension/TodayViewController.swift @@ -100,6 +100,8 @@ class TodayViewController: UIViewController, NCWidgetProviding { guard let bpi = result["bpi"] as? Dictionary, let preferredCurrency = bpi[userPreferredCurrency] as? Dictionary, let rateString = preferredCurrency["rate"] as? String, let time = result["time"] as? Dictionary, let lastUpdatedString = time["updatedISO"] as? String else { + self.lastUpdatedDate.text = "Obtained unexpected information." + completionHandler(.failed) return }