Pular para o conteúdo principal

Repositório

Última atualização: 16 de julho de 2026

Visão Geral​

Apesar do nome, "Repositório" aqui não é uma biblioteca de arquivos ou documentos, é uma listagem de pedidos/vendas "salvos no dispositivo", agrupados por cliente. É inteiramente mockado e vive só em memória: nada é persistido em MMKV ou SQLite, então qualquer alteração feita na tela se perde ao sair e voltar.

Arquivos-chave​

ArquivoResponsabilidade
features/store/subscreens/repository/store-repository.controller.tsEstado e ações
features/store/subscreens/repository/store-repository.mock.tsFonte inicial dos grupos e itens exibidos
features/store/subscreens/repository/store-repository.tsxView

Estrutura dos dados​

Os itens são organizados em grupos por cliente (RepositoryGroup), cada grupo contendo entradas de venda (RepositoryEntry) com código, data e valor. O estado inicial vem de INITIAL_REPOSITORY_GROUPS, um mock estático, guardado inteiramente em useState:

// store-repository.controller.ts
const [repositoryGroups, setRepositoryGroups] = useState<RepositoryGroup[]>(
INITIAL_REPOSITORY_GROUPS,
);

A tela permite buscar por código/nome do cliente e alternar a ordenação por data, ambos operando só sobre esse array em memória.

Três ações, apenas uma com efeito real (e só em memória)​

Cada item tem um menu de opções com "Excluir", "Exportar" e "Restaurar". Excluir de fato remove o item do array em memória:

// store-repository.controller.ts
const handleDeleteRepository = useCallback(() => {
if (!selectedEntry) return;

setRepositoryGroups((currentGroups) =>
currentGroups
.map((group) =>
group.id !== selectedEntry.groupId
? group
: { ...group, items: group.items.filter((item) => item.id !== selectedEntry.itemId) },
)
.filter((group) => group.items.length > 0),
);

toast.show("Venda removida do repositório.", "success", 3500, "top");
}, [closeOptionsSheet, selectedEntry, toast]);

Mas como isso vive só em useState, o item "excluído" volta a aparecer se a tela for desmontada e remontada, nada foi persistido. "Exportar" e "Restaurar" não têm nem esse efeito local, cada um só dispara um toast fixo e não faz mais nada:

// store-repository.controller.ts
const handleExportRepository = useCallback(() => {
closeOptionsSheet();
setSelectedEntry(null);
toast.show("Exportação iniciada com sucesso.", "success", 3500, "top");
}, [closeOptionsSheet, toast]);

Armadilhas conhecidas​

O texto de estado vazio já avisa sobre a natureza mockada dos dados: "Ajuste a busca para localizar os pedidos mockados salvos no dispositivo." Se este repositório vier a ser implementado de fato, provavelmente deveria consultar o mesmo SQLite de rascunhos/pedidos já usado no fluxo de nova venda, em vez de manter uma cópia própria e desconectada dos dados de venda.