logo hsb.horse
← Voltar para o índice de snippets

Snippets

Verificação de permissão da File System API

Função para verificar e solicitar permissões da File System API no navegador. Suporta leitura e leitura/escrita.

Publicado: Atualizado:

Verifica e solicita permissões da File System API no navegador.

Retorna true imediatamente se a permissão atual já estiver concedida. Solicita a permissão se ela ainda não estiver concedida. A solicitação de permissão precisa ser chamada dentro de um evento de clique do usuário.

async function verifyPermission(handle: FileSystemHandle, readWrite: boolean) {
const options = {};
if (readWrite) {
options.mode = 'readwrite';
}
// 1. Check current permission
if ((await handle.queryPermission(options)) === 'granted') {
return true;
}
// 2. Request permission if not granted
if ((await handle.requestPermission(options)) === 'granted') {
return true;
}
return false;
}

Onde isso rende na prática

Este helper é útil quando eu não quero repetir em todo lugar o fluxo de queryPermission para requestPermission. Ele ajuda especialmente em interfaces que reutilizam o mesmo handle, porque o código de clique fica mais legível quando a lógica de permissão fica concentrada.

Os dois cuidados principais são que a solicitação continua dependente de user gesture e que os fluxos readonly e readwrite não devem ser misturados sem critério. A pré-checagem pode rodar antes, mas o pedido em si fica mais seguro dentro do click handler.

Nota prática

Este snippet funciona bem quando você não quer reescrever a mesma operação ou a mesma verificação em rotinas ligadas a typescript, browser, file-system-api. Mantido como um apoio pequeno, ele deixa a intenção mais clara para quem chama.

Se as ramificações e as pré-condições começarem a crescer, é melhor não concentrar tudo em um único snippet. Separar o passo a passo, o helper e as responsabilidades costuma ser mais fácil de manter.