Pular para o conteúdo principal

Configurações de Vídeo

Última atualização: 30 de julho de 2024

Visão Geral

Este documento descreve as configurações relacionadas à funcionalidade de vídeo no aplicativo Promoter.

Configurações no Redux

Localização: src/store/settings/settingsSlice.ts e src/store/settings/settingsTypes.ts

As configurações de vídeo são gerenciadas através do Redux, utilizando o slice settingsSlice.

// Definição dos tipos
export interface SettingsState {
// Outras configurações
UTILIZAVIDEO: string;
}

// Slice do Redux
const settingsSlice = createSlice({
name: "settings",
initialState,
reducers: {
setSettings: (state, action: PayloadAction<SettingsState>) => {
return {
...state,
...action.payload,
};
},
// Outros reducers
},
});

Configurações Disponíveis

ConfiguraçãoTipoValores PossíveisDescrição
UTILIZAVIDEOstring'S' ou 'N'Habilita ou desabilita o uso de vídeos

Carregamento de Configurações

As configurações são carregadas do servidor durante o login e armazenadas no Redux.

// Serviço para obter configurações
export const getSettingsService = async () => {
try {
const response = await api.get<GetSettingsServiceResponseDTO>("/settings");
return response.data;
} catch (error) {
console.log("❌ Erro ao obter configurações:", error);
throw error;
}
};

// Ação para carregar configurações
export const loadSettings = (): AppThunk => async (dispatch) => {
try {
const settings = await getSettingsService();
dispatch(setSettings(settings));
} catch (error) {
console.log("❌ Erro ao carregar configurações:", error);
}
};

Uso das Configurações

As configurações são utilizadas em diversos componentes para determinar se a funcionalidade de vídeo deve ser exibida.

// Exemplo de uso em um componente
const { UTILIZAVIDEO } = useSelector((state: RootState) => state.settings);

// Renderização condicional
{
UTILIZAVIDEO === "S" ? (
<VideoCamera color="white" weight="bold" size={20} />
) : (
<Camera color="white" weight="bold" size={20} />
);
}

Atualização de Configurações

As configurações são atualizadas automaticamente durante a sincronização com o servidor.

// Atualização de configurações durante sincronização
export const syncSettings = (): AppThunk => async (dispatch) => {
try {
const settings = await getSettingsService();
dispatch(setSettings(settings));
return true;
} catch (error) {
console.log("❌ Erro ao sincronizar configurações:", error);
return false;
}
};

Configurações Padrão

Quando o aplicativo é iniciado pela primeira vez ou quando não é possível obter as configurações do servidor, são utilizadas configurações padrão.

// Configurações padrão
const initialState: SettingsState = {
// Outras configurações
UTILIZAVIDEO: "N", // Desabilitado por padrão
};

Considerações de Segurança

  • As configurações são obtidas apenas de fontes confiáveis (servidor)
  • As configurações são validadas antes de serem aplicadas
  • As configurações são armazenadas de forma segura no Redux

Boas Práticas

  1. Validação: Validar as configurações antes de aplicá-las
  2. Fallback: Implementar valores padrão para quando as configurações não estiverem disponíveis
  3. Atualização: Atualizar as configurações regularmente
  4. Cache: Armazenar as configurações localmente para uso offline