Comunidade

Onde Seu Dados Está Armazenado

O texto descreve como o aplicativo armazena dados através de uma interface minimalista com três métodos: getItem, setItem e removeItem. Essa camada de armazenamento é implementada usando AsyncStorage em dispositivos móveis e local storage no navegador, sendo que a opção para um provedor baseado em API ainda não está disponível, fazendo com que os dados residam exclusivamente no dispositivo do usuário.

Compartilhar
An editorial illustration of a phone sitting alone on a wooden cafe table next to a passport and a coffee, with a soft glowing outline around the phone suggesting the data is held inside it. In the far background, out of focus and clearly disconnected, a row of server racks sits dark and unplugged. Warm, calm morning light, not cartoonish.

Onde Seu Dados Está Armazenado

A camada inteira de armazenamento do aplicativo é esta interface:

// packages/common/src/storage/types.ts
export interface IStorage {
getItem(key: string): Promise<string | null>;
setItem(key: string, value: string): Promise<void>;
removeItem(key: string): Promise<void>;
}

Três métodos, chaves de strings para entrada e saída. Essa é toda a superfície que o aplicativo tem para persistir algo.

Cada plataforma fornece sua própria implementação. No móvel, ela envolve AsyncStorage, que é o armazenamento padrão chave-valor no dispositivo para React Native:

// packages/common/src/storage/async-storage.ts
export class AsyncStorageAdapter implements IStorage {
getItem(key: string): Promise<string | null> {
return AsyncStorage.getItem(key);
}

setItem(key: string, value: string): Promise<void> {
return AsyncStorage.setItem(key, value);
}

removeItem(key: string): Promise<void> {
return AsyncStorage.removeItem(key);
}
}

No navegador, a mesma interface é respaldada pelo armazenamento local. A camada de dados acima não sabe nem se importa com qual um recebeu.

Sobressaindo-se está uma fábrica de provedores que decide de onde os dados vêm, e a parte interessante é o ramo que não funciona:

// packages/common/src/providers/factory.ts
switch (config.type) {
case 'mock':
return new MockDataProvider();
case 'local':
return new LocalStorageProvider();
case 'api':
throw new Error('ApiProvider not implemented yet');
// ...
}

O caso api é um buraco rotulado. Alguém lendo o código pode ver exatamente onde um provedor baseado em servidor se encaixaria, e também pode ver que nada preenche isso hoje. O aplicativo é lançado com local e essa é a única rota por qual um usuário viaja.

Então quando digo que seus dados estão no seu dispositivo, estou descrevendo uma arquitetura sem alternativas conectadas, não uma política que prometo cumprir.

Fonte original

Conteúdo traduzido e adaptado pela redação do Notícias Mobile. Confira também a matéria na fonte original.

Leia a matéria completa