Skip to content

Commit 227fd9a

Browse files
authored
feat: add onMissingSigner callback to useFrame_unstable hook (#538)
1 parent b4aa15d commit 227fd9a

File tree

5 files changed

+18
-4
lines changed

5 files changed

+18
-4
lines changed

.changeset/chilled-spies-vanish.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@frames.js/render": patch
3+
---
4+
5+
feat: add onMissingSigner callback to useFrame_unstable

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"dev:utils-starter": "FJS_MONOREPO=true turbo dev --filter=template-next-utils-starter... --filter=debugger...",
99
"lint": "turbo lint --filter=!template-*",
1010
"test:ci": "jest --ci",
11-
"test": "cd ./packages/frames.js && npm run test:watch",
11+
"test": "cd ./packages/frames.js && yarn test:watch",
1212
"check:package-types": "turbo check:package-types",
1313
"check:package-lint": "turbo check:package-lint",
1414
"check:types": "turbo check:types",

packages/render/src/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ export type OnSignatureFunc = (
4343
args: OnSignatureArgs
4444
) => Promise<`0x${string}` | null>;
4545

46+
export type OnMissingSignerFunction = () => void;
47+
4648
type OnComposerFormActionFuncArgs = {
4749
form: ComposerActionFormResponse;
4850
cast: ComposerActionState;

packages/render/src/unstable-types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import type {
2626
FrameGETRequest,
2727
FramePOSTRequest,
2828
FrameRequest,
29+
OnMissingSignerFunction,
2930
OnMintArgs,
3031
OnSignatureFunc,
3132
OnTransactionFunc,
@@ -200,6 +201,8 @@ export type UseFrameOptions<
200201
* Only for frames v2
201202
*/
202203
onLaunchFrameButtonPressed?: LaunchFrameButtonPressFunction;
204+
205+
onMissingSigner?: OnMissingSignerFunction;
203206
} & Partial<
204207
Pick<
205208
UseFetchFrameOptions,

packages/render/src/unstable-use-frame.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import type {
1919
import { useFrameState } from "./unstable-use-frame-state";
2020
import { useFetchFrame } from "./unstable-use-fetch-frame";
2121
import { useFreshRef } from "./hooks/use-fresh-ref";
22-
import { tryCallAsync } from "./helpers";
22+
import { tryCall, tryCallAsync } from "./helpers";
2323

2424
function onErrorFallback(e: Error): void {
2525
console.error("@frames.js/render", e);
@@ -192,6 +192,7 @@ export function useFrame_unstable<
192192
onTransactionProcessingError,
193193
onTransactionProcessingStart,
194194
onTransactionProcessingSuccess,
195+
onMissingSigner,
195196
}: UseFrameOptions<
196197
TExtraDataPending,
197198
TExtraDataDone,
@@ -249,6 +250,7 @@ export function useFrame_unstable<
249250

250251
const fetchFrameRef = useFreshRef(fetchFrame);
251252
const onErrorRef = useFreshRef(onError);
253+
const onMissingSignerRef = useFreshRef(onMissingSigner);
252254

253255
useEffect(() => {
254256
if (!homeframeUrl) {
@@ -318,6 +320,7 @@ export function useFrame_unstable<
318320
}
319321

320322
if (!currentState.signerState.hasSigner) {
323+
tryCall(() => onMissingSignerRef.current?.());
321324
await currentState.signerState.onSignerlessFramePress();
322325
return;
323326
}
@@ -341,7 +344,7 @@ export function useFrame_unstable<
341344
sourceFrame: currentFrame,
342345
});
343346
},
344-
[fetchFrameRef, frameStateRef, onErrorRef]
347+
[fetchFrameRef, frameStateRef, onErrorRef, onMissingSignerRef]
345348
);
346349

347350
const resolveAddressRef = useFreshRef(resolveAddress);
@@ -370,6 +373,7 @@ export function useFrame_unstable<
370373

371374
// Send post request to get calldata
372375
if (!currentState.signerState.hasSigner) {
376+
tryCall(() => onMissingSignerRef.current?.());
373377
await currentState.signerState.onSignerlessFramePress();
374378
return;
375379
}
@@ -417,7 +421,7 @@ export function useFrame_unstable<
417421
sourceFrame: currentFrame,
418422
});
419423
},
420-
[frameStateRef, fetchFrameRef, onErrorRef, resolveAddressRef]
424+
[frameStateRef, fetchFrameRef, onErrorRef, onMissingSignerRef, resolveAddressRef]
421425
);
422426

423427
const onLaunchFrameButtonPressRef = useFreshRef(onLaunchFrameButtonPressed);

0 commit comments

Comments
 (0)