MobytStatus.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <!--
  2. Texte descriptif du statut Mobyt de la structure
  3. @see https://vuetifyjs.com/en/components/text-fields/
  4. -->
  5. <template>
  6. <span v-if="mobytStatus && !mobytStatusFetch.pending && mobytStatus.active">
  7. {{ mobytStatus.money.toLocaleString($i18n.locale, { style: 'currency', currency: 'EUR' }) }}
  8. {{ $t('convert_price_to_sms', { nb_sms: mobytStatus.amount }) }}
  9. </span>
  10. </template>
  11. <script lang="ts">
  12. import { defineComponent, ref, Ref, useContext, useFetch } from '@nuxtjs/composition-api'
  13. import { ApiResponse, MobytUserStatus } from '~/types/interfaces'
  14. import { QUERY_TYPE } from '~/types/enums'
  15. export default defineComponent({
  16. setup (_, {emit}) {
  17. const { store, $dataProvider } = useContext()
  18. const id: number = store.state.profile.organization.id
  19. const mobytStatus: Ref<MobytUserStatus | null> = ref(null)
  20. // fetch the mobyt status
  21. const { fetchState } = useFetch(async () => {
  22. try {
  23. const response:ApiResponse = await $dataProvider.invoke({
  24. type: QUERY_TYPE.DEFAULT,
  25. url: '/api/mobyt/status/' + id
  26. })
  27. mobytStatus.value = response.data as MobytUserStatus
  28. if(!mobytStatus.value?.active) emit('disabled_sms_row')
  29. } catch (Error) {
  30. // eslint-disable-next-line no-console
  31. console.error('Error: Mobyt status not found')
  32. }
  33. })
  34. return {
  35. mobytStatus,
  36. mobytStatusFetch: fetchState
  37. }
  38. }
  39. })
  40. </script>