diff --git a/packages/vue-apollo-composable/src/useMutation.ts b/packages/vue-apollo-composable/src/useMutation.ts index ffbfe9d..37ed4d4 100644 --- a/packages/vue-apollo-composable/src/useMutation.ts +++ b/packages/vue-apollo-composable/src/useMutation.ts @@ -14,6 +14,7 @@ export interface UseMutationOptions< TVariables = OperationVariables > extends Omit, 'mutation'> { clientId?: string + throws?: 'auto' | 'always' | 'never' } type DocumentParameter = DocumentNode | Ref | ReactiveFunction | TypedDocumentNode | Ref> | ReactiveFunction> @@ -96,7 +97,9 @@ export function useMutation< error.value = e loading.value = false errorEvent.trigger(e) - throw e + if (currentOptions.throws === 'always' || (currentOptions.throws !== 'never' && !errorEvent.getCount())) { + throw e + } } } diff --git a/packages/vue-apollo-composable/src/util/useEventHook.ts b/packages/vue-apollo-composable/src/util/useEventHook.ts index 73cec42..43bd7d1 100644 --- a/packages/vue-apollo-composable/src/util/useEventHook.ts +++ b/packages/vue-apollo-composable/src/util/useEventHook.ts @@ -21,9 +21,14 @@ export function useEventHook () { } } + function getCount () { + return fns.length + } + return { on, off, trigger, + getCount, } }