Configurações — Design Técnico
Gerado pelo Writer (Reversa) em 2026-05-11
Arquitetura
App init
→ dispatch(ConfiguracoesAction.carregarConfiguracoes())
↓ guard: ConfiguracoesSelect.iniciado === false
→ ConfiguracoesUsuarioRepository.getConfiguracoes()
→ MMKV.getString(key) ?? default
→ configuracoesSlice.fulfilled → store preenchido
Usuário altera configuração
→ dispatch(alterarFamiliaFonte/alterarTamanhoFonte/etc.)
→ _persistirConfiguracaoMusica({key: value})
→ ConfiguracoesUsuarioRepository.setConfiguracao(key, value)
→ MMKV.setString(key, value)
→ configuracoesSlice.fulfilled → store atualizado
Usuário altera tema
→ dispatch(alterarTema(tema))
→ _persistirConfiguracaoTema({tema})
→ UnistylesRuntime.setTheme(tema) ← síncrono
→ MMKV persiste
MMKV — ConfiguracoesUsuarioRepository
- ID da instância:
@cantaIgreja/configuracoes - Cada configuração é uma
stringarmazenada com sua própria chave (ex:fonte,tamanho,estiloRefrao,tema) - Leitura:
MMKV.getString(stateKey) ?? default - Escrita:
MMKV.setString(key, value)
Estado Redux — ConfiguracoesState
interface ConfiguracoesState {
musica: ConfiguracoesMusica; // fonte, tamanho, estiloRefrao
tema: ConfiguracoesTema; // tema
estadoRequisicaoCarregamentoInicial: EstadoRequisicao;
}
UnistylesRuntime
UnistylesRuntime.setTheme(tema) é chamado tanto na alteração quanto possivelmente na inicialização para sincronizar o tema carregado do MMKV com o runtime de estilos.
Riscos e Lacunas
- 🟡
Tema.CLARO_LEGADOeTema.CLARO_ALTERNATIVO— temas alternativos que podem não estar todos registrados noUnistylesRuntime - 🟡
Tema.SISTEMAcomentado no código — feature abandonada ou em desenvolvimento - 🟡
ConfiguracoesScreen.tsxnão lida completamente — controles de UI não mapeados