RerenderPageDialog.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <template lang="pug">
  2. q-dialog(ref='dialogRef', @hide='onDialogHide' position='bottom', persistent)
  3. q-card(style='width: 350px;')
  4. q-linear-progress(query, color='page')
  5. q-card-section.text-center {{ t('renderPageDialog.loading') }}
  6. </template>
  7. <script setup>
  8. import gql from 'graphql-tag'
  9. import { useI18n } from 'vue-i18n'
  10. import { useDialogPluginComponent, useQuasar } from 'quasar'
  11. import { computed, onMounted, reactive } from 'vue'
  12. import { usePageStore } from 'src/stores/page'
  13. // EMITS
  14. defineEmits([
  15. ...useDialogPluginComponent.emits
  16. ])
  17. // QUASAR
  18. const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } = useDialogPluginComponent()
  19. const $q = useQuasar()
  20. // STORES
  21. const pageStore = usePageStore()
  22. // I18N
  23. const { t } = useI18n()
  24. // METHODS
  25. async function rerenderPage () {
  26. await new Promise(resolve => setTimeout(resolve, 1000)) // allow for dialog to show
  27. try {
  28. const resp = await APOLLO_CLIENT.mutate({
  29. mutation: gql`
  30. mutation rerenderPage(
  31. $id: UUID!
  32. ) {
  33. rerenderPage (
  34. id: $id
  35. ) {
  36. operation {
  37. succeeded
  38. message
  39. }
  40. }
  41. }
  42. `,
  43. variables: {
  44. id: pageStore.id
  45. }
  46. })
  47. if (resp?.data?.rerenderPage?.operation?.succeeded) {
  48. $q.notify({
  49. type: 'positive',
  50. message: t('renderPageDialog.success')
  51. })
  52. onDialogOK()
  53. } else {
  54. throw new Error(resp?.data?.rerenderPage?.operation?.message || 'An unexpected error occured.')
  55. }
  56. } catch (err) {
  57. $q.notify({
  58. type: 'negative',
  59. message: err.message
  60. })
  61. onDialogCancel()
  62. }
  63. }
  64. // MOUNTED
  65. onMounted(() => {
  66. rerenderPage()
  67. })
  68. </script>