Skip to content
Snippets Groups Projects
post-media.ts 1.61 KiB
Newer Older
import dbmedia from "@/lib/db-media";
import { createId } from '@paralleldrive/cuid2';

export const postMedia = async ({
  files,
  gweet_id,
}: {
  files: File[];
  gweet_id?: string;
}) => {

  try {
    files.forEach(async (file) => {
      const imagePath = createId();

      const { error } = await dbmedia.storage
        .from("images")
        .upload(`image-${imagePath}`, file);

      if (error) {
        console.log("error", error);
        throw new Error("Failed to upload image");
      } else {
        const { data: mediaUrl } = dbmedia.storage
          .from("images")
          .getPublicUrl(`image-${imagePath}`);

        const media = {
          ...(gweet_id && { gweet_id }),
          url: mediaUrl?.publicUrl,
          type: "image",
        };

        await fetch('/api/media', {
          method: 'POST',
          body: JSON.stringify(media)
        })
      }
    });

    return true;
  } catch (error: any) {
    if (error.response) {
      // The request was made and the server responded with a status code
      // that falls out of the range of 2xx
      console.log(error.response.data);
      console.log(error.response.status);
      console.log(error.response.headers);
    } else if (error.request) {
      // The request was made but no response was received
      // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
      // http.ClientRequest in node.js
      console.log(error.request);
    } else {
      // Something happened in setting up the request that triggered an Error
      console.log("Error", error.message);
    }
    console.log(error.config);
  }
};