#Weird Behaviour after first reload Nextjs Supabase

3 messages · Page 1 of 1 (latest)

crude oriole
#

whenever i try to upload data for the first time after reloading the page my database does not get updated with url value, but if i change uploadeddataseturl to "hello" then it comes. im confused why this is happeningblob_thonkang
my code:

#

"use client";
import { useEffect, useState } from "react";
import { createClient } from "@supabase/supabase-js";

const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL,
process.env.NEXT_PUBLIC_ANON
);

export default function UploadDataset() {
const [userData, setData] = useState();
const [userError, setError] = useState();
const [uploadedDatasetUrl, setUploadedDatasetUrl] = useState();

useEffect(() => {
const checkSession = async () => {
const { data: user_data, error: user_error } =
await supabase.auth.getSession();
setData(user_data);
setError(user_error);
};
checkSession();
}, []);

#

const handleFileUpload = async (event) => {
if (event.target.files.length > 0) {
const file = event.target.files[0];
const userId = userData.session.user.id;
const timestamp = new Date().getTime();
const path = ${userId}/datasets/${timestamp}_${file.name};
const { data: data_upload_url, error_upload_url } = await supabase.storage
.from("users")
.upload(path, file);

  const { data: get_uploaded_url, error: get_uploaded_error } =
    await supabase.storage.from("users").createSignedUrl(path, 3600);
  setUploadedDatasetUrl(get_uploaded_url);

  const { data: get_user_datasets, error: datasets_error } = await supabase
    .from("profiles")
    .select("user_datasets");

  const get_datasets = get_user_datasets[0].user_datasets;

  let extracted_datasets;
  if (
    get_datasets !== undefined &&
    get_datasets !== "" &&
    get_datasets != null
  ) {
    extracted_datasets = get_datasets;
  } else {
    extracted_datasets = { datasets: [] };
  }
  const timestamp2 = new Date().toISOString();
  const dataset_name = `${file.name}_${timestamp2}`;

  extracted_datasets.datasets.push({
    [dataset_name]: {
      url: uploadedDatasetUrl,
      name: file.name,
    },
  });
  await supabase
    .from("profiles")
    .update({ user_datasets: extracted_datasets })
    .eq("id", userId);
}

};