Skip to content

Commit b30a841

Browse files
Merge pull request #648 from gadget-inc/mill/allowUseGlobalActionToTakeNoParams
Allow `useGlobalAction` callback to take no arguments
2 parents f5b9a9f + 246f9cd commit b30a841

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

packages/react/src/useGlobalAction.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { get, globalActionOperation, namespaceDataPath } from "@gadgetinc/api-cl
33
import { useCallback, useEffect, useMemo } from "react";
44
import type { OperationContext, UseMutationState } from "urql";
55
import { useGadgetMutation } from "./useGadgetMutation.js";
6-
import type { ActionHookResult } from "./utils.js";
6+
import type { ActionHookResultWithOptionalCallbackVariables } from "./utils.js";
77
import { ErrorWrapper } from "./utils.js";
88

99
/**
@@ -29,7 +29,7 @@ import { ErrorWrapper } from "./utils.js";
2929
*/
3030
export const useGlobalAction = <F extends GlobalActionFunction<any>>(
3131
action: F
32-
): ActionHookResult<any, Exclude<F["variablesType"], null | undefined>> => {
32+
): ActionHookResultWithOptionalCallbackVariables<any, Exclude<F["variablesType"], null | undefined>> => {
3333
useEffect(() => {
3434
if (action.type === ("stubbedAction" as string)) {
3535
const stubbedAction = action as unknown as StubbedActionFunction<any>;
@@ -63,8 +63,8 @@ export const useGlobalAction = <F extends GlobalActionFunction<any>>(
6363
return [
6464
transformedResult,
6565
useCallback(
66-
async (variables: F["variablesType"], context?: Partial<OperationContext>) => {
67-
const result = await runMutation(variables, context);
66+
async (variables?: F["variablesType"], context?: Partial<OperationContext>) => {
67+
const result = await runMutation(variables ?? {}, context);
6868
return processResult({ fetching: false, ...result }, action);
6969
},
7070
[action, runMutation]

packages/react/src/utils.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -127,14 +127,18 @@ export type RequiredKeysOf<BaseType> = Exclude<
127127
* Includes the data result object and a function for running the mutation.
128128
**/
129129
export type ActionHookResult<Data = any, Variables extends AnyVariables = AnyVariables> = RequiredKeysOf<Variables> extends never
130-
? [
131-
ActionHookState<Data, Variables>,
132-
(variables?: Variables, context?: Partial<OperationContext>) => Promise<ActionHookState<Data, Variables>>
133-
]
134-
: [
135-
ActionHookState<Data, Variables>,
136-
(variables: Variables, context?: Partial<OperationContext>) => Promise<ActionHookState<Data, Variables>>
137-
];
130+
? ActionHookResultWithOptionalCallbackVariables<Data, Variables>
131+
: ActionHookResultWithRequiredCallbackVariables<Data, Variables>;
132+
133+
export type ActionHookResultWithOptionalCallbackVariables<Data = any, Variables extends AnyVariables = AnyVariables> = [
134+
ActionHookState<Data, Variables>,
135+
(variables?: Variables, context?: Partial<OperationContext>) => Promise<ActionHookState<Data, Variables>>
136+
];
137+
138+
export type ActionHookResultWithRequiredCallbackVariables<Data = any, Variables extends AnyVariables = AnyVariables> = [
139+
ActionHookState<Data, Variables>,
140+
(variables: Variables, context?: Partial<OperationContext>) => Promise<ActionHookState<Data, Variables>>
141+
];
138142

139143
/**
140144
* The inner result object returned from a mutation result

0 commit comments

Comments
 (0)