diff --git a/WatchConnectivity.ios.js b/WatchConnectivity.ios.js
index 887576710..361626b61 100644
--- a/WatchConnectivity.ios.js
+++ b/WatchConnectivity.ios.js
@@ -7,7 +7,9 @@ import { BlueStorageContext } from './blue_modules/storage-context';
import Notifications from './blue_modules/notifications';
function WatchConnectivity() {
- const { walletsInitialized, wallets, fetchWalletTransactions, saveToDisk, txMetadata } = useContext(BlueStorageContext);
+ const { walletsInitialized, wallets, fetchWalletTransactions, saveToDisk, txMetadata, preferredFiatCurrency } = useContext(
+ BlueStorageContext,
+ );
const isReachable = useReachability();
const isInstalled = useInstalled(); // true | false
@@ -19,6 +21,21 @@ function WatchConnectivity() {
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [walletsInitialized, wallets, isReachable, isInstalled]);
+ useEffect(() => {
+ if (walletsInitialized) {
+ try {
+ updateApplicationContext({
+ preferredFiatCurrency: JSON.parse(preferredFiatCurrency).endPointKey,
+ randomID: Math.floor(Math.random() * 11),
+ });
+ } catch (e) {
+ console.log('WatchConnectivity useEffect preferredFiatCurrency error');
+ console.log(e);
+ }
+ }
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [preferredFiatCurrency, walletsInitialized]);
+
const handleMessages = (message, reply) => {
if (message.request === 'createInvoice') {
handleLightningInvoiceCreateRequest(message.walletIndex, message.amount, message.description)
diff --git a/blue_modules/currency.js b/blue_modules/currency.js
index 42fe78f82..d63a570a8 100644
--- a/blue_modules/currency.js
+++ b/blue_modules/currency.js
@@ -30,6 +30,7 @@ async function setPrefferedCurrency(item) {
async function getPreferredCurrency() {
const preferredCurrency = await JSON.parse(await AsyncStorage.getItem(AppStorage.PREFERRED_CURRENCY));
+ await DefaultPreference.setName('group.io.bluewallet.bluewallet');
await DefaultPreference.set('preferredCurrency', preferredCurrency.endPointKey);
await DefaultPreference.set('preferredCurrencyLocale', preferredCurrency.locale.replace('-', '_'));
return preferredCurrency;
diff --git a/ios/BlueWalletWatch Extension/BlueWalletWatch Extension.entitlements b/ios/BlueWalletWatch Extension/BlueWalletWatch Extension.entitlements
index 86bfd6c51..0c67376eb 100644
--- a/ios/BlueWalletWatch Extension/BlueWalletWatch Extension.entitlements
+++ b/ios/BlueWalletWatch Extension/BlueWalletWatch Extension.entitlements
@@ -1,10 +1,5 @@
-
- com.apple.security.application-groups
-
- group.io.bluewallet.bluewallet
-
-
+
diff --git a/ios/BlueWalletWatch Extension/ComplicationController.swift b/ios/BlueWalletWatch Extension/ComplicationController.swift
index 4ebfb3d15..2c1eff99d 100644
--- a/ios/BlueWalletWatch Extension/ComplicationController.swift
+++ b/ios/BlueWalletWatch Extension/ComplicationController.swift
@@ -41,13 +41,17 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
let valueLabel: String
let currencySymbol: String
- if let price = marketData?.formattedRateForComplication, let marketDatadata = marketData?.date, let userCurrencySymbol = fiatUnit(currency: WidgetAPI.getUserPreferredCurrency())?.symbol {
+ if let price = marketData?.formattedRateForComplication, let marketDatadata = marketData?.date {
date = marketDatadata
valueLabel = price
- currencySymbol = userCurrencySymbol
+ if let preferredFiatCurrency = UserDefaults.standard.string(forKey: "preferredFiatCurrency"), let preferredFiatUnit = fiatUnit(currency: preferredFiatCurrency) {
+ currencySymbol = preferredFiatUnit.symbol
+ } else {
+ currencySymbol = fiatUnit(currency: "USD")!.symbol
+ }
} else {
valueLabel = "--"
- currencySymbol = "USD"
+ currencySymbol = fiatUnit(currency: "USD")!.symbol
date = Date()
}
diff --git a/ios/BlueWalletWatch Extension/ExtensionDelegate.swift b/ios/BlueWalletWatch Extension/ExtensionDelegate.swift
index 4658dae65..b18a4a215 100644
--- a/ios/BlueWalletWatch Extension/ExtensionDelegate.swift
+++ b/ios/BlueWalletWatch Extension/ExtensionDelegate.swift
@@ -14,17 +14,32 @@ class ExtensionDelegate: NSObject, WKExtensionDelegate {
func applicationDidFinishLaunching() {
// Perform any final initialization of your application.
scheduleNextReload()
- WidgetAPI.fetchPrice(currency: WidgetAPI.getUserPreferredCurrency()) { [weak self] (data, error) in
+ ExtensionDelegate.preferredFiatCurrencyChanged()
+ }
+
+ static func preferredFiatCurrencyChanged() {
+ let fiatUnitUserDefaults: FiatUnit
+ if let preferredFiatCurrency = UserDefaults.standard.string(forKey: "preferredFiatCurrency"), let preferredFiatUnit = fiatUnit(currency: preferredFiatCurrency) {
+ fiatUnitUserDefaults = preferredFiatUnit
+ } else {
+ fiatUnitUserDefaults = fiatUnit(currency: "USD")!
+ }
+ WidgetAPI.fetchPrice(currency: fiatUnitUserDefaults.endPointKey) { (data, error) in
if let data = data, let encodedData = try? PropertyListEncoder().encode(data) {
UserDefaults.standard.set(encodedData, forKey: MarketData.string)
- self?.reloadActiveComplications()
+ UserDefaults.standard.synchronize()
+ let server = CLKComplicationServer.sharedInstance()
+
+ for complication in server.activeComplications ?? [] {
+ server.reloadTimeline(for: complication)
+ }
}
}
}
func nextReloadTime(after date: Date) -> Date {
let calendar = Calendar(identifier: .gregorian)
- return calendar.date(byAdding: .minute, value: 1, to: date)!
+ return calendar.date(byAdding: .minute, value: 10, to: date)!
}
func scheduleNextReload() {
@@ -60,14 +75,20 @@ class ExtensionDelegate: NSObject, WKExtensionDelegate {
func handle(_ backgroundTasks: Set) {
for task in backgroundTasks {
switch task {
- case let backgroundTask as WKApplicationRefreshBackgroundTask:
+ case let backgroundTask as WKApplicationRefreshBackgroundTask:
NSLog("ExtensionDelegate: handling WKApplicationRefreshBackgroundTask")
scheduleNextReload()
-
- WidgetAPI.fetchPrice(currency: WidgetAPI.getUserPreferredCurrency()) { [weak self] (data, error) in
+ let fiatUnitUserDefaults: FiatUnit
+ if let preferredFiatCurrency = UserDefaults.standard.string(forKey: "preferredFiatCurrency"), let preferredFiatUnit = fiatUnit(currency: preferredFiatCurrency) {
+ fiatUnitUserDefaults = preferredFiatUnit
+ } else {
+ fiatUnitUserDefaults = fiatUnit(currency: "USD")!
+ }
+ WidgetAPI.fetchPrice(currency: fiatUnitUserDefaults.endPointKey) { [weak self] (data, error) in
if let data = data, let encodedData = try? PropertyListEncoder().encode(data) {
UserDefaults.standard.set(encodedData, forKey: MarketData.string)
+ UserDefaults.standard.synchronize()
self?.reloadActiveComplications()
backgroundTask.setTaskCompletedWithSnapshot(false)
}
@@ -79,4 +100,6 @@ class ExtensionDelegate: NSObject, WKExtensionDelegate {
}
}
+
+
}
diff --git a/ios/BlueWalletWatch Extension/Objects/WatchDataSource.swift b/ios/BlueWalletWatch Extension/Objects/WatchDataSource.swift
index 3e463d162..be95e8f30 100644
--- a/ios/BlueWalletWatch Extension/Objects/WatchDataSource.swift
+++ b/ios/BlueWalletWatch Extension/Objects/WatchDataSource.swift
@@ -96,11 +96,23 @@ class WatchDataSource: NSObject, WCSessionDelegate {
}
func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String : Any]) {
- WatchDataSource.shared.processWalletsData(walletsInfo: applicationContext)
+ if let preferredFiatCurrency = applicationContext["preferredFiatCurrency"] as? String, let preferredFiatCurrencyUnit = fiatUnit(currency: preferredFiatCurrency) {
+ UserDefaults.standard.set(preferredFiatCurrencyUnit.endPointKey, forKey: "preferredFiatCurrency")
+ UserDefaults.standard.synchronize()
+ ExtensionDelegate.preferredFiatCurrencyChanged()
+ } else {
+ WatchDataSource.shared.processWalletsData(walletsInfo: applicationContext)
+ }
}
func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
- WatchDataSource.shared.processWalletsData(walletsInfo: applicationContext)
+ if let preferredFiatCurrency = applicationContext["preferredFiatCurrency"] as? String, let preferredFiatCurrencyUnit = fiatUnit(currency: preferredFiatCurrency) {
+ UserDefaults.standard.set(preferredFiatCurrencyUnit.endPointKey, forKey: "preferredFiatCurrency")
+ UserDefaults.standard.synchronize()
+ ExtensionDelegate.preferredFiatCurrencyChanged()
+ } else {
+ WatchDataSource.shared.processWalletsData(walletsInfo: applicationContext)
+ }
}
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
diff --git a/ios/BlueWalletWatch/BlueWalletWatch.entitlements b/ios/BlueWalletWatch/BlueWalletWatch.entitlements
index 86bfd6c51..0c67376eb 100644
--- a/ios/BlueWalletWatch/BlueWalletWatch.entitlements
+++ b/ios/BlueWalletWatch/BlueWalletWatch.entitlements
@@ -1,10 +1,5 @@
-
- com.apple.security.application-groups
-
- group.io.bluewallet.bluewallet
-
-
+
diff --git a/ios/WalletInformationWidget/Widgets/Shared/Models.swift b/ios/WalletInformationWidget/Widgets/Shared/Models.swift
index 5e13b8df6..25a600d51 100644
--- a/ios/WalletInformationWidget/Widgets/Shared/Models.swift
+++ b/ios/WalletInformationWidget/Widgets/Shared/Models.swift
@@ -61,3 +61,14 @@ enum MarketDataTimeline: String {
case Previous = "previous"
case Current = "current"
}
+
+enum UserDefaultsGroupKey: String {
+ case GroupName = "group.io.bluewallet.bluewallet"
+ case PreferredCurrency = "preferredCurrency"
+ case ElectrumSettingsHost = "electrum_host"
+ case ElectrumSettingsTCPPort = "electrum_tcp_port"
+ case ElectrumSettingsSSLPort = "electrum_ssl_port"
+ case AllWalletsBalance = "WidgetCommunicationAllWalletsSatoshiBalance"
+ case AllWalletsLatestTransactionTime = "WidgetCommunicationAllWalletsLatestTransactionTime"
+ case LatestTransactionIsUnconfirmed = "\"WidgetCommunicationLatestTransactionIsUnconfirmed\""
+}
diff --git a/ios/WalletInformationWidget/Widgets/Shared/UserDefaultsGroup.swift b/ios/WalletInformationWidget/Widgets/Shared/UserDefaultsGroup.swift
index cce998598..79736f481 100644
--- a/ios/WalletInformationWidget/Widgets/Shared/UserDefaultsGroup.swift
+++ b/ios/WalletInformationWidget/Widgets/Shared/UserDefaultsGroup.swift
@@ -8,17 +8,6 @@
import Foundation
-enum UserDefaultsGroupKey: String {
- case GroupName = "group.io.bluewallet.bluewallet"
- case PreferredCurrency = "preferredCurrency"
- case ElectrumSettingsHost = "electrum_host"
- case ElectrumSettingsTCPPort = "electrum_tcp_port"
- case ElectrumSettingsSSLPort = "electrum_ssl_port"
- case AllWalletsBalance = "WidgetCommunicationAllWalletsSatoshiBalance"
- case AllWalletsLatestTransactionTime = "WidgetCommunicationAllWalletsLatestTransactionTime"
- case LatestTransactionIsUnconfirmed = "\"WidgetCommunicationLatestTransactionIsUnconfirmed\""
-}
-
struct UserDefaultsElectrumSettings {
let host: String?
let port: Int32?
diff --git a/ios/WalletInformationWidget/Widgets/Shared/WidgetAPI.swift b/ios/WalletInformationWidget/Widgets/Shared/WidgetAPI.swift
index c8cda89f5..25e60ef74 100644
--- a/ios/WalletInformationWidget/Widgets/Shared/WidgetAPI.swift
+++ b/ios/WalletInformationWidget/Widgets/Shared/WidgetAPI.swift
@@ -42,7 +42,8 @@ class WidgetAPI {
}
static func getUserPreferredCurrency() -> String {
- guard let userDefaults = UserDefaults(suiteName: "group.io.bluewallet.bluewallet"),
+
+ guard let userDefaults = UserDefaults(suiteName: UserDefaultsGroupKey.GroupName.rawValue),
let preferredCurrency = userDefaults.string(forKey: "preferredCurrency")
else {
return "USD"
@@ -58,7 +59,7 @@ class WidgetAPI {
}
static func getUserPreferredCurrencyLocale() -> String {
- guard let userDefaults = UserDefaults(suiteName: "group.io.bluewallet.bluewallet"),
+ guard let userDefaults = UserDefaults(suiteName: UserDefaultsGroupKey.GroupName.rawValue),
let preferredCurrency = userDefaults.string(forKey: "preferredCurrencyLocale")
else {
return "en_US"