Queries
The cache helpers query hooks wrap the data fetching hooks of the cache libraries and pass both the cache key and the fetcher function from the Storage query. For example,
useFileUrl(
client.storage.from("public_contact_files"),
"postgrest-storage-file-url-94/1.jpg",
"public",
);
is parsed into
storage$public_contact_files$postgrest-storage-file-url-94/1.jpg
useFileUrl
Supports private
, and public
buckets. You can pass URLFetcherConfig
to configure signed urls, and ensure that a file in a public bucket exists.
type URLFetcherConfig = {
// For private buckets only, set how long the signed url should be valid
expiresIn?: number;
// For public buckets only, if true queries the file using .list()
// and returns null if file does not exist
ensureExistence?: boolean;
// Triggers the file as a download if set to true. Set this parameter as the name of the file of you want to trigger the download with a different filename.
download?: string | boolean | undefined;
// Transform the asset before serving it to the client.
transform?: TransformOptions | undefined;
};
import { useFileUrl } from '@supabase-cache-helpers/storage-swr';
import { createClient } from '@supabase/supabase-js';
const client = createClient(
process.env.SUPABASE_URL,
process.env.SUPABASE_ANON_KEY
);
function Page() {
const { data: url } = useFileUrl(
client.storage.from('public_contact_files'),
'dirname/myfile.jpg',
'public',
{
ensureExistence: true,
revalidateOnFocus: false,
}
);
return <div>{url}</div>;
}
useDirectory
Returns all files in a directory.
import { useDirectory } from "@supabase-cache-helpers/storage-swr";
import { createClient } from "@supabase/supabase-js";
const client = createClient(
process.env.SUPABASE_URL,
process.env.SUPABASE_ANON_KEY
);
function Page() {
const { data: files } = useDirectory(
client.storage.from("private_contact_files"),
dirName,
{
revalidateOnFocus: false,
}
);
return <div>...</div>;
}
useDirectoryFileUrls
Convenience hook that returns the files in a directory similar to useDirectory
but adds the url
for each.
import { useDirectoryFileUrls } from "@supabase-cache-helpers/storage-swr";
import { createClient } from "@supabase/supabase-js";
const client = createClient(
process.env.SUPABASE_URL,
process.env.SUPABASE_ANON_KEY
);
function Page() {
const { data: files } = useDirectoryFileUrls(
client.storage.from("private_contact_files"),
dirName,
"private",
{
revalidateOnFocus: false,
}
);
return <div>...</div>;
}