From 74ffbd01e62350da5e4e8439cf157e3b471097d2 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sun, 1 Dec 2019 02:38:47 +0100 Subject: [PATCH] feat(useMutation): onDone & onError --- packages/vue-apollo-composable/src/useMutation.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/vue-apollo-composable/src/useMutation.ts b/packages/vue-apollo-composable/src/useMutation.ts index 775581b..c4e6351 100644 --- a/packages/vue-apollo-composable/src/useMutation.ts +++ b/packages/vue-apollo-composable/src/useMutation.ts @@ -1,8 +1,10 @@ import { DocumentNode } from 'graphql' import { MutationOptions, OperationVariables } from 'apollo-client' import { ref } from '@vue/composition-api' +import { FetchResult } from 'apollo-link' import { useApolloClient } from './useApolloClient' import { ReactiveFunction } from './util/ReactiveFunction' +import { useEventHook } from './util/useEventHook' export interface UseMutationOptions< TResult = any, @@ -23,6 +25,9 @@ export function useMutation< const loading = ref(false) const error = ref(null) const called = ref(false) + + const doneEvent = useEventHook, Record>>() + const errorEvent = useEventHook() // Apollo Client const { resolveClient } = useApolloClient() @@ -55,10 +60,12 @@ export function useMutation< }, }) loading.value = false + doneEvent.trigger(result) return result } catch (e) { error.value = e loading.value = false + errorEvent.trigger(e) throw e } } @@ -68,5 +75,7 @@ export function useMutation< loading, error, called, + onDone: doneEvent.on, + onError: errorEvent.on, } } \ No newline at end of file