Pages
Eventos
Eventid Folder
edit.tsx

edit.tsx

Esta ruta se encarga de editar el evento. En esta se pueden subir o editar las fotos.

Pero tambien otros aspectos generales del evento, como las siguientes:

  • Nombre del evento.
  • Descripción del evento.
  • Día del evento.
  • Hora de inicio del evento.
  • Hora de fin del evento.
  • Lugar del evento
  • Fotos del evento.

Los eventos los puede editar cualquiera que tengan role de administrador o de moderador.

En esta ruta lo que se hace es un update sencillo. Que sería el siguiente:

async function deleteImage() {
  let { error } = await supabase.storage
    .from("fotografiaseventos")
    .remove(["fotosEventos/gato.jpg"]);
  console.log(error);
}

Pero para subir las imagenes al bucket, se tiene que hacer lo siguiente.

// With promises (async/await) upload multiple images to supabase storage and then return the publics urls of the images uploaded
async function uploadImages(files: FileWithPath[]) {
  for (let i = 0; i < files.length; i++) {
    const file = files[i];
    await supabase.storage
      .from("fotografiaseventos")
      .upload(`fotosEventos/${file.name}`, file, {
        cacheControl: "3600",
        upsert: false,
      });
  }
}

Después de eso se obtienen las URLs para actualizar el evento.

// Obtener las URL de las imagenes subidas a supabase storage y retornarlas en un arreglo
async function getImagesUrl(files: FileWithPath[]) {
  let urls: string[] = [];
  for (let i = 0; i < files.length; i++) {
    const file = files[i];
    const {
      data: { publicUrl },
    } = supabase.storage
      .from("fotografiaseventos")
      .getPublicUrl(`fotosEventos/${file.name}`);
    urls.push(publicUrl);
  }
  return urls;
}

En dado caso que se quieran eliminar fotos de los eventos. Se necesita eliminar del bucket, para eso se necesita la siguiente función.

 
async function deleteImages(images: string[]) {
  for (let i = 0; i < images.length; i++) {
    const image = images[i];
    // Tenemos que sacar el nombre de la imagen para poder eliminarla con un regex
    let nameImage = image.match(/fotosEventos\/(.*)/);
    console.log(image);
    console.log('asdfs', nameImage);
    let { error } = await supabase.storage
      .from('fotografiaseventos')
      .remove([`fotosEventos/${nameImage![1]}`]);
    console.log(error);
  }
}
Last updated on December 15, 2022