Skip to content

Commit

Permalink
fix: make hooks generic
Browse files Browse the repository at this point in the history
  • Loading branch information
michalkvasnicak committed Nov 4, 2024
1 parent 65950d5 commit b8270b3
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 16 deletions.
28 changes: 20 additions & 8 deletions packages/render/src/unstable-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export type ResolveSignerFunction = (
export type UseFrameOptions<
TExtraDataPending = unknown,
TExtraDataDone = unknown,
TExtraDataoneRedirect = unknown,
TExtraDataDoneRedirect = unknown,
TExtraDataRequestError = unknown,
TExtraDataMesssage = unknown,
> = {
Expand All @@ -61,7 +61,7 @@ export type UseFrameOptions<
UseFrameStateOptions<
TExtraDataPending,
TExtraDataDone,
TExtraDataoneRedirect,
TExtraDataDoneRedirect,
TExtraDataRequestError,
TExtraDataMesssage
>,
Expand All @@ -70,7 +70,7 @@ export type UseFrameOptions<
) => UseFrameStateReturn<
TExtraDataPending,
TExtraDataDone,
TExtraDataoneRedirect,
TExtraDataDoneRedirect,
TExtraDataRequestError,
TExtraDataMesssage
>;
Expand Down Expand Up @@ -218,7 +218,7 @@ export type FramesStackItem<
export type UseFrameReturnValue<
TExtraDataPending = unknown,
TExtraDataDone = unknown,
TExtraDataoneRedirect = unknown,
TExtraDataDoneRedirect = unknown,
TExtraDataRequestError = unknown,
TExtraDataMesssage = unknown,
> = {
Expand All @@ -236,7 +236,7 @@ export type UseFrameReturnValue<
FrameReducerActions<
TExtraDataPending,
TExtraDataDone,
TExtraDataoneRedirect,
TExtraDataDoneRedirect,
TExtraDataRequestError,
TExtraDataMesssage
>
Expand All @@ -247,7 +247,7 @@ export type UseFrameReturnValue<
readonly framesStack: FramesStack<
TExtraDataPending,
TExtraDataDone,
TExtraDataoneRedirect,
TExtraDataDoneRedirect,
TExtraDataRequestError,
TExtraDataMesssage
>;
Expand Down Expand Up @@ -318,9 +318,21 @@ export type FrameReducerActions<
extra: TExtraDone;
};

export type UseFetchFrameOptions = {
export type UseFetchFrameOptions<
TExtraPending = unknown,
TExtraDone = unknown,
TExtraDoneRedirect = unknown,
TExtraRequestError = unknown,
TExtraMesssage = unknown,
> = {
frameState: FrameState;
frameStateAPI: FrameStateAPI;
frameStateAPI: FrameStateAPI<
TExtraPending,
TExtraDone,
TExtraDoneRedirect,
TExtraRequestError,
TExtraMesssage
>;
/**
* URL or path to the frame proxy handling GET requests.
*/
Expand Down
24 changes: 18 additions & 6 deletions packages/render/src/unstable-use-fetch-frame.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,13 @@ function defaultErrorHandler(error: Error): void {
console.error(error);
}

export function useFetchFrame({
export function useFetchFrame<
TExtraPending = unknown,
TExtraDone = unknown,
TExtraDoneRedirect = unknown,
TExtraRequestError = unknown,
TExtraMesssage = unknown,
>({
frameStateAPI,
frameState,
frameActionProxy,
Expand All @@ -67,7 +73,13 @@ export function useFetchFrame({
onTransactionProcessingError,
onTransactionProcessingStart,
onTransactionProcessingSuccess,
}: UseFetchFrameOptions): FetchFrameFunction {
}: UseFetchFrameOptions<
TExtraPending,
TExtraDone,
TExtraDoneRedirect,
TExtraRequestError,
TExtraMesssage
>): FetchFrameFunction {
async function handleFailedResponse({
response,
endTime,
Expand All @@ -76,7 +88,7 @@ export function useFetchFrame({
}: {
endTime: Date;
response: Response;
frameStackPendingItem: FrameStackPending;
frameStackPendingItem: FrameStackPending<TExtraPending>;
onError?: (error: Error) => void;
}): Promise<void> {
if (response.ok) {
Expand Down Expand Up @@ -228,15 +240,15 @@ export function useFetchFrame({
request: FramePOSTRequest<SignerStateActionContext>,
options?: {
preflightRequest?: {
pendingFrameStackItem: FrameStackPostPending;
pendingFrameStackItem: FrameStackPostPending<TExtraPending>;
startTime: Date;
};
shouldClear?: boolean;
onError?: (error: Error) => void;
onSuccess?: () => void;
}
): Promise<void> {
let pendingItem: FrameStackPostPending;
let pendingItem: FrameStackPostPending<TExtraPending>;

if (frameState.type === "not-initialized") {
throw new Error(
Expand Down Expand Up @@ -301,7 +313,7 @@ export function useFetchFrame({
onSuccess: onSuccessInternal,
}: {
response: Response;
currentPendingItem: FrameStackPostPending;
currentPendingItem: FrameStackPostPending<TExtraPending>;
onError?: (error: Error) => void;
onSuccess?: () => void;
}): Promise<void> {
Expand Down
22 changes: 20 additions & 2 deletions packages/render/src/unstable-use-frame.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,13 @@ export type {
};

// eslint-disable-next-line camelcase -- this is only temporary
export function useFrame_unstable({
export function useFrame_unstable<
TExtraDataPending = unknown,
TExtraDataDone = unknown,
TExtraDataDoneRedirect = unknown,
TExtraDataRequestError = unknown,
TExtraDataMesssage = unknown,
>({
frameStateHook: useFrameStateHook = useFrameState,
homeframeUrl,
onMint = onMintFallback,
Expand Down Expand Up @@ -166,7 +172,19 @@ export function useFrame_unstable({
onTransactionProcessingSuccess,
onTransactionStart,
onTransactionSuccess,
}: UseFrameOptions): UseFrameReturnValue {
}: UseFrameOptions<
TExtraDataPending,
TExtraDataDone,
TExtraDataDoneRedirect,
TExtraDataRequestError,
TExtraDataMesssage
>): UseFrameReturnValue<
TExtraDataPending,
TExtraDataDone,
TExtraDataDoneRedirect,
TExtraDataRequestError,
TExtraDataMesssage
> {
const [inputText, setInputText] = useState("");
const inputTextRef = useFreshRef(inputText);
const [frameState, frameStateAPI] = useFrameStateHook({
Expand Down

0 comments on commit b8270b3

Please sign in to comment.