@ledgerhq/live-common 34.54.0-nightly.20251127023715 → 34.54.0-nightly.20251127103328

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/lib/hooks/useAccountsWithFundsListener.d.ts +1 -1
  2. package/lib/hooks/useAccountsWithFundsListener.d.ts.map +1 -1
  3. package/lib/hooks/useAccountsWithFundsListener.js +2 -1
  4. package/lib/hooks/useAccountsWithFundsListener.js.map +1 -1
  5. package/lib/postOnboarding/hooks/index.d.ts +1 -0
  6. package/lib/postOnboarding/hooks/index.d.ts.map +1 -1
  7. package/lib/postOnboarding/hooks/index.js +1 -0
  8. package/lib/postOnboarding/hooks/index.js.map +1 -1
  9. package/lib/postOnboarding/hooks/useCheckAccountWithFundsAction.d.ts +3 -0
  10. package/lib/postOnboarding/hooks/useCheckAccountWithFundsAction.d.ts.map +1 -0
  11. package/lib/postOnboarding/hooks/useCheckAccountWithFundsAction.js +21 -0
  12. package/lib/postOnboarding/hooks/useCheckAccountWithFundsAction.js.map +1 -0
  13. package/lib-es/hooks/useAccountsWithFundsListener.d.ts +1 -1
  14. package/lib-es/hooks/useAccountsWithFundsListener.d.ts.map +1 -1
  15. package/lib-es/hooks/useAccountsWithFundsListener.js +2 -1
  16. package/lib-es/hooks/useAccountsWithFundsListener.js.map +1 -1
  17. package/lib-es/postOnboarding/hooks/index.d.ts +1 -0
  18. package/lib-es/postOnboarding/hooks/index.d.ts.map +1 -1
  19. package/lib-es/postOnboarding/hooks/index.js +1 -0
  20. package/lib-es/postOnboarding/hooks/index.js.map +1 -1
  21. package/lib-es/postOnboarding/hooks/useCheckAccountWithFundsAction.d.ts +3 -0
  22. package/lib-es/postOnboarding/hooks/useCheckAccountWithFundsAction.d.ts.map +1 -0
  23. package/lib-es/postOnboarding/hooks/useCheckAccountWithFundsAction.js +17 -0
  24. package/lib-es/postOnboarding/hooks/useCheckAccountWithFundsAction.js.map +1 -0
  25. package/package.json +53 -53
  26. package/src/hooks/useAccountsWithFundsListener.ts +2 -0
  27. package/src/postOnboarding/hooks/index.ts +1 -0
  28. package/src/postOnboarding/hooks/useCheckAccountWithFundsAction.test.ts +99 -0
  29. package/src/postOnboarding/hooks/useCheckAccountWithFundsAction.ts +24 -0
@@ -10,6 +10,6 @@ export declare function hasAccountsWithFundsChanged(accounts: Account[], oldAcco
10
10
  * Watches for changes in the accounts with funds (see comment on the function above for more details) and it triggers
11
11
  * the callback function when a change occurs.
12
12
  */
13
- declare function useAccountsWithFundsListener(accounts: Account[], callback: () => void, debounceTimer?: number): void;
13
+ declare function useAccountsWithFundsListener(accounts: Account[], callback: () => void, callbackForAccounts: (accounts: Account[]) => void, debounceTimer?: number): void;
14
14
  export default useAccountsWithFundsListener;
15
15
  //# sourceMappingURL=useAccountsWithFundsListener.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAccountsWithFundsListener.d.ts","sourceRoot":"","sources":["../../src/hooks/useAccountsWithFundsListener.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,CAqChG;AAED;;;GAGG;AACH,iBAAS,4BAA4B,CACnC,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,EAAE,MAAM,IAAI,EACpB,aAAa,GAAE,MAAa,QAgB7B;AAED,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"useAccountsWithFundsListener.d.ts","sourceRoot":"","sources":["../../src/hooks/useAccountsWithFundsListener.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,CAqChG;AAED;;;GAGG;AACH,iBAAS,4BAA4B,CACnC,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,EAAE,MAAM,IAAI,EACpB,mBAAmB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,EAClD,aAAa,GAAE,MAAa,QAiB7B;AAED,eAAe,4BAA4B,CAAC"}
@@ -50,12 +50,13 @@ exports.hasAccountsWithFundsChanged = hasAccountsWithFundsChanged;
50
50
  * Watches for changes in the accounts with funds (see comment on the function above for more details) and it triggers
51
51
  * the callback function when a change occurs.
52
52
  */
53
- function useAccountsWithFundsListener(accounts, callback, debounceTimer = 3000) {
53
+ function useAccountsWithFundsListener(accounts, callback, callbackForAccounts, debounceTimer = 3000) {
54
54
  const oldAccounts = (0, react_1.useRef)([]);
55
55
  const debouncedUseEffect = (0, react_1.useMemo)(() => (0, debounce_1.default)(() => {
56
56
  if (hasAccountsWithFundsChanged(accounts, oldAccounts.current)) {
57
57
  callback();
58
58
  }
59
+ callbackForAccounts(accounts);
59
60
  oldAccounts.current = accounts;
60
61
  }, debounceTimer), [accounts]);
61
62
  (0, react_1.useEffect)(debouncedUseEffect, [debouncedUseEffect]);
@@ -1 +1 @@
1
- {"version":3,"file":"useAccountsWithFundsListener.js","sourceRoot":"","sources":["../../src/hooks/useAccountsWithFundsListener.ts"],"names":[],"mappings":";;;;;;AAAA,iCAAmD;AACnD,+DAAuC;AAGvC;;;;;GAKG;AACH,SAAgB,2BAA2B,CAAC,QAAmB,EAAE,WAAsB;IACrF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;QAE1E,oCAAoC;QACpC,IAAI,CAAC,kBAAkB,EAAE;YACvB,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;gBACpC,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,SAAS;aACV;SACF;QAED,uCAAuC;QACvC,MAAM,qBAAqB,GACzB,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,kBAAkB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,uBAAuB,GAC3B,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,kBAAkB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QAE5E,IAAI,qBAAqB,IAAI,uBAAuB,EAAE;YACpD,OAAO,IAAI,CAAC;SACb;KACF;IAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QACpC,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;QAEvE,yCAAyC;QACzC,IAAI,CAAC,eAAe,EAAE;YACpB,IAAI,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;gBACvC,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,SAAS;aACV;SACF;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AArCD,kEAqCC;AAED;;;GAGG;AACH,SAAS,4BAA4B,CACnC,QAAmB,EACnB,QAAoB,EACpB,gBAAwB,IAAI;IAE5B,MAAM,WAAW,GAAG,IAAA,cAAM,EAAY,EAAE,CAAC,CAAC;IAE1C,MAAM,kBAAkB,GAAG,IAAA,eAAO,EAChC,GAAG,EAAE,CACH,IAAA,kBAAQ,EAAC,GAAG,EAAE;QACZ,IAAI,2BAA2B,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE;YAC9D,QAAQ,EAAE,CAAC;SACZ;QACD,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,EAAE,aAAa,CAAC,EACnB,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,IAAA,iBAAS,EAAC,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,kBAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"useAccountsWithFundsListener.js","sourceRoot":"","sources":["../../src/hooks/useAccountsWithFundsListener.ts"],"names":[],"mappings":";;;;;;AAAA,iCAAmD;AACnD,+DAAuC;AAGvC;;;;;GAKG;AACH,SAAgB,2BAA2B,CAAC,QAAmB,EAAE,WAAsB;IACrF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;QAE1E,oCAAoC;QACpC,IAAI,CAAC,kBAAkB,EAAE;YACvB,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;gBACpC,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,SAAS;aACV;SACF;QAED,uCAAuC;QACvC,MAAM,qBAAqB,GACzB,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,kBAAkB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,uBAAuB,GAC3B,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,kBAAkB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QAE5E,IAAI,qBAAqB,IAAI,uBAAuB,EAAE;YACpD,OAAO,IAAI,CAAC;SACb;KACF;IAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QACpC,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;QAEvE,yCAAyC;QACzC,IAAI,CAAC,eAAe,EAAE;YACpB,IAAI,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;gBACvC,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,SAAS;aACV;SACF;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AArCD,kEAqCC;AAED;;;GAGG;AACH,SAAS,4BAA4B,CACnC,QAAmB,EACnB,QAAoB,EACpB,mBAAkD,EAClD,gBAAwB,IAAI;IAE5B,MAAM,WAAW,GAAG,IAAA,cAAM,EAAY,EAAE,CAAC,CAAC;IAE1C,MAAM,kBAAkB,GAAG,IAAA,eAAO,EAChC,GAAG,EAAE,CACH,IAAA,kBAAQ,EAAC,GAAG,EAAE;QACZ,IAAI,2BAA2B,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE;YAC9D,QAAQ,EAAE,CAAC;SACZ;QACD,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC9B,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,EAAE,aAAa,CAAC,EACnB,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,IAAA,iBAAS,EAAC,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,kBAAe,4BAA4B,CAAC"}
@@ -5,4 +5,5 @@ export * from "./usePostOnboardingHubState";
5
5
  export * from "./useStartPostOnboardingCallback";
6
6
  export * from "./useAutoDismissPostOnboardingEntryPoint";
7
7
  export * from "./usePostOnboardingDeeplinkHandler";
8
+ export * from "./useCheckAccountWithFundsAction";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postOnboarding/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postOnboarding/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC"}
@@ -21,4 +21,5 @@ __exportStar(require("./usePostOnboardingHubState"), exports);
21
21
  __exportStar(require("./useStartPostOnboardingCallback"), exports);
22
22
  __exportStar(require("./useAutoDismissPostOnboardingEntryPoint"), exports);
23
23
  __exportStar(require("./usePostOnboardingDeeplinkHandler"), exports);
24
+ __exportStar(require("./useCheckAccountWithFundsAction"), exports);
24
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/postOnboarding/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yEAAuD;AACvD,6DAA2C;AAC3C,+EAA6D;AAC7D,8DAA4C;AAC5C,mEAAiD;AACjD,2EAAyD;AACzD,qEAAmD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/postOnboarding/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yEAAuD;AACvD,6DAA2C;AAC3C,+EAA6D;AAC7D,8DAA4C;AAC5C,mEAAiD;AACjD,2EAAyD;AACzD,qEAAmD;AACnD,mEAAiD"}
@@ -0,0 +1,3 @@
1
+ import { Account, PostOnboardingActionId } from "@ledgerhq/types-live";
2
+ export declare function useCheckAccountWithFundsAction(completeAction: (action: PostOnboardingActionId) => void): (accounts: Account[]) => void;
3
+ //# sourceMappingURL=useCheckAccountWithFundsAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCheckAccountWithFundsAction.d.ts","sourceRoot":"","sources":["../../../src/postOnboarding/hooks/useCheckAccountWithFundsAction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAIvE,wBAAgB,8BAA8B,CAC5C,cAAc,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,cAO3C,OAAO,EAAE,UAUvB"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useCheckAccountWithFundsAction = void 0;
4
+ const react_redux_1 = require("react-redux");
5
+ const types_live_1 = require("@ledgerhq/types-live");
6
+ const react_1 = require("react");
7
+ const reducer_1 = require("../reducer");
8
+ function useCheckAccountWithFundsAction(completeAction) {
9
+ const hubState = (0, react_redux_1.useSelector)(reducer_1.hubStateSelector);
10
+ const isAssetTransferComplete = hubState.actionsCompleted?.[types_live_1.PostOnboardingActionId.assetsTransfer];
11
+ const handleAccountsUpdate = (0, react_1.useCallback)((accounts) => {
12
+ if (!isAssetTransferComplete) {
13
+ const hasAccountsWithFunds = accounts.some(account => account?.balance.isGreaterThan(0));
14
+ if (hasAccountsWithFunds)
15
+ completeAction(types_live_1.PostOnboardingActionId.assetsTransfer);
16
+ }
17
+ }, [completeAction, isAssetTransferComplete]);
18
+ return handleAccountsUpdate;
19
+ }
20
+ exports.useCheckAccountWithFundsAction = useCheckAccountWithFundsAction;
21
+ //# sourceMappingURL=useCheckAccountWithFundsAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCheckAccountWithFundsAction.js","sourceRoot":"","sources":["../../../src/postOnboarding/hooks/useCheckAccountWithFundsAction.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAC1C,qDAAuE;AACvE,iCAAoC;AACpC,wCAA8C;AAE9C,SAAgB,8BAA8B,CAC5C,cAAwD;IAExD,MAAM,QAAQ,GAAG,IAAA,yBAAW,EAAC,0BAAgB,CAAC,CAAC;IAC/C,MAAM,uBAAuB,GAC3B,QAAQ,CAAC,gBAAgB,EAAE,CAAC,mCAAsB,CAAC,cAAc,CAAC,CAAC;IAErE,MAAM,oBAAoB,GAAG,IAAA,mBAAW,EACtC,CAAC,QAAmB,EAAE,EAAE;QACtB,IAAI,CAAC,uBAAuB,EAAE;YAC5B,MAAM,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,IAAI,oBAAoB;gBAAE,cAAc,CAAC,mCAAsB,CAAC,cAAc,CAAC,CAAC;SACjF;IACH,CAAC,EACD,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAC1C,CAAC;IAEF,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAlBD,wEAkBC"}
@@ -10,6 +10,6 @@ export declare function hasAccountsWithFundsChanged(accounts: Account[], oldAcco
10
10
  * Watches for changes in the accounts with funds (see comment on the function above for more details) and it triggers
11
11
  * the callback function when a change occurs.
12
12
  */
13
- declare function useAccountsWithFundsListener(accounts: Account[], callback: () => void, debounceTimer?: number): void;
13
+ declare function useAccountsWithFundsListener(accounts: Account[], callback: () => void, callbackForAccounts: (accounts: Account[]) => void, debounceTimer?: number): void;
14
14
  export default useAccountsWithFundsListener;
15
15
  //# sourceMappingURL=useAccountsWithFundsListener.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAccountsWithFundsListener.d.ts","sourceRoot":"","sources":["../../src/hooks/useAccountsWithFundsListener.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,CAqChG;AAED;;;GAGG;AACH,iBAAS,4BAA4B,CACnC,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,EAAE,MAAM,IAAI,EACpB,aAAa,GAAE,MAAa,QAgB7B;AAED,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"useAccountsWithFundsListener.d.ts","sourceRoot":"","sources":["../../src/hooks/useAccountsWithFundsListener.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,CAqChG;AAED;;;GAGG;AACH,iBAAS,4BAA4B,CACnC,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,EAAE,MAAM,IAAI,EACpB,mBAAmB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,EAClD,aAAa,GAAE,MAAa,QAiB7B;AAED,eAAe,4BAA4B,CAAC"}
@@ -43,12 +43,13 @@ export function hasAccountsWithFundsChanged(accounts, oldAccounts) {
43
43
  * Watches for changes in the accounts with funds (see comment on the function above for more details) and it triggers
44
44
  * the callback function when a change occurs.
45
45
  */
46
- function useAccountsWithFundsListener(accounts, callback, debounceTimer = 3000) {
46
+ function useAccountsWithFundsListener(accounts, callback, callbackForAccounts, debounceTimer = 3000) {
47
47
  const oldAccounts = useRef([]);
48
48
  const debouncedUseEffect = useMemo(() => debounce(() => {
49
49
  if (hasAccountsWithFundsChanged(accounts, oldAccounts.current)) {
50
50
  callback();
51
51
  }
52
+ callbackForAccounts(accounts);
52
53
  oldAccounts.current = accounts;
53
54
  }, debounceTimer), [accounts]);
54
55
  useEffect(debouncedUseEffect, [debouncedUseEffect]);
@@ -1 +1 @@
1
- {"version":3,"file":"useAccountsWithFundsListener.js","sourceRoot":"","sources":["../../src/hooks/useAccountsWithFundsListener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAGvC;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,QAAmB,EAAE,WAAsB;IACrF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;QAE1E,oCAAoC;QACpC,IAAI,CAAC,kBAAkB,EAAE;YACvB,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;gBACpC,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,SAAS;aACV;SACF;QAED,uCAAuC;QACvC,MAAM,qBAAqB,GACzB,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,kBAAkB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,uBAAuB,GAC3B,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,kBAAkB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QAE5E,IAAI,qBAAqB,IAAI,uBAAuB,EAAE;YACpD,OAAO,IAAI,CAAC;SACb;KACF;IAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QACpC,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;QAEvE,yCAAyC;QACzC,IAAI,CAAC,eAAe,EAAE;YACpB,IAAI,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;gBACvC,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,SAAS;aACV;SACF;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,4BAA4B,CACnC,QAAmB,EACnB,QAAoB,EACpB,gBAAwB,IAAI;IAE5B,MAAM,WAAW,GAAG,MAAM,CAAY,EAAE,CAAC,CAAC;IAE1C,MAAM,kBAAkB,GAAG,OAAO,CAChC,GAAG,EAAE,CACH,QAAQ,CAAC,GAAG,EAAE;QACZ,IAAI,2BAA2B,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE;YAC9D,QAAQ,EAAE,CAAC;SACZ;QACD,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,EAAE,aAAa,CAAC,EACnB,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,SAAS,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"useAccountsWithFundsListener.js","sourceRoot":"","sources":["../../src/hooks/useAccountsWithFundsListener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAGvC;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,QAAmB,EAAE,WAAsB;IACrF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;QAE1E,oCAAoC;QACpC,IAAI,CAAC,kBAAkB,EAAE;YACvB,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;gBACpC,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,SAAS;aACV;SACF;QAED,uCAAuC;QACvC,MAAM,qBAAqB,GACzB,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,kBAAkB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,uBAAuB,GAC3B,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,kBAAkB,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QAE5E,IAAI,qBAAqB,IAAI,uBAAuB,EAAE;YACpD,OAAO,IAAI,CAAC;SACb;KACF;IAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QACpC,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;QAEvE,yCAAyC;QACzC,IAAI,CAAC,eAAe,EAAE;YACpB,IAAI,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;gBACvC,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,SAAS;aACV;SACF;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,4BAA4B,CACnC,QAAmB,EACnB,QAAoB,EACpB,mBAAkD,EAClD,gBAAwB,IAAI;IAE5B,MAAM,WAAW,GAAG,MAAM,CAAY,EAAE,CAAC,CAAC;IAE1C,MAAM,kBAAkB,GAAG,OAAO,CAChC,GAAG,EAAE,CACH,QAAQ,CAAC,GAAG,EAAE;QACZ,IAAI,2BAA2B,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE;YAC9D,QAAQ,EAAE,CAAC;SACZ;QACD,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC9B,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,EAAE,aAAa,CAAC,EACnB,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,SAAS,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,eAAe,4BAA4B,CAAC"}
@@ -5,4 +5,5 @@ export * from "./usePostOnboardingHubState";
5
5
  export * from "./useStartPostOnboardingCallback";
6
6
  export * from "./useAutoDismissPostOnboardingEntryPoint";
7
7
  export * from "./usePostOnboardingDeeplinkHandler";
8
+ export * from "./useCheckAccountWithFundsAction";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postOnboarding/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postOnboarding/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC"}
@@ -5,4 +5,5 @@ export * from "./usePostOnboardingHubState";
5
5
  export * from "./useStartPostOnboardingCallback";
6
6
  export * from "./useAutoDismissPostOnboardingEntryPoint";
7
7
  export * from "./usePostOnboardingDeeplinkHandler";
8
+ export * from "./useCheckAccountWithFundsAction";
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/postOnboarding/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/postOnboarding/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Account, PostOnboardingActionId } from "@ledgerhq/types-live";
2
+ export declare function useCheckAccountWithFundsAction(completeAction: (action: PostOnboardingActionId) => void): (accounts: Account[]) => void;
3
+ //# sourceMappingURL=useCheckAccountWithFundsAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCheckAccountWithFundsAction.d.ts","sourceRoot":"","sources":["../../../src/postOnboarding/hooks/useCheckAccountWithFundsAction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAIvE,wBAAgB,8BAA8B,CAC5C,cAAc,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,cAO3C,OAAO,EAAE,UAUvB"}
@@ -0,0 +1,17 @@
1
+ import { useSelector } from "react-redux";
2
+ import { PostOnboardingActionId } from "@ledgerhq/types-live";
3
+ import { useCallback } from "react";
4
+ import { hubStateSelector } from "../reducer";
5
+ export function useCheckAccountWithFundsAction(completeAction) {
6
+ const hubState = useSelector(hubStateSelector);
7
+ const isAssetTransferComplete = hubState.actionsCompleted?.[PostOnboardingActionId.assetsTransfer];
8
+ const handleAccountsUpdate = useCallback((accounts) => {
9
+ if (!isAssetTransferComplete) {
10
+ const hasAccountsWithFunds = accounts.some(account => account?.balance.isGreaterThan(0));
11
+ if (hasAccountsWithFunds)
12
+ completeAction(PostOnboardingActionId.assetsTransfer);
13
+ }
14
+ }, [completeAction, isAssetTransferComplete]);
15
+ return handleAccountsUpdate;
16
+ }
17
+ //# sourceMappingURL=useCheckAccountWithFundsAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCheckAccountWithFundsAction.js","sourceRoot":"","sources":["../../../src/postOnboarding/hooks/useCheckAccountWithFundsAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAW,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,UAAU,8BAA8B,CAC5C,cAAwD;IAExD,MAAM,QAAQ,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC/C,MAAM,uBAAuB,GAC3B,QAAQ,CAAC,gBAAgB,EAAE,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;IAErE,MAAM,oBAAoB,GAAG,WAAW,CACtC,CAAC,QAAmB,EAAE,EAAE;QACtB,IAAI,CAAC,uBAAuB,EAAE;YAC5B,MAAM,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,IAAI,oBAAoB;gBAAE,cAAc,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;SACjF;IACH,CAAC,EACD,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAC1C,CAAC;IAEF,OAAO,oBAAoB,CAAC;AAC9B,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ledgerhq/live-common",
3
3
  "description": "Common ground for the Ledger Live apps",
4
- "version": "34.54.0-nightly.20251127023715",
4
+ "version": "34.54.0-nightly.20251127103328",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/LedgerHQ/ledger-live.git"
@@ -182,79 +182,79 @@
182
182
  "xstate": "^5.19.2",
183
183
  "yargs": "^17.0.0",
184
184
  "zod": "^3.22.4",
185
- "@ledgerhq/coin-algorand": "^0.14.0-nightly.20251127023715",
186
- "@ledgerhq/coin-aptos": "^3.6.1-nightly.20251127023715",
187
- "@ledgerhq/coin-bitcoin": "^0.25.1-nightly.20251127023715",
188
- "@ledgerhq/coin-canton": "^0.11.0-nightly.20251127023715",
189
- "@ledgerhq/coin-cardano": "^0.15.1-nightly.20251127023715",
190
- "@ledgerhq/coin-casper": "^2.4.1-nightly.20251127023715",
191
- "@ledgerhq/coin-celo": "^1.7.2-nightly.20251127023715",
192
- "@ledgerhq/coin-cosmos": "^0.20.1-nightly.20251127023715",
193
- "@ledgerhq/coin-evm": "^2.36.0-nightly.20251127023715",
194
- "@ledgerhq/coin-filecoin": "^1.15.0-nightly.20251127023715",
195
- "@ledgerhq/coin-framework": "^6.10.0-nightly.20251127023715",
196
- "@ledgerhq/coin-hedera": "^1.15.0-nightly.20251127023715",
197
- "@ledgerhq/coin-icon": "^0.15.1-nightly.20251127023715",
198
- "@ledgerhq/coin-internet_computer": "^1.11.1-nightly.20251127023715",
199
- "@ledgerhq/coin-kaspa": "^1.4.2-nightly.20251127023715",
200
- "@ledgerhq/coin-mina": "^1.4.2-nightly.20251127023715",
201
- "@ledgerhq/coin-multiversx": "^0.8.1-nightly.20251127023715",
202
- "@ledgerhq/coin-near": "^0.16.1-nightly.20251127023715",
203
- "@ledgerhq/coin-polkadot": "^6.13.1-nightly.20251127023715",
204
- "@ledgerhq/coin-solana": "^0.38.0-nightly.20251127023715",
205
- "@ledgerhq/coin-stacks": "^0.12.1-nightly.20251127023715",
206
- "@ledgerhq/coin-stellar": "^6.8.0-nightly.20251127023715",
207
- "@ledgerhq/coin-sui": "^0.18.1-nightly.20251127023715",
208
- "@ledgerhq/coin-tezos": "^6.10.0-nightly.20251127023715",
209
- "@ledgerhq/coin-ton": "^0.17.1-nightly.20251127023715",
210
- "@ledgerhq/coin-tron": "^5.7.1-nightly.20251127023715",
211
- "@ledgerhq/coin-vechain": "^2.12.2-nightly.20251127023715",
212
- "@ledgerhq/coin-xrp": "^7.9.0-nightly.20251127023715",
213
- "@ledgerhq/crypto-icons-ui": "^1.24.0-nightly.20251127023715",
214
- "@ledgerhq/cryptoassets": "^13.34.0-nightly.20251127023715",
215
- "@ledgerhq/device-core": "^0.6.9-nightly.20251127023715",
185
+ "@ledgerhq/coin-algorand": "^0.14.0-nightly.20251127103328",
186
+ "@ledgerhq/coin-aptos": "^3.6.1-nightly.20251127103328",
187
+ "@ledgerhq/coin-bitcoin": "^0.25.1-nightly.20251127103328",
188
+ "@ledgerhq/coin-canton": "^0.11.0-nightly.20251127103328",
189
+ "@ledgerhq/coin-cardano": "^0.15.1-nightly.20251127103328",
190
+ "@ledgerhq/coin-casper": "^2.4.1-nightly.20251127103328",
191
+ "@ledgerhq/coin-celo": "^1.7.2-nightly.20251127103328",
192
+ "@ledgerhq/coin-cosmos": "^0.20.1-nightly.20251127103328",
193
+ "@ledgerhq/coin-evm": "^2.36.0-nightly.20251127103328",
194
+ "@ledgerhq/coin-filecoin": "^1.15.0-nightly.20251127103328",
195
+ "@ledgerhq/coin-framework": "^6.10.0-nightly.20251127103328",
196
+ "@ledgerhq/coin-hedera": "^1.15.0-nightly.20251127103328",
197
+ "@ledgerhq/coin-icon": "^0.15.1-nightly.20251127103328",
198
+ "@ledgerhq/coin-internet_computer": "^1.11.1-nightly.20251127103328",
199
+ "@ledgerhq/coin-kaspa": "^1.4.2-nightly.20251127103328",
200
+ "@ledgerhq/coin-mina": "^1.4.2-nightly.20251127103328",
201
+ "@ledgerhq/coin-multiversx": "^0.8.1-nightly.20251127103328",
202
+ "@ledgerhq/coin-near": "^0.16.1-nightly.20251127103328",
203
+ "@ledgerhq/coin-polkadot": "^6.13.1-nightly.20251127103328",
204
+ "@ledgerhq/coin-solana": "^0.38.0-nightly.20251127103328",
205
+ "@ledgerhq/coin-stacks": "^0.12.1-nightly.20251127103328",
206
+ "@ledgerhq/coin-stellar": "^6.8.0-nightly.20251127103328",
207
+ "@ledgerhq/coin-sui": "^0.18.1-nightly.20251127103328",
208
+ "@ledgerhq/coin-tezos": "^6.10.0-nightly.20251127103328",
209
+ "@ledgerhq/coin-ton": "^0.17.1-nightly.20251127103328",
210
+ "@ledgerhq/coin-tron": "^5.7.1-nightly.20251127103328",
211
+ "@ledgerhq/coin-vechain": "^2.12.2-nightly.20251127103328",
212
+ "@ledgerhq/coin-xrp": "^7.9.0-nightly.20251127103328",
213
+ "@ledgerhq/crypto-icons-ui": "^1.24.0-nightly.20251127103328",
214
+ "@ledgerhq/cryptoassets": "^13.34.0-nightly.20251127103328",
215
+ "@ledgerhq/device-core": "^0.6.9-nightly.20251127103328",
216
216
  "@ledgerhq/devices": "8.7.0",
217
217
  "@ledgerhq/errors": "^6.27.0",
218
218
  "@ledgerhq/hw-app-algorand": "^6.31.9",
219
219
  "@ledgerhq/hw-app-aptos": "^6.34.9",
220
- "@ledgerhq/hw-app-btc": "^10.12.1-nightly.20251127023715",
221
- "@ledgerhq/hw-app-celo": "^6.35.4-nightly.20251127023715",
220
+ "@ledgerhq/hw-app-btc": "^10.12.1-nightly.20251127103328",
221
+ "@ledgerhq/hw-app-celo": "^6.35.4-nightly.20251127103328",
222
222
  "@ledgerhq/hw-app-cosmos": "^6.32.9",
223
- "@ledgerhq/hw-app-eth": "^7.0.0-nightly.20251127023715",
224
- "@ledgerhq/hw-app-exchange": "^0.18.0-nightly.20251127023715",
223
+ "@ledgerhq/hw-app-eth": "^7.0.0-nightly.20251127103328",
224
+ "@ledgerhq/hw-app-exchange": "^0.18.0-nightly.20251127103328",
225
225
  "@ledgerhq/hw-app-hedera": "^1.2.9",
226
226
  "@ledgerhq/hw-app-icon": "^1.3.9",
227
227
  "@ledgerhq/hw-app-kaspa": "^1.3.2",
228
- "@ledgerhq/hw-app-multiversx": "^6.26.0",
229
228
  "@ledgerhq/hw-app-near": "^6.31.9",
230
229
  "@ledgerhq/hw-app-polkadot": "^6.34.9",
231
230
  "@ledgerhq/hw-app-str": "^7.2.9",
232
231
  "@ledgerhq/hw-app-sui": "^1.4.0",
233
232
  "@ledgerhq/hw-app-tezos": "^6.31.9",
234
233
  "@ledgerhq/hw-app-trx": "^6.31.9",
235
- "@ledgerhq/hw-app-vet": "^0.8.0-nightly.20251127023715",
234
+ "@ledgerhq/hw-app-vet": "^0.8.0-nightly.20251127103328",
236
235
  "@ledgerhq/hw-app-xrp": "^6.32.7",
237
236
  "@ledgerhq/hw-bolos": "^6.32.9",
238
237
  "@ledgerhq/hw-transport": "6.31.13",
239
238
  "@ledgerhq/hw-transport-mocker": "^6.29.13",
240
- "@ledgerhq/ledger-cal-service": "^1.9.1-nightly.20251127023715",
241
- "@ledgerhq/ledger-trust-service": "^0.4.3-nightly.20251127023715",
239
+ "@ledgerhq/ledger-cal-service": "^1.9.1-nightly.20251127103328",
240
+ "@ledgerhq/ledger-trust-service": "^0.4.3-nightly.20251127103328",
242
241
  "@ledgerhq/live-config": "^3.2.0",
243
- "@ledgerhq/live-countervalues": "^0.10.1-nightly.20251127023715",
244
- "@ledgerhq/live-countervalues-react": "^0.7.3-nightly.20251127023715",
242
+ "@ledgerhq/live-countervalues": "^0.10.1-nightly.20251127103328",
243
+ "@ledgerhq/live-countervalues-react": "^0.7.3-nightly.20251127103328",
245
244
  "@ledgerhq/live-dmk-shared": "^0.15.0",
246
- "@ledgerhq/live-env": "^2.22.0-nightly.20251127023715",
245
+ "@ledgerhq/live-env": "^2.22.0-nightly.20251127103328",
247
246
  "@ledgerhq/live-hooks": "0.2.0",
248
- "@ledgerhq/live-network": "^2.1.2-nightly.20251127023715",
247
+ "@ledgerhq/live-network": "^2.1.2-nightly.20251127103328",
249
248
  "@ledgerhq/live-promise": "^0.1.1",
250
- "@ledgerhq/live-signer-canton": "^0.5.2-nightly.20251127023715",
251
- "@ledgerhq/live-signer-evm": "^0.10.2-nightly.20251127023715",
252
- "@ledgerhq/live-signer-solana": "^0.6.2-nightly.20251127023715",
253
- "@ledgerhq/live-wallet": "^0.16.1-nightly.20251127023715",
249
+ "@ledgerhq/live-signer-canton": "^0.5.2-nightly.20251127103328",
250
+ "@ledgerhq/live-signer-evm": "^0.10.2-nightly.20251127103328",
251
+ "@ledgerhq/live-signer-solana": "^0.6.2-nightly.20251127103328",
252
+ "@ledgerhq/live-wallet": "^0.16.1-nightly.20251127103328",
254
253
  "@ledgerhq/logs": "^6.13.0",
255
- "@ledgerhq/speculos-transport": "^0.3.0-nightly.20251127023715",
256
- "@ledgerhq/wallet-api-acre-module": "^0.10.0-nightly.20251127023715",
257
- "@ledgerhq/wallet-api-exchange-module": "^0.19.0-nightly.20251127023715"
254
+ "@ledgerhq/speculos-transport": "^0.3.0-nightly.20251127103328",
255
+ "@ledgerhq/wallet-api-acre-module": "^0.10.0-nightly.20251127103328",
256
+ "@ledgerhq/wallet-api-exchange-module": "^0.19.0-nightly.20251127103328",
257
+ "@ledgerhq/hw-app-multiversx": "^6.26.0"
258
258
  },
259
259
  "devDependencies": {
260
260
  "@solana/web3.js": "1.95.4",
@@ -302,10 +302,10 @@
302
302
  "undici": "6.19.2",
303
303
  "uuid": "^8.3.2",
304
304
  "ws": "7",
305
- "@ledgerhq/device-react": "^0.3.3-nightly.20251127023715",
305
+ "@ledgerhq/device-react": "^0.3.3-nightly.20251127103328",
306
306
  "@ledgerhq/types-cryptoassets": "^7.30.0",
307
307
  "@ledgerhq/types-devices": "^6.27.0",
308
- "@ledgerhq/types-live": "^6.90.0-nightly.20251127023715"
308
+ "@ledgerhq/types-live": "^6.90.0-nightly.20251127103328"
309
309
  },
310
310
  "scripts": {
311
311
  "build": "zx ./scripts/build-ts.mjs",
@@ -54,6 +54,7 @@ export function hasAccountsWithFundsChanged(accounts: Account[], oldAccounts: Ac
54
54
  function useAccountsWithFundsListener(
55
55
  accounts: Account[],
56
56
  callback: () => void,
57
+ callbackForAccounts: (accounts: Account[]) => void,
57
58
  debounceTimer: number = 3000,
58
59
  ) {
59
60
  const oldAccounts = useRef<Account[]>([]);
@@ -64,6 +65,7 @@ function useAccountsWithFundsListener(
64
65
  if (hasAccountsWithFundsChanged(accounts, oldAccounts.current)) {
65
66
  callback();
66
67
  }
68
+ callbackForAccounts(accounts);
67
69
  oldAccounts.current = accounts;
68
70
  }, debounceTimer),
69
71
  [accounts],
@@ -5,3 +5,4 @@ export * from "./usePostOnboardingHubState";
5
5
  export * from "./useStartPostOnboardingCallback";
6
6
  export * from "./useAutoDismissPostOnboardingEntryPoint";
7
7
  export * from "./usePostOnboardingDeeplinkHandler";
8
+ export * from "./useCheckAccountWithFundsAction";
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @jest-environment jsdom
3
+ */
4
+
5
+ import { renderHook, act } from "@testing-library/react";
6
+ import { hubStateSelector } from "../reducer";
7
+ import { useCheckAccountWithFundsAction } from "./useCheckAccountWithFundsAction";
8
+ import { PostOnboardingActionId } from "@ledgerhq/types-live";
9
+ import { DeviceModelId } from "@ledgerhq/types-devices";
10
+ import { createFixtureCryptoCurrency } from "../../mock/fixtures/cryptoCurrencies";
11
+ import { genAccount } from "@ledgerhq/coin-framework/mocks/account";
12
+ import { BigNumber } from "bignumber.js";
13
+
14
+ jest.mock("../reducer");
15
+ jest.mock("react-redux", () => ({
16
+ useSelector: val => val(),
17
+ }));
18
+
19
+ const mockedHubStateSelector = jest.mocked(hubStateSelector);
20
+
21
+ const defaultHubState = {
22
+ deviceModelId: DeviceModelId.nanoX,
23
+ actionsToComplete: [],
24
+ actionsCompleted: {},
25
+ lastActionCompleted: null,
26
+ postOnboardingInProgress: false,
27
+ };
28
+
29
+ const stateFundsTransferCompleted = {
30
+ deviceModelId: DeviceModelId.nanoX,
31
+ actionsToComplete: [PostOnboardingActionId.assetsTransfer],
32
+ actionsCompleted: {
33
+ [PostOnboardingActionId.assetsTransfer]: true,
34
+ },
35
+ lastActionCompleted: PostOnboardingActionId.personalizeMock,
36
+ postOnboardingInProgress: true,
37
+ };
38
+
39
+ const mockCompleteAction = jest.fn();
40
+
41
+ const ethereumCurrency = createFixtureCryptoCurrency("ethereum");
42
+ const ethereumAccountZero = genAccount("ethereum-account-zero", {
43
+ currency: ethereumCurrency,
44
+ });
45
+ ethereumAccountZero.balance = new BigNumber("0");
46
+ const nonFundedAccount = [ethereumAccountZero];
47
+
48
+ const ethereumAccountWithBalance = genAccount("ethereum-account-balance", {
49
+ currency: ethereumCurrency,
50
+ });
51
+ ethereumAccountWithBalance.balance = new BigNumber("10000");
52
+ const fundedAccount = [ethereumAccountWithBalance];
53
+
54
+ describe("useCheckAccountWithFundsAction", () => {
55
+ beforeEach(() => {
56
+ mockCompleteAction.mockClear();
57
+ mockedHubStateSelector.mockClear();
58
+ });
59
+
60
+ it("should not run completeAction when asset transfer not complete and account with no funds", () => {
61
+ const state = defaultHubState;
62
+ mockedHubStateSelector.mockReturnValue(state);
63
+
64
+ const { result } = renderHook(() => useCheckAccountWithFundsAction(mockCompleteAction));
65
+
66
+ act(() => {
67
+ result.current(nonFundedAccount);
68
+ });
69
+
70
+ expect(mockCompleteAction).not.toHaveBeenCalled();
71
+ });
72
+
73
+ it("should run completeAction when asset transfer not complete and account with funds", () => {
74
+ const state = defaultHubState;
75
+ mockedHubStateSelector.mockReturnValue(state);
76
+
77
+ const { result } = renderHook(() => useCheckAccountWithFundsAction(mockCompleteAction));
78
+
79
+ act(() => {
80
+ result.current(fundedAccount);
81
+ });
82
+
83
+ expect(mockCompleteAction).toHaveBeenCalled();
84
+ expect(mockCompleteAction).toHaveBeenNthCalledWith(1, PostOnboardingActionId.assetsTransfer);
85
+ });
86
+
87
+ it("should not run completeAction when asset transfer complete and account with funds", () => {
88
+ const state = stateFundsTransferCompleted;
89
+ mockedHubStateSelector.mockReturnValue(state);
90
+
91
+ const { result } = renderHook(() => useCheckAccountWithFundsAction(mockCompleteAction));
92
+
93
+ act(() => {
94
+ result.current(fundedAccount);
95
+ });
96
+
97
+ expect(mockCompleteAction).not.toHaveBeenCalled();
98
+ });
99
+ });
@@ -0,0 +1,24 @@
1
+ import { useSelector } from "react-redux";
2
+ import { Account, PostOnboardingActionId } from "@ledgerhq/types-live";
3
+ import { useCallback } from "react";
4
+ import { hubStateSelector } from "../reducer";
5
+
6
+ export function useCheckAccountWithFundsAction(
7
+ completeAction: (action: PostOnboardingActionId) => void,
8
+ ) {
9
+ const hubState = useSelector(hubStateSelector);
10
+ const isAssetTransferComplete =
11
+ hubState.actionsCompleted?.[PostOnboardingActionId.assetsTransfer];
12
+
13
+ const handleAccountsUpdate = useCallback(
14
+ (accounts: Account[]) => {
15
+ if (!isAssetTransferComplete) {
16
+ const hasAccountsWithFunds = accounts.some(account => account?.balance.isGreaterThan(0));
17
+ if (hasAccountsWithFunds) completeAction(PostOnboardingActionId.assetsTransfer);
18
+ }
19
+ },
20
+ [completeAction, isAssetTransferComplete],
21
+ );
22
+
23
+ return handleAccountsUpdate;
24
+ }