Skip to content

Commit

Permalink
Hide buttons on balance tab (from appearance)
Browse files Browse the repository at this point in the history
  • Loading branch information
ant013 committed May 15, 2024
1 parent 5ee539c commit 05b73c4
Show file tree
Hide file tree
Showing 10 changed files with 75 additions and 4 deletions.
6 changes: 6 additions & 0 deletions UnstoppableWallet/UnstoppableWallet.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -2140,6 +2140,8 @@
6BAAF3472B9B245C00EFE5B2 /* ShimmerEffect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BAAF3442B9B245C00EFE5B2 /* ShimmerEffect.swift */; };
6BAAF3492B9B245C00EFE5B2 /* SlideButtonStyling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BAAF3452B9B245C00EFE5B2 /* SlideButtonStyling.swift */; };
6BAAF34B2B9B245C00EFE5B2 /* SlideButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BAAF3462B9B245C00EFE5B2 /* SlideButton.swift */; };
6BB14F6B2BF49E7100E879B2 /* WalletButtonHiddenManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BB14F6A2BF49E7100E879B2 /* WalletButtonHiddenManager.swift */; };
6BB14F6C2BF49E7100E879B2 /* WalletButtonHiddenManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BB14F6A2BF49E7100E879B2 /* WalletButtonHiddenManager.swift */; };
6BBCE4A32BDA419200ABBD55 /* Web3Wallet in Frameworks */ = {isa = PBXBuildFile; productRef = 6BBCE4A22BDA419200ABBD55 /* Web3Wallet */; };
6BBCE4A52BDA419B00ABBD55 /* Web3Wallet in Frameworks */ = {isa = PBXBuildFile; productRef = 6BBCE4A42BDA419B00ABBD55 /* Web3Wallet */; };
6BCD53002A161F4100993F20 /* BackupCloudModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BCD52F72A161F4100993F20 /* BackupCloudModule.swift */; };
Expand Down Expand Up @@ -4459,6 +4461,7 @@
6BAAF3442B9B245C00EFE5B2 /* ShimmerEffect.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShimmerEffect.swift; sourceTree = "<group>"; };
6BAAF3452B9B245C00EFE5B2 /* SlideButtonStyling.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SlideButtonStyling.swift; sourceTree = "<group>"; };
6BAAF3462B9B245C00EFE5B2 /* SlideButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SlideButton.swift; sourceTree = "<group>"; };
6BB14F6A2BF49E7100E879B2 /* WalletButtonHiddenManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletButtonHiddenManager.swift; sourceTree = "<group>"; };
6BCD52F72A161F4100993F20 /* BackupCloudModule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BackupCloudModule.swift; sourceTree = "<group>"; };
6BCD52F92A161F4100993F20 /* ICloudBackupTermsViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ICloudBackupTermsViewModel.swift; sourceTree = "<group>"; };
6BCD52FA2A161F4100993F20 /* ICloudBackupTermsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ICloudBackupTermsViewController.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -5729,6 +5732,7 @@
11B35196B818E6069195BAF1 /* KeychainManager.swift */,
11B3505A43D9C2787B3BD153 /* PasscodeLockManager.swift */,
11B359980AA45D6B44151D7A /* StatManager.swift */,
6BB14F6A2BF49E7100E879B2 /* WalletButtonHiddenManager.swift */,
);
path = Managers;
sourceTree = "<group>";
Expand Down Expand Up @@ -10765,6 +10769,7 @@
ABC9AE042D6A3D70CA64F959 /* ContactBookModule.swift in Sources */,
ABC9AFFD730AC3274811DA61 /* ContactBookContactViewController.swift in Sources */,
ABC9ACDDAD1927EB799150D2 /* ContactBookContactViewModel.swift in Sources */,
6BB14F6C2BF49E7100E879B2 /* WalletButtonHiddenManager.swift in Sources */,
ABC9ACC4CA8C9CBCA7C1A182 /* ContactBookContactService.swift in Sources */,
ABC9A6F88E51293F2605CACD /* ContactBookContactModule.swift in Sources */,
ABC9A69A1A01DBD07CAAC9CD /* ContactBookAddressViewController.swift in Sources */,
Expand Down Expand Up @@ -12320,6 +12325,7 @@
ABC9A05D9F96BE464CFC90CC /* ContactBookModule.swift in Sources */,
ABC9A30629619D5BD6CEB952 /* ContactBookContactViewController.swift in Sources */,
ABC9A20A25C4C683A73CB994 /* ContactBookContactViewModel.swift in Sources */,
6BB14F6B2BF49E7100E879B2 /* WalletButtonHiddenManager.swift in Sources */,
ABC9A2BE94B97921C3017C3F /* ContactBookContactService.swift in Sources */,
ABC9A307AAD83C3ED0D591C7 /* ContactBookContactModule.swift in Sources */,
ABC9AF81A6F30F0041FE1FAC /* ContactBookAddressViewController.swift in Sources */,
Expand Down
2 changes: 2 additions & 0 deletions UnstoppableWallet/UnstoppableWallet/Core/App.swift
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ class App {
let balancePrimaryValueManager: BalancePrimaryValueManager
let balanceHiddenManager: BalanceHiddenManager
let balanceConversionManager: BalanceConversionManager
let walletButtonHiddenManager: WalletButtonHiddenManager

let appVersionStorage: AppVersionStorage
let appVersionManager: AppVersionManager
Expand Down Expand Up @@ -139,6 +140,7 @@ class App {
balancePrimaryValueManager = BalancePrimaryValueManager(userDefaultsStorage: userDefaultsStorage)
balanceHiddenManager = BalanceHiddenManager(userDefaultsStorage: userDefaultsStorage)
balanceConversionManager = BalanceConversionManager(marketKit: marketKit, userDefaultsStorage: userDefaultsStorage)
walletButtonHiddenManager = WalletButtonHiddenManager(userDefaultsStorage: userDefaultsStorage)

let appVersionRecordStorage = AppVersionRecordStorage(dbPool: dbPool)
appVersionStorage = AppVersionStorage(storage: appVersionRecordStorage)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import RxRelay
import RxSwift

class WalletButtonHiddenManager {
private let keyButtonHidden = "wallet-button-hidden"

private let userDefaultsStorage: UserDefaultsStorage

private let buttonHiddenRelay = PublishRelay<Bool>()
var buttonHidden: Bool {
get {
userDefaultsStorage.value(for: keyButtonHidden) ?? false
}
set {
guard buttonHidden != newValue else { return }
userDefaultsStorage.set(value: newValue, for: keyButtonHidden)
buttonHiddenRelay.accept(newValue)
}
}

init(userDefaultsStorage: UserDefaultsStorage) {
self.userDefaultsStorage = userDefaultsStorage
}
}

extension WalletButtonHiddenManager {
var buttonHiddenObservable: Observable<Bool> {
buttonHiddenRelay.asObservable()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,13 @@ struct AppearanceView: View {
}
.toggleStyle(SwitchToggleStyle(tint: .themeYellow))
}
ListRow {
Image("arrow_swap_24").themeIcon()
Toggle(isOn: $viewModel.showBalanceButtons.animation()) {
Text("appearance.buttons_show".localized).themeBody()
}
.toggleStyle(SwitchToggleStyle(tint: .themeYellow))
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class AppearanceViewModel: ObservableObject {
private let appIconManager = App.shared.appIconManager
private let balancePrimaryValueManager = App.shared.balancePrimaryValueManager
private let balanceConversionManager = App.shared.balanceConversionManager
private let walletButtonHiddenManager = App.shared.walletButtonHiddenManager
private let currencyManager = App.shared.currencyManager
private let languageManager = LanguageManager.shared

Expand All @@ -35,6 +36,12 @@ class AppearanceViewModel: ObservableObject {
}
}

@Published var showBalanceButtons: Bool {
didSet {
walletButtonHiddenManager.buttonHidden = !showBalanceButtons
}
}

@Published var launchScreen: LaunchScreen {
didSet {
launchScreenManager.launchScreen = launchScreen
Expand Down Expand Up @@ -69,6 +76,7 @@ class AppearanceViewModel: ObservableObject {
balancePrimaryValue = balancePrimaryValueManager.balancePrimaryValue
appIcon = appIconManager.appIcon
baseCurrency = currencyManager.baseCurrency
showBalanceButtons = !walletButtonHiddenManager.buttonHidden

currencyManager.$baseCurrency.sink { [weak self] in self?.baseCurrency = $0 }.store(in: &cancellables)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ enum WalletModule {
reachabilityManager: App.shared.reachabilityManager,
balancePrimaryValueManager: App.shared.balancePrimaryValueManager,
balanceHiddenManager: App.shared.balanceHiddenManager,
buttonHiddenManager: App.shared.walletButtonHiddenManager,
balanceConversionManager: App.shared.balanceConversionManager,
cloudAccountBackupManager: App.shared.cloudBackupManager,
rateAppManager: App.shared.rateAppManager,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class WalletService {
private let reachabilityManager: IReachabilityManager
private let balancePrimaryValueManager: BalancePrimaryValueManager
private let balanceHiddenManager: BalanceHiddenManager
private let buttonHiddenManager: WalletButtonHiddenManager
private let balanceConversionManager: BalanceConversionManager
private let cloudAccountBackupManager: CloudBackupManager
private let rateAppManager: RateAppManager
Expand Down Expand Up @@ -75,7 +76,8 @@ class WalletService {

init(elementServiceFactory: WalletElementServiceFactory, coinPriceService: WalletCoinPriceService, accountManager: AccountManager,
cacheManager: EnabledWalletCacheManager, accountRestoreWarningManager: AccountRestoreWarningManager, reachabilityManager: IReachabilityManager,
balancePrimaryValueManager: BalancePrimaryValueManager, balanceHiddenManager: BalanceHiddenManager, balanceConversionManager: BalanceConversionManager,
balancePrimaryValueManager: BalancePrimaryValueManager, balanceHiddenManager: BalanceHiddenManager,
buttonHiddenManager: WalletButtonHiddenManager, balanceConversionManager: BalanceConversionManager,
cloudAccountBackupManager: CloudBackupManager, rateAppManager: RateAppManager, appManager: IAppManager, feeCoinProvider: FeeCoinProvider,
userDefaultsStorage: UserDefaultsStorage)
{
Expand All @@ -87,6 +89,7 @@ class WalletService {
self.reachabilityManager = reachabilityManager
self.balancePrimaryValueManager = balancePrimaryValueManager
self.balanceHiddenManager = balanceHiddenManager
self.buttonHiddenManager = buttonHiddenManager
self.balanceConversionManager = balanceConversionManager
self.cloudAccountBackupManager = cloudAccountBackupManager
self.rateAppManager = rateAppManager
Expand Down Expand Up @@ -437,6 +440,10 @@ extension WalletService {
balanceHiddenManager.balanceHiddenObservable
}

var buttonHiddenObservable: Observable<Bool> {
buttonHiddenManager.buttonHiddenObservable
}

var activeAccount: Account? {
accountManager.activeAccount
}
Expand All @@ -461,6 +468,10 @@ extension WalletService {
balanceHiddenManager.balanceHidden
}

var buttonHidden: Bool {
buttonHiddenManager.buttonHidden
}

var isReachable: Bool {
reachabilityManager.isReachable
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ extension WalletViewItemFactory {
)
}

func headerViewItem(totalItem: WalletService.TotalItem, balanceHidden: Bool, account: Account?) -> WalletModule.HeaderViewItem {
func headerViewItem(totalItem: WalletService.TotalItem, balanceHidden: Bool, buttonHidden: Bool, account: Account?) -> WalletModule.HeaderViewItem {
let amount = balanceHidden ? BalanceHiddenManager.placeholder : ValueFormatter.instance.formatShort(currencyValue: totalItem.currencyValue)

let convertedValue: String
Expand All @@ -181,7 +181,7 @@ extension WalletViewItemFactory {
amountExpired: balanceHidden ? false : totalItem.expired,
convertedValue: convertedValue,
convertedValueExpired: balanceHidden ? false : totalItem.convertedValueExpired,
buttons: headerButtons(account: account)
buttons: buttonHidden ? [:] : headerButtons(account: account)
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ class WalletViewModel {

subscribe(disposeBag, service.activeAccountObservable) { [weak self] in self?.sync(activeAccount: $0) }
subscribe(disposeBag, service.balanceHiddenObservable) { [weak self] _ in self?.onUpdateBalanceHidden() }
subscribe(disposeBag, service.buttonHiddenObservable) { [weak self] _ in self?.onUpdateButtonHidden() }
subscribe(disposeBag, service.itemUpdatedObservable) { [weak self] in self?.syncUpdated(item: $0) }
subscribe(disposeBag, service.sortTypeObservable) { [weak self] in self?.sync(sortType: $0, scrollToTop: true) }
subscribe(disposeBag, service.balancePrimaryValueObservable) { [weak self] _ in self?.onUpdateBalancePrimaryValue() }
Expand Down Expand Up @@ -103,12 +104,16 @@ class WalletViewModel {
sync(totalItem: service.totalItem)
}

private func onUpdateButtonHidden() {
sync(totalItem: service.totalItem)
}

private func onUpdateBalancePrimaryValue() {
sync(serviceState: service.state)
}

private func sync(totalItem: WalletService.TotalItem?) {
headerViewItem = totalItem.map { factory.headerViewItem(totalItem: $0, balanceHidden: service.balanceHidden, account: service.activeAccount) }
headerViewItem = totalItem.map { factory.headerViewItem(totalItem: $0, balanceHidden: service.balanceHidden, buttonHidden: service.buttonHidden, account: service.activeAccount) }
}

private func sync(sortType: WalletModule.SortType, scrollToTop: Bool) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1506,6 +1506,7 @@

"appearance.tab_settings" = "Tab Settings";
"appearance.markets_tab" = "Markets Tab";
"appearance.buttons_show" = "Balance Tab Buttons";
"appearance.launch_screen" = "Launch Screen";
"appearance.launch_screen.auto" = "Auto";
"appearance.launch_screen.balance" = "Balance";
Expand Down

0 comments on commit 05b73c4

Please sign in to comment.