use-post-upload-photo.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { useMutation } from '@tanstack/react-query';
  2. import { AxiosProgressEvent, AxiosRequestConfig } from 'axios';
  3. import { eventsQueryKeys } from '../events-query-keys';
  4. import { eventsApi, PostUploadTempFileReturn, type PostUploadPhoto } from '../events-api';
  5. import { type BaseAxiosError } from '../../../../types';
  6. export interface UseUploadPhotoVariables extends PostUploadPhoto {
  7. onUploadProgress?: (progressEvent: AxiosProgressEvent) => void;
  8. }
  9. export const usePostUploadPhotoMutation = () => {
  10. return useMutation<
  11. PostUploadTempFileReturn,
  12. BaseAxiosError,
  13. UseUploadPhotoVariables,
  14. PostUploadTempFileReturn
  15. >({
  16. mutationKey: eventsQueryKeys.uploadPhoto(),
  17. mutationFn: async (variables) => {
  18. const { token, event_id, file, onUploadProgress } = variables;
  19. const config: AxiosRequestConfig = {
  20. onUploadProgress: (progressEvent: AxiosProgressEvent) => {
  21. if (onUploadProgress) {
  22. onUploadProgress(progressEvent);
  23. }
  24. }
  25. };
  26. const response = await eventsApi.uploadPhoto({ token, event_id, file }, config);
  27. return response.data;
  28. }
  29. });
  30. };