Fix `createDataLoadingThunk` to allow actions without arguments (#30439)

shrike
Renaud Chaput 2024-05-27 11:00:40 +02:00 committed by GitHub
parent a5c808e9b0
commit 6a75e1c8c8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 7 additions and 14 deletions

View File

@ -89,21 +89,17 @@ type OnData<LoadDataResult, ReturnedData> = (
}, },
) => ReturnedData | DiscardLoadData | Promise<ReturnedData | DiscardLoadData>; ) => ReturnedData | DiscardLoadData | Promise<ReturnedData | DiscardLoadData>;
type ArgsType = Record<string, unknown> | undefined;
// Overload when there is no `onData` method, the payload is the `onData` result // Overload when there is no `onData` method, the payload is the `onData` result
export function createDataLoadingThunk< export function createDataLoadingThunk<LoadDataResult, Args extends ArgsType>(
LoadDataResult,
Args extends Record<string, unknown>,
>(
name: string, name: string,
loadData: (args: Args) => Promise<LoadDataResult>, loadData: (args: Args) => Promise<LoadDataResult>,
thunkOptions?: AppThunkOptions, thunkOptions?: AppThunkOptions,
): ReturnType<typeof createThunk<Args, LoadDataResult>>; ): ReturnType<typeof createThunk<Args, LoadDataResult>>;
// Overload when the `onData` method returns discardLoadDataInPayload, then the payload is empty // Overload when the `onData` method returns discardLoadDataInPayload, then the payload is empty
export function createDataLoadingThunk< export function createDataLoadingThunk<LoadDataResult, Args extends ArgsType>(
LoadDataResult,
Args extends Record<string, unknown>,
>(
name: string, name: string,
loadData: (args: Args) => Promise<LoadDataResult>, loadData: (args: Args) => Promise<LoadDataResult>,
onDataOrThunkOptions?: onDataOrThunkOptions?:
@ -113,10 +109,7 @@ export function createDataLoadingThunk<
): ReturnType<typeof createThunk<Args, void>>; ): ReturnType<typeof createThunk<Args, void>>;
// Overload when the `onData` method returns nothing, then the mayload is the `onData` result // Overload when the `onData` method returns nothing, then the mayload is the `onData` result
export function createDataLoadingThunk< export function createDataLoadingThunk<LoadDataResult, Args extends ArgsType>(
LoadDataResult,
Args extends Record<string, unknown>,
>(
name: string, name: string,
loadData: (args: Args) => Promise<LoadDataResult>, loadData: (args: Args) => Promise<LoadDataResult>,
onDataOrThunkOptions?: AppThunkOptions | OnData<LoadDataResult, void>, onDataOrThunkOptions?: AppThunkOptions | OnData<LoadDataResult, void>,
@ -126,7 +119,7 @@ export function createDataLoadingThunk<
// Overload when there is an `onData` method returning something // Overload when there is an `onData` method returning something
export function createDataLoadingThunk< export function createDataLoadingThunk<
LoadDataResult, LoadDataResult,
Args extends Record<string, unknown>, Args extends ArgsType,
Returned, Returned,
>( >(
name: string, name: string,
@ -162,7 +155,7 @@ export function createDataLoadingThunk<
*/ */
export function createDataLoadingThunk< export function createDataLoadingThunk<
LoadDataResult, LoadDataResult,
Args extends Record<string, unknown>, Args extends ArgsType,
Returned, Returned,
>( >(
name: string, name: string,