MediaLibraryProvider.jsx 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import React, { useContext } from "react";
  2. import {
  3. uploadResourceImage as uploadMedia,
  4. deleteResourceImage as deleteMedia,
  5. listResourceImage as listMedia,
  6. } from "../../utils/api";
  7. export const MediaLibraryContext = React.createContext({});
  8. export const MediaLibraryProvider = ({ children, libraries = [] }) => {
  9. const addMedia = React.useCallback(async ({ boxId, resourceId }, file) => {
  10. const filePath = await uploadMedia(boxId, resourceId, file);
  11. return {
  12. type: "local",
  13. content: filePath,
  14. };
  15. }, []);
  16. const removeMedia = React.useCallback(async (key) => {
  17. return await deleteMedia(key);
  18. }, []);
  19. const getLibraryMedia = React.useCallback(
  20. async ({ boxId, resourceId }) => listMedia(boxId, resourceId),
  21. []
  22. );
  23. return (
  24. <MediaLibraryContext.Provider
  25. value={{ addMedia, getLibraryMedia, libraries, removeMedia }}
  26. >
  27. {children}
  28. </MediaLibraryContext.Provider>
  29. );
  30. };
  31. export const useMediaLibrary = () => {
  32. return useContext(MediaLibraryContext);
  33. };
  34. export default MediaLibraryProvider;