@bananapus/nana-sdk-core 6.0.0 → 6.1.0

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 (169) hide show
  1. package/dist/cjs/jbcenter/ensureDeployed.d.ts +2 -2
  2. package/dist/cjs/jbcenter/ensureDeployed.d.ts.map +1 -1
  3. package/dist/cjs/jbcenter/ensureDeployed.js.map +1 -1
  4. package/dist/cjs/jbcenter.d.ts +4 -1
  5. package/dist/cjs/jbcenter.d.ts.map +1 -1
  6. package/dist/cjs/jbcenter.js +6 -6
  7. package/dist/cjs/jbcenter.js.map +1 -1
  8. package/dist/cjs/review/gas.d.ts +5 -2
  9. package/dist/cjs/review/gas.d.ts.map +1 -1
  10. package/dist/cjs/review/gas.js +8 -3
  11. package/dist/cjs/review/gas.js.map +1 -1
  12. package/dist/cjs/review/heldWrite.d.ts.map +1 -1
  13. package/dist/cjs/review/heldWrite.js +8 -10
  14. package/dist/cjs/review/heldWrite.js.map +1 -1
  15. package/dist/cjs/review/index.d.ts +2 -0
  16. package/dist/cjs/review/index.d.ts.map +1 -1
  17. package/dist/cjs/review/index.js +2 -0
  18. package/dist/cjs/review/index.js.map +1 -1
  19. package/dist/cjs/review/locks.d.ts +10 -0
  20. package/dist/cjs/review/locks.d.ts.map +1 -0
  21. package/dist/cjs/review/locks.js +133 -0
  22. package/dist/cjs/review/locks.js.map +1 -0
  23. package/dist/cjs/review/machines.d.ts +9 -0
  24. package/dist/cjs/review/machines.d.ts.map +1 -0
  25. package/dist/cjs/review/machines.js +25 -0
  26. package/dist/cjs/review/machines.js.map +1 -0
  27. package/dist/cjs/review/react/index.d.ts +3 -0
  28. package/dist/cjs/review/react/index.d.ts.map +1 -1
  29. package/dist/cjs/review/react/index.js +3 -0
  30. package/dist/cjs/review/react/index.js.map +1 -1
  31. package/dist/cjs/review/react/useFeeBuybackReview.d.ts +6 -0
  32. package/dist/cjs/review/react/useFeeBuybackReview.d.ts.map +1 -0
  33. package/dist/cjs/review/react/useFeeBuybackReview.js +53 -0
  34. package/dist/cjs/review/react/useFeeBuybackReview.js.map +1 -0
  35. package/dist/cjs/review/react/useMobileWallet.d.ts +15 -0
  36. package/dist/cjs/review/react/useMobileWallet.d.ts.map +1 -0
  37. package/dist/cjs/review/react/useMobileWallet.js +50 -0
  38. package/dist/cjs/review/react/useMobileWallet.js.map +1 -0
  39. package/dist/cjs/review/react/useReviewedRun.d.ts +14 -1
  40. package/dist/cjs/review/react/useReviewedRun.d.ts.map +1 -1
  41. package/dist/cjs/review/react/useReviewedRun.js +121 -20
  42. package/dist/cjs/review/react/useReviewedRun.js.map +1 -1
  43. package/dist/cjs/review/react/useSavedAttempt.d.ts +23 -0
  44. package/dist/cjs/review/react/useSavedAttempt.d.ts.map +1 -1
  45. package/dist/cjs/review/react/useSavedAttempt.js +89 -11
  46. package/dist/cjs/review/react/useSavedAttempt.js.map +1 -1
  47. package/dist/cjs/review/react/useStartOnce.d.ts +8 -0
  48. package/dist/cjs/review/react/useStartOnce.d.ts.map +1 -0
  49. package/dist/cjs/review/react/useStartOnce.js +27 -0
  50. package/dist/cjs/review/react/useStartOnce.js.map +1 -0
  51. package/dist/cjs/review/relayr.d.ts +1 -1
  52. package/dist/cjs/review/relayr.d.ts.map +1 -1
  53. package/dist/cjs/review/relayr.js +15 -0
  54. package/dist/cjs/review/relayr.js.map +1 -1
  55. package/dist/cjs/review/relayrLaunch.d.ts +90 -0
  56. package/dist/cjs/review/relayrLaunch.d.ts.map +1 -0
  57. package/dist/cjs/review/relayrLaunch.js +106 -0
  58. package/dist/cjs/review/relayrLaunch.js.map +1 -0
  59. package/dist/cjs/review/relayrSend.js +7 -3
  60. package/dist/cjs/review/relayrSend.js.map +1 -1
  61. package/dist/cjs/review/reviewDialogQueue.d.ts +47 -0
  62. package/dist/cjs/review/reviewDialogQueue.d.ts.map +1 -0
  63. package/dist/cjs/review/reviewDialogQueue.js +120 -0
  64. package/dist/cjs/review/reviewDialogQueue.js.map +1 -0
  65. package/dist/cjs/review/runStatus.d.ts +47 -0
  66. package/dist/cjs/review/runStatus.d.ts.map +1 -0
  67. package/dist/cjs/review/runStatus.js +52 -0
  68. package/dist/cjs/review/runStatus.js.map +1 -0
  69. package/dist/cjs/review/safeRelayr.d.ts +49 -14
  70. package/dist/cjs/review/safeRelayr.d.ts.map +1 -1
  71. package/dist/cjs/review/safeRelayr.js +126 -5
  72. package/dist/cjs/review/safeRelayr.js.map +1 -1
  73. package/dist/cjs/review/writeRecovery.d.ts +3 -8
  74. package/dist/cjs/review/writeRecovery.d.ts.map +1 -1
  75. package/dist/cjs/review/writeRecovery.js +5 -131
  76. package/dist/cjs/review/writeRecovery.js.map +1 -1
  77. package/dist/cjs/v6/feeBuyback.d.ts +49 -0
  78. package/dist/cjs/v6/feeBuyback.d.ts.map +1 -1
  79. package/dist/cjs/v6/feeBuyback.js +151 -0
  80. package/dist/cjs/v6/feeBuyback.js.map +1 -1
  81. package/dist/cjs/v6/suckers.d.ts +24 -2
  82. package/dist/cjs/v6/suckers.d.ts.map +1 -1
  83. package/dist/cjs/v6/suckers.js +5 -5
  84. package/dist/cjs/v6/suckers.js.map +1 -1
  85. package/dist/esm/jbcenter/ensureDeployed.d.ts +2 -2
  86. package/dist/esm/jbcenter/ensureDeployed.d.ts.map +1 -1
  87. package/dist/esm/jbcenter/ensureDeployed.js.map +1 -1
  88. package/dist/esm/jbcenter.d.ts +4 -1
  89. package/dist/esm/jbcenter.d.ts.map +1 -1
  90. package/dist/esm/jbcenter.js +6 -6
  91. package/dist/esm/jbcenter.js.map +1 -1
  92. package/dist/esm/review/gas.d.ts +5 -2
  93. package/dist/esm/review/gas.d.ts.map +1 -1
  94. package/dist/esm/review/gas.js +7 -3
  95. package/dist/esm/review/gas.js.map +1 -1
  96. package/dist/esm/review/heldWrite.d.ts.map +1 -1
  97. package/dist/esm/review/heldWrite.js +8 -10
  98. package/dist/esm/review/heldWrite.js.map +1 -1
  99. package/dist/esm/review/index.d.ts +2 -0
  100. package/dist/esm/review/index.d.ts.map +1 -1
  101. package/dist/esm/review/index.js +2 -0
  102. package/dist/esm/review/index.js.map +1 -1
  103. package/dist/esm/review/locks.d.ts +10 -0
  104. package/dist/esm/review/locks.d.ts.map +1 -0
  105. package/dist/esm/review/locks.js +130 -0
  106. package/dist/esm/review/locks.js.map +1 -0
  107. package/dist/esm/review/machines.d.ts +9 -0
  108. package/dist/esm/review/machines.d.ts.map +1 -0
  109. package/dist/esm/review/machines.js +9 -0
  110. package/dist/esm/review/machines.js.map +1 -0
  111. package/dist/esm/review/react/index.d.ts +3 -0
  112. package/dist/esm/review/react/index.d.ts.map +1 -1
  113. package/dist/esm/review/react/index.js +3 -0
  114. package/dist/esm/review/react/index.js.map +1 -1
  115. package/dist/esm/review/react/useFeeBuybackReview.d.ts +6 -0
  116. package/dist/esm/review/react/useFeeBuybackReview.d.ts.map +1 -0
  117. package/dist/esm/review/react/useFeeBuybackReview.js +50 -0
  118. package/dist/esm/review/react/useFeeBuybackReview.js.map +1 -0
  119. package/dist/esm/review/react/useMobileWallet.d.ts +15 -0
  120. package/dist/esm/review/react/useMobileWallet.d.ts.map +1 -0
  121. package/dist/esm/review/react/useMobileWallet.js +46 -0
  122. package/dist/esm/review/react/useMobileWallet.js.map +1 -0
  123. package/dist/esm/review/react/useReviewedRun.d.ts +14 -1
  124. package/dist/esm/review/react/useReviewedRun.d.ts.map +1 -1
  125. package/dist/esm/review/react/useReviewedRun.js +122 -21
  126. package/dist/esm/review/react/useReviewedRun.js.map +1 -1
  127. package/dist/esm/review/react/useSavedAttempt.d.ts +23 -0
  128. package/dist/esm/review/react/useSavedAttempt.d.ts.map +1 -1
  129. package/dist/esm/review/react/useSavedAttempt.js +89 -11
  130. package/dist/esm/review/react/useSavedAttempt.js.map +1 -1
  131. package/dist/esm/review/react/useStartOnce.d.ts +8 -0
  132. package/dist/esm/review/react/useStartOnce.d.ts.map +1 -0
  133. package/dist/esm/review/react/useStartOnce.js +24 -0
  134. package/dist/esm/review/react/useStartOnce.js.map +1 -0
  135. package/dist/esm/review/relayr.d.ts +1 -1
  136. package/dist/esm/review/relayr.d.ts.map +1 -1
  137. package/dist/esm/review/relayr.js +1 -0
  138. package/dist/esm/review/relayr.js.map +1 -1
  139. package/dist/esm/review/relayrLaunch.d.ts +90 -0
  140. package/dist/esm/review/relayrLaunch.d.ts.map +1 -0
  141. package/dist/esm/review/relayrLaunch.js +97 -0
  142. package/dist/esm/review/relayrLaunch.js.map +1 -0
  143. package/dist/esm/review/relayrSend.js +7 -3
  144. package/dist/esm/review/relayrSend.js.map +1 -1
  145. package/dist/esm/review/reviewDialogQueue.d.ts +47 -0
  146. package/dist/esm/review/reviewDialogQueue.d.ts.map +1 -0
  147. package/dist/esm/review/reviewDialogQueue.js +117 -0
  148. package/dist/esm/review/reviewDialogQueue.js.map +1 -0
  149. package/dist/esm/review/runStatus.d.ts +47 -0
  150. package/dist/esm/review/runStatus.d.ts.map +1 -0
  151. package/dist/esm/review/runStatus.js +49 -0
  152. package/dist/esm/review/runStatus.js.map +1 -0
  153. package/dist/esm/review/safeRelayr.d.ts +49 -14
  154. package/dist/esm/review/safeRelayr.d.ts.map +1 -1
  155. package/dist/esm/review/safeRelayr.js +126 -5
  156. package/dist/esm/review/safeRelayr.js.map +1 -1
  157. package/dist/esm/review/writeRecovery.d.ts +3 -8
  158. package/dist/esm/review/writeRecovery.d.ts.map +1 -1
  159. package/dist/esm/review/writeRecovery.js +2 -128
  160. package/dist/esm/review/writeRecovery.js.map +1 -1
  161. package/dist/esm/v6/feeBuyback.d.ts +49 -0
  162. package/dist/esm/v6/feeBuyback.d.ts.map +1 -1
  163. package/dist/esm/v6/feeBuyback.js +150 -0
  164. package/dist/esm/v6/feeBuyback.js.map +1 -1
  165. package/dist/esm/v6/suckers.d.ts +24 -2
  166. package/dist/esm/v6/suckers.d.ts.map +1 -1
  167. package/dist/esm/v6/suckers.js +5 -5
  168. package/dist/esm/v6/suckers.js.map +1 -1
  169. package/package.json +11 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMobileWallet.d.ts","sourceRoot":"","sources":["../../../../src/review/react/useMobileWallet.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,UAAU,GACV,UAAU,GACV,SAAS,CAAC;AAEd,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAKV;AAID;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,CA8BnD"}
@@ -0,0 +1,46 @@
1
+ import { useEffect, useState } from "react";
2
+ /** A phone or tablet, iPadOS included (it reports itself as a Mac with touch). */
3
+ export function isMobileDevice(nav) {
4
+ return (/Android|iPhone|iPad|iPod/i.test(nav.userAgent || "") ||
5
+ (nav.platform === "MacIntel" && (nav.maxTouchPoints ?? 0) > 1));
6
+ }
7
+ const MOBILE_PROVIDER_WAIT_MS = 3_000;
8
+ /**
9
+ * On a phone, whether a wallet's provider is in the page (`injected`) or the
10
+ * page should offer to reopen in a wallet app (`handoff`). MetaMask Mobile
11
+ * injects late and emits `ethereum#initialized`, so it gets the documented
12
+ * three-second window (`checking`); EIP-6963 wallets are asked to announce.
13
+ */
14
+ export function useMobileWallet() {
15
+ const [state, setState] = useState("not-mobile");
16
+ useEffect(() => {
17
+ if (!isMobileDevice(navigator))
18
+ return;
19
+ const page = window;
20
+ if (page.ethereum) {
21
+ setState("injected");
22
+ return;
23
+ }
24
+ setState("checking");
25
+ const stop = () => {
26
+ window.clearTimeout(timer);
27
+ window.removeEventListener("ethereum#initialized", ready);
28
+ window.removeEventListener("eip6963:announceProvider", ready);
29
+ };
30
+ const ready = () => {
31
+ stop();
32
+ setState("injected");
33
+ };
34
+ window.addEventListener("ethereum#initialized", ready);
35
+ window.addEventListener("eip6963:announceProvider", ready);
36
+ const timer = window.setTimeout(() => {
37
+ stop();
38
+ setState(page.ethereum ? "injected" : "handoff");
39
+ }, MOBILE_PROVIDER_WAIT_MS);
40
+ // EIP-6963: a wallet that announced before this listened announces again.
41
+ window.dispatchEvent(new Event("eip6963:requestProvider"));
42
+ return stop;
43
+ }, []);
44
+ return state;
45
+ }
46
+ //# sourceMappingURL=useMobileWallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMobileWallet.js","sourceRoot":"","sources":["../../../../src/review/react/useMobileWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQ5C,kFAAkF;AAClF,MAAM,UAAU,cAAc,CAAC,GAI9B;IACC,OAAO,CACL,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;QACrD,CAAC,GAAG,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAC/D,CAAC;AACJ,CAAC;AAED,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAoB,YAAY,CAAC,CAAC;IACpE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;YAAE,OAAO;QACvC,MAAM,IAAI,GAAG,MAAgD,CAAC;QAC9D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,QAAQ,CAAC,UAAU,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC3B,MAAM,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC1D,MAAM,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,IAAI,EAAE,CAAC;YACP,QAAQ,CAAC,UAAU,CAAC,CAAC;QACvB,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QACvD,MAAM,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YACnC,IAAI,EAAE,CAAC;YACP,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC,EAAE,uBAAuB,CAAC,CAAC;QAC5B,0EAA0E;QAC1E,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type HeldWriteView, type ReviewedAction, type ReviewedProgress, type ReviewedResult, type ReviewedSendDeps, type completeReviewedStep, type resumeReviewed, type sendReviewed } from "../index.js";
1
+ import { type HeldWriteView, type ReviewedAction, type ReviewedProgress, type ReviewedResult, type ReviewedRunStatus, type ReviewedSendDeps, type completeReviewedStep, type resumeReviewed, type sendReviewed } from "../index.js";
2
2
  import { type HeldViewActions } from "./heldView.js";
3
3
  import type { Address, Hex, TransactionReceipt } from "viem";
4
4
  /** The send engine: the review model, its decoder and the ABIs it reads. */
@@ -58,10 +58,23 @@ export type UseReviewedRunResult = {
58
58
  * is followed in place (`phase` "receipt"), in the same review, for
59
59
  * `follow.timeoutMs` (2 minutes by default); only then does the run resolve
60
60
  * `receipt`, and the hook follows the hold until it settles.
61
+ * `onCancelled` runs once when the run ends `cancelled`: nothing sent and
62
+ * nothing held.
61
63
  */
62
64
  run: (action: Omit<ReviewedAction, "account" | "guard"> & {
63
65
  account?: Address;
66
+ onCancelled?: () => void;
64
67
  }) => Promise<ReviewedResult | ReviewedRunReceipt | ReviewedRunFailed | null>;
68
+ /**
69
+ * The highest step of the action whose hash the wallet returned in the
70
+ * latest run (a resumed sequence's completed or proposed steps count), or
71
+ * null. It outlasts the run's failure or release; `reset` clears it.
72
+ */
73
+ lastSubmittedStep: number | null;
74
+ /** The run's status, from `reviewedRunStatus`: the one every app shows. */
75
+ status: ReviewedRunStatus;
76
+ /** Reviewing, simulating, signing or confirming a receipt: the action waits. */
77
+ busy: boolean;
65
78
  phase: ReviewedProgress["phase"] | "idle";
66
79
  step: number;
67
80
  total: number;
@@ -1 +1 @@
1
- {"version":3,"file":"useReviewedRun.d.ts","sourceRoot":"","sources":["../../../../src/review/react/useReviewedRun.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useReviewedRun.d.ts","sourceRoot":"","sources":["../../../../src/review/react/useReviewedRun.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import { ReviewLineError } from "../lineError.js";
2
2
  import { tell } from "../receipt.js";
3
- import { createHeldWriteView, discardReviewedSequence, errorLine, findReviewedSequence, isDefiniteWalletRejection, openStepHold, RECEIPT_RETRY_MS, REVIEWED_ACCOUNT_CHANGED_LINE, REVIEWED_ENGINE_LOAD_LINE, ReviewedReceiptUnverifiedError, safeBatchCall, settledLine, TransactionReviewCancelledError, walletReady, } from "../index.js";
3
+ import { createHeldWriteView, discardReviewedSequence, errorLine, findReviewedSequence, isDefiniteWalletRejection, listReviewedWrites, openStepHold, RECEIPT_RETRY_MS, REVIEWED_ACCOUNT_CHANGED_LINE, REVIEWED_ENGINE_LOAD_LINE, ReviewedReceiptUnverifiedError, reviewedRunStatus, safeBatchCall, settledLine, TransactionReviewCancelledError, walletReady, } from "../index.js";
4
4
  import { useEffect, useMemo, useRef, useState, useSyncExternalStore, } from "react";
5
5
  import { actionsOf, idle, keyOf, none, } from "./heldView.js";
6
6
  const IDLE = {
7
+ cancelled: false,
8
+ lastSubmittedStep: null,
7
9
  phase: "idle",
8
10
  step: 0,
9
11
  total: 0,
@@ -31,6 +33,12 @@ export const REVIEWED_RUN_BUSY_LINE = "This action is still running. Wait for it
31
33
  */
32
34
  export function useReviewedRun(deps) {
33
35
  const [state, setState] = useState(IDLE);
36
+ /** A cancel to tell once the cancelled run has rendered. */
37
+ const [cancelling, setCancelling] = useState(null);
38
+ useEffect(() => {
39
+ if (cancelling)
40
+ void tell(cancelling.onCancelled);
41
+ }, [cancelling]);
34
42
  /** The hold followed after a run, and its chain's client: its view is `held`. */
35
43
  const [watched, setWatched] = useState(null);
36
44
  /** The latest run: an earlier one's late answers change nothing. */
@@ -66,7 +74,12 @@ export function useReviewedRun(deps) {
66
74
  return;
67
75
  const finished = step === total - 1;
68
76
  setState((now) => settled.result !== "success"
69
- ? { ...IDLE, error: settledLine(settled), receipt }
77
+ ? {
78
+ ...IDLE,
79
+ error: settledLine(settled),
80
+ receipt,
81
+ lastSubmittedStep: now.lastSubmittedStep,
82
+ }
70
83
  : finished
71
84
  ? {
72
85
  ...now,
@@ -79,6 +92,7 @@ export function useReviewedRun(deps) {
79
92
  }
80
93
  : {
81
94
  ...IDLE,
95
+ lastSubmittedStep: now.lastSubmittedStep,
82
96
  step,
83
97
  total,
84
98
  hash: settled.hash,
@@ -97,7 +111,10 @@ export function useReviewedRun(deps) {
97
111
  onReleased: () => {
98
112
  watched.released?.();
99
113
  if (latest.current === watched.run)
100
- setState(IDLE);
114
+ setState((now) => ({
115
+ ...IDLE,
116
+ lastSubmittedStep: now.lastSubmittedStep,
117
+ }));
101
118
  },
102
119
  })
103
120
  : undefined, [watched]);
@@ -125,8 +142,10 @@ export function useReviewedRun(deps) {
125
142
  shown.phase === "settled"
126
143
  ? null
127
144
  : shown;
145
+ const { cancelled: _cancelled, ...shownState } = state;
128
146
  const api = {
129
- ...state,
147
+ ...shownState,
148
+ ...reviewedRunStatus({ ...state, held }),
130
149
  held,
131
150
  ...actionsOf(shown, held ? view : undefined),
132
151
  reset: () => {
@@ -150,7 +169,7 @@ export function useReviewedRun(deps) {
150
169
  setState(IDLE);
151
170
  setWatched(null);
152
171
  },
153
- run: async (action) => {
172
+ run: async ({ onCancelled, ...action }) => {
154
173
  replaced();
155
174
  const id = latest.current;
156
175
  // A step still confirming is followed in place, in the same review,
@@ -164,6 +183,15 @@ export function useReviewedRun(deps) {
164
183
  };
165
184
  setState({ ...IDLE, phase: "review", total: action.calls.length });
166
185
  let loaded;
186
+ /** A step of the action was sent before this run, or by it: never a cancel. */
187
+ let sentAny = false;
188
+ let submitted = null;
189
+ const submit = (step) => {
190
+ if (submitted !== null && submitted >= step)
191
+ return;
192
+ submitted = step;
193
+ update({ lastSubmittedStep: step });
194
+ };
167
195
  setWatched(null);
168
196
  /**
169
197
  * Completes a sent step once its hold settled it, as the run would
@@ -210,16 +238,24 @@ export function useReviewedRun(deps) {
210
238
  };
211
239
  return finish;
212
240
  };
213
- /** The step a run that did not finish leaves held, if any. */
241
+ /**
242
+ * The step a run that did not finish leaves held, if any: whether it
243
+ * found one, or null when the wallet could not say (its Safe mode unknown).
244
+ */
214
245
  const follow = async (finish, released) => {
215
246
  if (latest.current !== id || !deps?.account)
216
- return;
247
+ return false;
248
+ const { account, adapter, hold, storage } = deps;
249
+ // Its Safe mode is read only once the wallet says it is known.
217
250
  try {
218
- const { account, adapter, hold, storage } = deps;
219
- // Its Safe mode is read only once the wallet says it is known.
220
251
  await walletReady(adapter);
252
+ }
253
+ catch {
254
+ return null;
255
+ }
256
+ try {
221
257
  if (latest.current !== id)
222
- return;
258
+ return false;
223
259
  const safe = adapter.isSafe();
224
260
  const saved = !action.scope
225
261
  ? null
@@ -268,9 +304,11 @@ export function useReviewedRun(deps) {
268
304
  ...(released ? { released } : {}),
269
305
  }
270
306
  : null);
307
+ return !!found;
271
308
  }
272
309
  catch {
273
310
  /* A call the hold can't open holds nothing to show. */
311
+ return false;
274
312
  }
275
313
  };
276
314
  try {
@@ -300,6 +338,7 @@ export function useReviewedRun(deps) {
300
338
  const tracked = {
301
339
  ...deps,
302
340
  onProgress: (progress) => {
341
+ sentAny ||= progress.step > 0 || !!progress.hash;
303
342
  tell(deps.onProgress, progress);
304
343
  update({
305
344
  phase: progress.phase,
@@ -324,6 +363,23 @@ export function useReviewedRun(deps) {
324
363
  keyOf(unfinished.calls.map(sent)) === keyOf(action.calls.map(sent))
325
364
  ? unfinished
326
365
  : null;
366
+ if (saved?.completed.length) {
367
+ sentAny = true;
368
+ submit(saved.completed.length - 1);
369
+ }
370
+ if (saved?.proposed)
371
+ submit(saved.proposed.step);
372
+ // Its step in flight counts once the wallet returned its hash.
373
+ const sending = saved?.sending;
374
+ if (sending &&
375
+ listReviewedWrites({ chainId: saved.calls[sending.step].chainId, account }, { storage: deps.storage }).some(({ record }) => record.id === sending.reservation && !!record.hash)) {
376
+ sentAny = true;
377
+ submit(sending.step);
378
+ }
379
+ const onSubmitted = (call, step, hash, how) => {
380
+ submit(step);
381
+ return action.onSubmitted?.(call, step, hash, how);
382
+ };
327
383
  const given = action.follow?.signal;
328
384
  const inPlace = {
329
385
  ...action.follow,
@@ -336,8 +392,15 @@ export function useReviewedRun(deps) {
336
392
  },
337
393
  };
338
394
  const result = saved
339
- ? await resumeReviewed(saved, { ...action, guard, follow: inPlace }, tracked)
340
- : await sendReviewed({ ...action, account, guard, follow: inPlace }, tracked);
395
+ ? await resumeReviewed(saved, { ...action, guard, follow: inPlace, onSubmitted }, tracked)
396
+ : await sendReviewed({ ...action, account, guard, follow: inPlace, onSubmitted }, tracked);
397
+ // A wallet that reviews on its own page reports no progress: the
398
+ // result is the run's last word.
399
+ update({ phase: result.status });
400
+ // Every step of a done run has its hash, a resumed one's too.
401
+ submit(result.status === "done"
402
+ ? (saved?.calls ?? action.calls).length - 1
403
+ : result.step);
341
404
  if (result.status === "proposed")
342
405
  void follow();
343
406
  else if (mounted.current && latest.current === id) {
@@ -362,18 +425,20 @@ export function useReviewedRun(deps) {
362
425
  failure: null,
363
426
  });
364
427
  let end;
365
- const outcome = new Promise((resolve) => (end = resolve));
428
+ const cancelled = action.follow?.signal;
429
+ const abandon = () => end(null);
430
+ const outcome = new Promise((resolve) => (end = (ran) => {
431
+ cancelled?.removeEventListener("abort", abandon);
432
+ resolve(ran);
433
+ }));
366
434
  // Replaced, or the caller's follow ended (a cancel, unlike its
367
435
  // timeout), already or later: its end is null, the step still held,
368
436
  // and nothing continues the action.
369
- const cancelled = action.follow?.signal;
370
437
  if (latest.current !== id || cancelled?.aborted)
371
438
  end(null);
372
439
  else {
373
- leave.current = () => end(null);
374
- cancelled?.addEventListener("abort", () => end(null), {
375
- once: true,
376
- });
440
+ leave.current = abandon;
441
+ cancelled?.addEventListener("abort", abandon, { once: true });
377
442
  }
378
443
  const finish = completing(error, action.calls.length, end);
379
444
  // Followed for a later settlement; one already there is read once it attaches.
@@ -400,7 +465,10 @@ export function useReviewedRun(deps) {
400
465
  }
401
466
  const signatures = error.held?.signatures;
402
467
  if (error.step < action.calls.length - 1) {
403
- const started = await runLatest.current(action);
468
+ const started = await runLatest.current({
469
+ ...action,
470
+ ...(onCancelled ? { onCancelled } : {}),
471
+ });
404
472
  const next = started?.status === "receipt"
405
473
  ? await started.ended()
406
474
  : started;
@@ -419,11 +487,44 @@ export function useReviewedRun(deps) {
419
487
  }),
420
488
  };
421
489
  }
490
+ // A resume can complete a step the wallet sent before the reload.
491
+ try {
492
+ const after = action.scope === undefined || !deps?.account
493
+ ? null
494
+ : findReviewedSequence(action.scope, deps.account, {
495
+ storage: deps.storage,
496
+ });
497
+ if (after?.completed.length &&
498
+ keyOf(after.calls.map(sent)) === keyOf(action.calls.map(sent))) {
499
+ sentAny = true;
500
+ submit(after.completed.length - 1);
501
+ }
502
+ }
503
+ catch {
504
+ /* An unreadable sequence adds nothing to what this run saw. */
505
+ }
422
506
  const cancelled = error instanceof TransactionReviewCancelledError ||
423
507
  isDefiniteWalletRejection(error);
424
508
  const line = cancelled ? null : errorLine(error);
425
- update({ ...IDLE, error: line, failure: cancelled ? null : error });
426
- void follow();
509
+ update({
510
+ ...IDLE,
511
+ lastSubmittedStep: submitted,
512
+ error: line,
513
+ failure: cancelled ? null : error,
514
+ });
515
+ // A cancel only once its hold is read and holds nothing: until the
516
+ // wallet says, it is read again.
517
+ const settle = () => void follow().then((found) => {
518
+ if (latest.current !== id || !mounted.current)
519
+ return;
520
+ if (found === null)
521
+ setTimeout(settle, RECEIPT_RETRY_MS);
522
+ else if (cancelled && !sentAny && !found) {
523
+ update({ cancelled: true });
524
+ setCancelling(onCancelled ? { onCancelled } : null);
525
+ }
526
+ });
527
+ settle();
427
528
  return line === null
428
529
  ? null
429
530
  : { status: "failed", error: line, failure: error };
@@ -1 +1 @@
1
- {"version":3,"file":"useReviewedRun.js","sourceRoot":"","sources":["../../../../src/review/react/useReviewedRun.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useReviewedRun.js","sourceRoot":"","sources":["../../../../src/review/react/useReviewedRun.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,24 @@ export type UseSavedAttemptOptions<T> = {
8
8
  client: WriteHoldClient | undefined;
9
9
  /** The check action's next step: "I checked it. <next>." ("Review it again" by default). */
10
10
  checkNext?: string;
11
+ /**
12
+ * Whether this attempt completes the flow: then only an authenticated
13
+ * success clears it, and a proven revert does not. Otherwise a revert clears
14
+ * it and a success leaves it for the app.
15
+ */
16
+ completion?: boolean;
17
+ /**
18
+ * Records a `done` outcome (the app's journal, its follow-up checks). True
19
+ * retires the attempt as settled; false or a throw leaves it to be offered
20
+ * again on the next outcome. Called once per outcome.
21
+ */
22
+ onDone?: (outcome: Extract<SavedAttemptOutcome<T>, {
23
+ status: "done";
24
+ }>) => Promise<boolean>;
25
+ /** The attempt was retired by the user's exit or check, or by a wallet rejection. Called once per outcome. */
26
+ onRetired?: (by: "exit" | "check" | "rejected") => void | Promise<void>;
27
+ /** Recover again on this interval while the outcome can still change (not while held, nor while the page is hidden). */
28
+ recheckMs?: number;
11
29
  };
12
30
  /** What a retirement returned: whether it took, and whether it outlives this tab. */
13
31
  type Retired = Awaited<ReturnType<SavedAttemptRecovery["retire"]>>;
@@ -15,6 +33,11 @@ export type UseSavedAttemptResult<T> = {
15
33
  /** How recovery ended; null until it has, or with no attempt. */
16
34
  outcome: SavedAttemptOutcome<T> | null;
17
35
  recovering: boolean;
36
+ /**
37
+ * True when nothing saved stands in the way of a new send: no attempt, or
38
+ * one recovered as `none`, or done in a way `completion` says is over.
39
+ */
40
+ clear: boolean;
18
41
  /** Recover again now: also "Check again" on a success whose details are unavailable. */
19
42
  recover: () => Promise<SavedAttemptOutcome<T> | null>;
20
43
  /** On `check`: the one explicit action, which retires the attempt for every tab and reload. */
@@ -1 +1 @@
1
- {"version":3,"file":"useSavedAttempt.d.ts","sourceRoot":"","sources":["../../../../src/review/react/useSavedAttempt.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAUrB,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;IACtC,2EAA2E;IAC3E,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,sDAAsD;IACtD,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,iCAAiC;IACjC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qFAAqF;AACrF,KAAK,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEnE,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;IACrC,iEAAiE;IACjE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB,wFAAwF;IACxF,OAAO,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACtD,+FAA+F;IAC/F,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;KAC7B,GAAG,IAAI,CAAC;IACT;;;;;OAKG;IACH,gBAAgB,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;KAC7B,GAAG,IAAI,CAAC;IACT;;;;OAIG;IACH,MAAM,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9D,CAAC;AASF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,qBAAqB,CAAC,CAAC,CAAC,CAoG1B"}
1
+ {"version":3,"file":"useSavedAttempt.d.ts","sourceRoot":"","sources":["../../../../src/review/react/useSavedAttempt.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAUrB,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI;IACtC,2EAA2E;IAC3E,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,sDAAsD;IACtD,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,iCAAiC;IACjC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CACP,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,KACzD,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,8GAA8G;IAC9G,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,wHAAwH;IACxH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qFAAqF;AACrF,KAAK,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEnE,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;IACrC,iEAAiE;IACjE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,KAAK,EAAE,OAAO,CAAC;IACf,wFAAwF;IACxF,OAAO,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACtD,+FAA+F;IAC/F,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;KAC7B,GAAG,IAAI,CAAC;IACT;;;;;OAKG;IACH,gBAAgB,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;KAC7B,GAAG,IAAI,CAAC;IACT;;;;OAIG;IACH,MAAM,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9D,CAAC;AAmBF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,qBAAqB,CAAC,CAAC,CAAC,CAwL1B"}
@@ -1,8 +1,16 @@
1
1
  import { checkedItLabel, SAVED_ATTEMPT_CONTINUE_ANYWAY_LABEL, SAVED_ATTEMPT_UNREADABLE_LINE, } from "../index.js";
2
2
  import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, } from "react";
3
- const keyOf = (attempt) => attempt
4
- ? JSON.stringify({ ...attempt, authenticate: undefined }, (_, value) => typeof value === "bigint" ? value.toString() : value)
5
- : null;
3
+ const markOf = (value) => JSON.stringify(value, (_, v) => (typeof v === "bigint" ? v.toString() : v));
4
+ const keyOf = (attempt) => attempt ? markOf({ ...attempt, authenticate: undefined }) : null;
5
+ function clearOf(attempt, outcome, completion) {
6
+ if (!attempt)
7
+ return true;
8
+ if (!outcome || outcome.status !== "done")
9
+ return outcome?.status === "none";
10
+ if (outcome.result === "failed")
11
+ return !completion;
12
+ return outcome.authenticated && completion === true;
13
+ }
6
14
  /**
7
15
  * One saved attempt's recovery, the one way every app runs it: recovered
8
16
  * when it (or the client) appears, before the app prepares any new send, with
@@ -11,7 +19,9 @@ const keyOf = (attempt) => attempt
11
19
  * request's, never reaches the current one.
12
20
  */
13
21
  export function useSavedAttempt(options) {
14
- const { recovery, client, checkNext } = options;
22
+ const { recovery, client, checkNext, completion, recheckMs } = options;
23
+ const callbacks = useRef(options);
24
+ callbacks.current = options;
15
25
  const key = keyOf(options.attempt);
16
26
  const attempt = options.attempt;
17
27
  /** The attempt as last rendered: the same saved fields, with the app's newest callbacks. */
@@ -63,12 +73,9 @@ export function useSavedAttempt(options) {
63
73
  useEffect(() => {
64
74
  void recover();
65
75
  }, [recover]);
66
- const retire = useCallback(async (reason) => {
67
- const { recovery } = lifecycle;
68
- const attempt = latest.current;
69
- if (!attempt || !current(lifecycle))
70
- return { retired: false };
71
- const retired = await recovery.retire(attempt, reason);
76
+ /** Retires `attempt` of this lifecycle; only a current lifecycle shows what follows. */
77
+ const retireOf = useCallback(async (attempt, reason) => {
78
+ const retired = await lifecycle.recovery.retire(attempt, reason);
72
79
  if (!current(lifecycle))
73
80
  return retired;
74
81
  if (!retired.retired && retired.reason === "unreadable")
@@ -76,10 +83,81 @@ export function useSavedAttempt(options) {
76
83
  await recover();
77
84
  return retired;
78
85
  }, [lifecycle, recover]);
86
+ const retire = useCallback(async (reason) => {
87
+ const attempt = latest.current;
88
+ if (!attempt || !current(lifecycle))
89
+ return { retired: false };
90
+ return retireOf(attempt, reason);
91
+ }, [lifecycle, retireOf]);
79
92
  const outcome = shown.of === lifecycle ? shown.outcome : null;
93
+ /**
94
+ * Every outcome handed to onDone or onRetired, by value and attempt, while
95
+ * its callback runs and after: each is handed once until it is rearmed.
96
+ */
97
+ const handed = useRef(new Set());
98
+ useEffect(() => {
99
+ if (!outcome || (outcome.status !== "done" && outcome.status !== "none"))
100
+ return;
101
+ const mark = `${key}:${markOf(outcome)}`;
102
+ if (handed.current.has(mark))
103
+ return;
104
+ const rearm = () => void handed.current.delete(mark);
105
+ const { onDone, onRetired } = callbacks.current;
106
+ if (outcome.status === "done" && onDone) {
107
+ handed.current.add(mark);
108
+ const hash = outcome.hash;
109
+ // Handed only while its attempt is still the hook's: a replacement's
110
+ // never. The handed attempt is retired even if onDone cleared it.
111
+ let handedAttempt;
112
+ void Promise.resolve()
113
+ .then(() => {
114
+ if (!current(lifecycle))
115
+ return false;
116
+ handedAttempt = latest.current;
117
+ return onDone(outcome);
118
+ })
119
+ .then(async (settled) => {
120
+ // A retirement another tab's lock refused is offered again.
121
+ if (!settled ||
122
+ !handedAttempt ||
123
+ !(await retireOf(handedAttempt, {
124
+ by: "settled",
125
+ ...(hash ? { hash } : {}),
126
+ })).retired)
127
+ rearm();
128
+ })
129
+ .catch(rearm);
130
+ }
131
+ else if (outcome.status === "none" &&
132
+ outcome.retired &&
133
+ outcome.retired !== "settled" &&
134
+ onRetired) {
135
+ handed.current.add(mark);
136
+ const by = outcome.retired;
137
+ void Promise.resolve()
138
+ .then(() => (current(lifecycle) ? onRetired(by) : undefined))
139
+ .catch(rearm);
140
+ }
141
+ }, [key, lifecycle, outcome, retireOf]);
142
+ const status = outcome?.status;
143
+ const recovering = shown.of === lifecycle && shown.recovering;
144
+ const busy = useRef(recovering);
145
+ busy.current = recovering;
146
+ useEffect(() => {
147
+ if (!recheckMs || !status || status === "held")
148
+ return;
149
+ // A slow recovery finishes before the next one starts.
150
+ const timer = setInterval(() => {
151
+ if (!busy.current &&
152
+ (typeof document === "undefined" || !document.hidden))
153
+ void recover();
154
+ }, recheckMs);
155
+ return () => clearInterval(timer);
156
+ }, [recheckMs, status, recover]);
80
157
  return {
81
158
  outcome,
82
- recovering: shown.of === lifecycle && shown.recovering,
159
+ recovering,
160
+ clear: clearOf(attempt, outcome, completion),
83
161
  recover,
84
162
  checkAction: outcome?.status === "check"
85
163
  ? {