useImageProvider.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import {AnyJson} from '~/types/interfaces'
  2. import {QUERY_TYPE} from "~/types/enums";
  3. import {useFetch, Ref, ref} from '@nuxtjs/composition-api'
  4. import DataProvider from "~/services/data/dataProvider";
  5. /**
  6. * @category composables/data
  7. * @class UseImage
  8. * Use Classe qui va récupérer les Images
  9. */
  10. export function useImageProvider($dataProvider: DataProvider, $config: AnyJson) {
  11. /**
  12. * Récupération d'une image via l'ancienne API
  13. */
  14. function getOne(id: number | undefined, imageByDefault: string = '', height: number | undefined = 0, width: number | undefined = 0): AnyJson {
  15. const imageLoaded: Ref<String> = ref('')
  16. const {fetchState, fetch} = useFetch(async () => {
  17. try {
  18. if (id) {
  19. imageLoaded.value = await provideImg(id, height, width)
  20. } else
  21. throw new Error('id is null')
  22. } catch (e) {
  23. if (imageByDefault)
  24. imageLoaded.value = require(`assets/images/byDefault/${imageByDefault}`)
  25. }
  26. }
  27. )
  28. return {
  29. fetch,
  30. fetchState,
  31. imageLoaded
  32. }
  33. }
  34. /**
  35. * retourne l'image demandée
  36. * @param id
  37. * @param height
  38. * @param width
  39. */
  40. async function provideImg(id: number, height: number = 0, width: number = 0) {
  41. return await $dataProvider.invoke({
  42. type: QUERY_TYPE.IMAGE,
  43. baseUrl: $config.baseURL_Legacy,
  44. imgArgs: {
  45. id: id,
  46. height: height,
  47. width: width
  48. }
  49. })
  50. }
  51. return {
  52. getOne,
  53. provideImg
  54. }
  55. }