diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b952a4..f99ecf0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - fixes for hide contrib setting - fix problem with node-prune on production build - translation for prev / continue during form submission +- reload form list after adding new one (https://github.com/ohmyform/ohmyform/issues/139) ### Security diff --git a/graphql/fragment/form.pager.fragment.ts b/graphql/fragment/form.pager.fragment.ts index 19cae2e..399b5b8 100644 --- a/graphql/fragment/form.pager.fragment.ts +++ b/graphql/fragment/form.pager.fragment.ts @@ -15,7 +15,7 @@ export interface FormPagerFragment { } export const FORM_PAGER_FRAGMENT = gql` - fragment Form on Form { + fragment PagerForm on Form { id created lastModified diff --git a/graphql/fragment/form.public.fragment.ts b/graphql/fragment/form.public.fragment.ts index 58327c1..ae1514e 100644 --- a/graphql/fragment/form.public.fragment.ts +++ b/graphql/fragment/form.public.fragment.ts @@ -80,7 +80,7 @@ export interface FormPublicFragment { } export const FORM_PUBLIC_FRAGMENT = gql` - fragment Form on Form { + fragment PublicForm on Form { id title language diff --git a/graphql/mutation/form.create.mutation.ts b/graphql/mutation/form.create.mutation.ts index 3be8818..a758f11 100644 --- a/graphql/mutation/form.create.mutation.ts +++ b/graphql/mutation/form.create.mutation.ts @@ -26,5 +26,20 @@ const MUTATION = gql` ` export const useFormCreateMutation = ( - data?: MutationHookOptions -): MutationTuple => useMutation(MUTATION, data) + options: MutationHookOptions = {} +): MutationTuple => { + const oldUpdate = options.update + + options.update = (cache, result, options) => { + cache.evict({ + fieldName: 'listForms', + }) + cache.gc() + + if (oldUpdate) { + oldUpdate(cache, result, options) + } + } + + return useMutation(MUTATION, options) +} diff --git a/graphql/query/form.pager.query.ts b/graphql/query/form.pager.query.ts index f8e1e94..13af394 100644 --- a/graphql/query/form.pager.query.ts +++ b/graphql/query/form.pager.query.ts @@ -21,7 +21,7 @@ const QUERY = gql` query listForms($start: Int, $limit: Int) { pager: listForms(start: $start, limit: $limit) { entries { - ...Form + ...PagerForm } total limit diff --git a/graphql/query/form.public.query.ts b/graphql/query/form.public.query.ts index dc289ca..10580f7 100644 --- a/graphql/query/form.public.query.ts +++ b/graphql/query/form.public.query.ts @@ -13,7 +13,7 @@ interface Variables { const QUERY = gql` query getFormById($id: ID!) { form: getFormById(id: $id) { - ...Form + ...PublicForm } } diff --git a/graphql/query/submission.pager.query.ts b/graphql/query/submission.pager.query.ts index c92f2e2..0d3de61 100644 --- a/graphql/query/submission.pager.query.ts +++ b/graphql/query/submission.pager.query.ts @@ -25,7 +25,7 @@ interface Variables { const QUERY = gql` query listSubmissions($form: ID!, $start: Int, $limit: Int) { form: getFormById(id: $form) { - ...Form + ...PagerForm } pager: listSubmissions(form: $form, start: $start, limit: $limit) {