Skip to content

Commit fa156a0

Browse files
committed
Update wallet NFT pinning state if setting changes
Resolves brave/brave-browser#29354
1 parent 9a80f8b commit fa156a0

File tree

5 files changed

+31
-1
lines changed

5 files changed

+31
-1
lines changed

components/brave_wallet/browser/brave_wallet_auto_pin_service.cc

+10-1
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,15 @@ void BraveWalletAutoPinService::Reset() {
5959
}
6060

6161
void BraveWalletAutoPinService::OnAutoPinStatusChanged() {
62-
if (IsAutoPinEnabled()) {
62+
auto enabled = IsAutoPinEnabled();
63+
if (enabled) {
6364
Restore();
6465
} else {
6566
queue_.clear();
6667
}
68+
for (const auto& observer : observers_) {
69+
observer->OnAutoPinStatusChanged(enabled);
70+
}
6771
}
6872

6973
BraveWalletAutoPinService::~BraveWalletAutoPinService() {}
@@ -330,4 +334,9 @@ void BraveWalletAutoPinService::IsAutoPinEnabled(
330334
std::move(callback).Run(IsAutoPinEnabled());
331335
}
332336

337+
void BraveWalletAutoPinService::AddObserver(
338+
::mojo::PendingRemote<mojom::WalletAutoPinServiceObserver> observer) {
339+
observers_.Add(std::move(observer));
340+
}
341+
333342
} // namespace brave_wallet

components/brave_wallet/browser/brave_wallet_auto_pin_service.h

+3
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ class BraveWalletAutoPinService
4949

5050
void SetAutoPinEnabled(bool enabled) override;
5151
void IsAutoPinEnabled(IsAutoPinEnabledCallback callback) override;
52+
void AddObserver(::mojo::PendingRemote<mojom::WalletAutoPinServiceObserver>
53+
observer) override;
5254

5355
// BraveWalletServiceTokenObserver
5456
void OnTokenAdded(mojom::BlockchainTokenPtr token) override;
@@ -110,6 +112,7 @@ class BraveWalletAutoPinService
110112
std::deque<std::unique_ptr<IntentData>> queue_;
111113

112114
std::unique_ptr<PrefChangeRegistrar> pref_change_registrar_;
115+
mojo::RemoteSet<mojom::WalletAutoPinServiceObserver> observers_;
113116

114117
base::WeakPtrFactory<BraveWalletAutoPinService> weak_ptr_factory_{this};
115118
};

components/brave_wallet/common/brave_wallet.mojom

+6
Original file line numberDiff line numberDiff line change
@@ -305,8 +305,14 @@ interface WalletPinService {
305305
IsTokenSupported(BlockchainToken token) => (bool result);
306306
};
307307

308+
interface WalletAutoPinServiceObserver {
309+
OnAutoPinStatusChanged(bool enabled);
310+
};
311+
308312
// Listens for added user tokens and automatically pins them.
309313
interface WalletAutoPinService {
314+
AddObserver(pending_remote<WalletAutoPinServiceObserver> observer);
315+
310316
// Enables autopinning, so old and new user tokens may be pinned.
311317
SetAutoPinEnabled(bool enabled);
312318
IsAutoPinEnabled() => (bool enabled);

components/brave_wallet_ui/common/wallet_api_proxy.ts

+11
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,17 @@ export class WalletApiProxy {
153153
})
154154
this.braveWalletPinService.addObserver(braveWalletServiceObserverReceiver.$.bindNewPipeAndPassRemote())
155155
}
156+
157+
addBraveWalletAutoPinServiceObserver (store: Store) {
158+
const braveWalletAutoPinServiceObserverReceiver = new BraveWallet.WalletAutoPinServiceObserverReceiver({
159+
onAutoPinStatusChanged: function (enabled) {
160+
store.dispatch(WalletPageActions.updateAutoPinEnabled(
161+
enabled
162+
))
163+
}
164+
})
165+
this.braveWalletAutoPinService.addObserver(braveWalletAutoPinServiceObserverReceiver.$.bindNewPipeAndPassRemote())
166+
}
156167
}
157168

158169
export default WalletApiProxy

components/brave_wallet_ui/page/store.ts

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ proxy.addKeyringServiceObserver(store)
4343
proxy.addTxServiceObserver(store)
4444
proxy.addBraveWalletServiceObserver(store)
4545
proxy.addBraveWalletPinServiceObserver(store)
46+
proxy.addBraveWalletAutoPinServiceObserver(store)
4647

4748
export const walletPageApiProxy = proxy
4849

0 commit comments

Comments
 (0)