Skip to content

Commit 29a3abb

Browse files
committed
chore: review fixes
1 parent e8e75a5 commit 29a3abb

File tree

15 files changed

+74
-29
lines changed

15 files changed

+74
-29
lines changed

apps/ledger-live-desktop/src/mvvm/features/AddAccountDrawer/screens/ScanAccounts/useScanAccounts.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import { useDispatch, useSelector } from "LLD/hooks/redux";
88
import { Subscription } from "rxjs";
99
import { openModal } from "~/renderer/actions/modals";
1010
import { setDrawer } from "~/renderer/drawers/Provider";
11-
import { getCurrentDevice } from "~/renderer/reducers/devices";
1211
import * as RX from "rxjs/operators";
1312
import { getLLDCoinFamily } from "~/renderer/families";
1413
import { accountsSelector } from "~/renderer/reducers/accounts";
@@ -55,7 +54,6 @@ export function useScanAccounts({
5554
}: UseScanAccountsProps) {
5655
const { trackAddAccountEvent } = useAddAccountAnalytics();
5756
const existingAccounts = useSelector(accountsSelector);
58-
const device = useSelector(getCurrentDevice);
5957
const blacklistedTokenIds = useSelector(blacklistedTokenIdsSelector);
6058
const [error, setError] = useState(null);
6159
const dispatch = useDispatch();
@@ -188,9 +186,7 @@ export function useScanAccounts({
188186
dispatch(
189187
openModal("MODAL_CANTON_ONBOARD_ACCOUNT", {
190188
currency,
191-
device,
192189
selectedAccounts: selectedCantonCreatableAccounts,
193-
existingAccounts: existingAccounts,
194190
editedNames: {},
195191
}),
196192
);
@@ -235,7 +231,6 @@ export function useScanAccounts({
235231
existingAccounts,
236232
onComplete,
237233
currency,
238-
device,
239234
hasCantonCreatableAccounts,
240235
selectedCantonCreatableAccounts,
241236
hasConcordiumCreatableAccounts,

apps/ledger-live-desktop/src/renderer/families/canton/OnboardModal/__tests__/accountPreparation.test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,6 @@ describe("accountPreparation", () => {
135135

136136
const result = prepareAccountsForAdding({
137137
selectedAccounts: [accountToReonboard],
138-
existingAccounts: [],
139138
editedNames: {},
140139
isReonboarding: true,
141140
accountToReonboard,
@@ -153,7 +152,6 @@ describe("accountPreparation", () => {
153152

154153
const result = prepareAccountsForAdding({
155154
selectedAccounts: [used, unused],
156-
existingAccounts: [],
157155
editedNames: {},
158156
onboardingResult: { completedAccount: completed },
159157
});

apps/ledger-live-desktop/src/renderer/families/canton/OnboardModal/__tests__/useCantonBridge.test.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,26 @@ describe("useCantonBridge", () => {
6767
expect(mockBridge.onboardAccount).not.toHaveBeenCalled();
6868
});
6969

70+
it("should not start onboarding if bridge is null", () => {
71+
const { result } = renderHook(() => useCantonBridge({ ...defaultParams(), bridge: null }));
72+
73+
act(() => {
74+
result.current.startOnboarding();
75+
});
76+
77+
expect(mockSetOnboardingStatus).not.toHaveBeenCalled();
78+
});
79+
80+
it("should not start onboarding if currency is null", () => {
81+
const { result } = renderHook(() => useCantonBridge({ ...defaultParams(), currency: null }));
82+
83+
act(() => {
84+
result.current.startOnboarding();
85+
});
86+
87+
expect(mockSetOnboardingStatus).not.toHaveBeenCalled();
88+
});
89+
7090
it("should not start onboarding if accountToOnboard is undefined", () => {
7191
const mockBridge = createMockBridge();
7292
const { result } = renderHook(() =>
@@ -196,6 +216,30 @@ describe("useCantonBridge", () => {
196216
expect(mockBridge.authorizePreapproval).not.toHaveBeenCalled();
197217
});
198218

219+
it("should not authorize if bridge is null", () => {
220+
const onboardingResult = createMockOnboardingResult();
221+
222+
const { result } = renderHook(() => useCantonBridge({ ...defaultParams(), bridge: null }));
223+
224+
act(() => {
225+
result.current.authorizePreapproval(onboardingResult);
226+
});
227+
228+
expect(mockSetAuthorizeStatus).not.toHaveBeenCalled();
229+
});
230+
231+
it("should not authorize if currency is null", () => {
232+
const onboardingResult = createMockOnboardingResult();
233+
234+
const { result } = renderHook(() => useCantonBridge({ ...defaultParams(), currency: null }));
235+
236+
act(() => {
237+
result.current.authorizePreapproval(onboardingResult);
238+
});
239+
240+
expect(mockSetAuthorizeStatus).not.toHaveBeenCalled();
241+
});
242+
199243
it("should reset error and set PREPARE status when starting authorization", () => {
200244
const mockBridge = createMockBridge();
201245
const onboardingResult = createMockOnboardingResult();

apps/ledger-live-desktop/src/renderer/families/canton/OnboardModal/__tests__/useObservable.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,20 @@ describe("useObservable", () => {
4343
expect(mockOnNext).toHaveBeenNthCalledWith(3, "value3");
4444
});
4545

46+
it("should call onComplete when observable completes", () => {
47+
const { result } = renderHook(() => useObservable());
48+
const mockOnNext = jest.fn();
49+
const mockOnComplete = jest.fn();
50+
const observable = of("test-value");
51+
52+
act(() => {
53+
result.current.subscribe(observable, { onNext: mockOnNext, onComplete: mockOnComplete });
54+
});
55+
56+
expect(mockOnNext).toHaveBeenCalledWith("test-value");
57+
expect(mockOnComplete).toHaveBeenCalledTimes(1);
58+
});
59+
4660
it("should call onError when observable errors", () => {
4761
const { result } = renderHook(() => useObservable());
4862
const mockOnNext = jest.fn();

apps/ledger-live-desktop/src/renderer/families/canton/OnboardModal/hooks/useCantonBridge.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ function isApprovedAuthorizeResult(
4444
}
4545

4646
export interface UseCantonBridgeParams {
47-
bridge: CantonCurrencyBridge;
48-
currency: CryptoCurrency;
47+
bridge: CantonCurrencyBridge | null;
48+
currency: CryptoCurrency | null;
4949
device: Device | null | undefined;
5050
accountToOnboard: Account | undefined;
5151
setOnboardingStatus: (status: OnboardStatus) => void;
@@ -75,7 +75,7 @@ export function useCantonBridge({
7575
const { subscribe, unsubscribe } = useObservable();
7676

7777
const startOnboarding = useCallback(() => {
78-
if (!device || !accountToOnboard) {
78+
if (!bridge || !currency || !device || !accountToOnboard) {
7979
return;
8080
}
8181

@@ -125,7 +125,7 @@ export function useCantonBridge({
125125

126126
const authorizePreapproval = useCallback(
127127
(result: OnboardingResult) => {
128-
if (!device) {
128+
if (!bridge || !currency || !device) {
129129
return;
130130
}
131131

@@ -146,14 +146,16 @@ export function useCantonBridge({
146146
resetError();
147147
setOnboardingStatus(OnboardStatus.SUCCESS);
148148
setAuthorizeStatus(AuthorizeStatus.SUCCESS);
149-
onOnboardingComplete?.();
150149
} else if (isCantonAuthorizeProgress(value)) {
151150
setAuthorizeStatus(value.status);
152151
}
153152
},
154153
onError: (error: Error) => {
155154
setAuthorizationError(error);
156155
},
156+
onComplete: () => {
157+
onOnboardingComplete?.();
158+
},
157159
});
158160
} catch (error) {
159161
const err = error instanceof Error ? error : new Error(String(error));

apps/ledger-live-desktop/src/renderer/families/canton/OnboardModal/hooks/useObservable.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Observable, Subscription } from "rxjs";
44
interface UseObservableCallbacks<T> {
55
onNext: (value: T) => void;
66
onError?: (error: Error) => void;
7+
onComplete?: () => void;
78
}
89

910
export function useObservable() {
@@ -23,6 +24,9 @@ export function useObservable() {
2324
error: (error: Error) => {
2425
callbacks.onError?.(error);
2526
},
27+
complete: () => {
28+
callbacks.onComplete?.();
29+
},
2630
});
2731

2832
subscriptionRef.current = subscription;

apps/ledger-live-desktop/src/renderer/families/canton/OnboardModal/hooks/useOnboardModalViewModel.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ export function useOnboardModalViewModel({
8282
}, [transitionTo]);
8383

8484
const { startOnboarding, authorizePreapproval, unsubscribe } = useCantonBridge({
85-
bridge: bridge!,
86-
currency: currency!,
85+
bridge,
86+
currency,
8787
device,
8888
accountToOnboard: creatableAccount,
8989
setOnboardingStatus,
@@ -97,7 +97,7 @@ export function useOnboardModalViewModel({
9797
});
9898

9999
const { handleAddAccounts, handleAddMore } = useOnboardingNavigation({
100-
currency: currency!,
100+
currency,
101101
selectedAccounts,
102102
existingAccounts,
103103
editedNames,

apps/ledger-live-desktop/src/renderer/families/canton/OnboardModal/hooks/useOnboardingNavigation.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import type { OnboardingResult } from "../types";
99
import { prepareAccountsForAdding } from "../utils/accountPreparation";
1010

1111
export interface UseOnboardingNavigationParams {
12-
currency: CryptoCurrency;
12+
currency: CryptoCurrency | null;
1313
selectedAccounts: Account[];
1414
existingAccounts: Account[];
1515
editedNames: { [accountId: string]: string };
@@ -34,7 +34,6 @@ export function useOnboardingNavigation({
3434
const handleAddAccounts = useCallback(() => {
3535
const { accounts, renamings } = prepareAccountsForAdding({
3636
selectedAccounts,
37-
existingAccounts,
3837
editedNames,
3938
isReonboarding,
4039
accountToReonboard,
@@ -72,6 +71,7 @@ export function useOnboardingNavigation({
7271
]);
7372

7473
const handleAddMore = useCallback(() => {
74+
if (!currency) return;
7575
handleAddAccounts();
7676
dispatch(openModal("MODAL_ADD_ACCOUNTS", { currency }));
7777
}, [handleAddAccounts, dispatch, currency]);

apps/ledger-live-desktop/src/renderer/families/canton/OnboardModal/utils/accountPreparation.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { Account } from "@ledgerhq/types-live";
44

55
export type AddAccountsConfig = {
66
selectedAccounts: Account[];
7-
existingAccounts: Account[];
87
editedNames: { [accountId: string]: string };
98
isReonboarding?: boolean;
109
accountToReonboard?: Account;

apps/ledger-live-desktop/src/renderer/families/canton/PendingTransferProposals/index.test.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,6 @@ describe("PendingTransferProposals", () => {
190190
expect.objectContaining({
191191
currency: mockAccount.currency,
192192
device: mockDevice,
193-
accounts: [],
194193
mainAccount: mockAccount,
195194
navigationSnapshot: expect.objectContaining({
196195
type: "transfer-proposal",

0 commit comments

Comments
 (0)