Création d’un module
L’application fonctionne avec une structure de module. Ainsi, chaque package fonctionnel doit exporter un objet au format Module défini dans le package CORE.
Un module est défini avec les éléments suivants :
export interface Module {
name: string;
title?: string;
subtitle?: string;
icon?: string;
disabled?: boolean;
menus?: {
[menuKey: string]: Menu;
};
screens?: {
[screenKey: string]: Screen;
};
translations?: {
[languageKey: string]: any;
};
reducers?: {
[key: string]: Reducer;
};
backgroundFunctions?: Function[];
models?: Models;
}
Un module possède donc :
- un nom (name) permettant de donner une clé d’identité au module. Ce nom doit être unique entre les modules utilisés sur l’application pour éviter les confusions.
- un titre (title) à afficher à l’utilisateur sur le drawer lorsqu’aucune app n’est sélectionnée
- un sous-titre (subtitle) à afficher à l’utilisateur sous le bouton du module dans le drawer pour aider à la compréhension. L’affichage de ses sous-titres est paramétrable depuis le composant Application par l’attribut showModulesSubtitle.
- un nom d’icône (icon) à afficher sur le bouton du module dans le drawer. Attention, cet icône doit appartenir à la base FontAwesome 5 (https://oblador.github.io/react-native-vector-icons/).
- un ensemble de menus (menus) à afficher dans le drawer
- un ensemble d’écrans appartenant au module (screens).
- un ensemble de traductions pour le module (translations). il faut fournir les traductions au format clé-valeur pour chaque langue supportée.
- un ensemble de reducers pour le module (reducers). Un reducer est un simple fonction qui permet de mettre à jour l’état d’un objet en fonction de l’action qui lui est transmise. Dans notre contexte, les reducers sont les fonctions redux qui permettent de mettre à jour le store lors des appels API par exemple. Il faut obligatoirement exporter tous les reducers créés dans le module pour accéder à la partie du store correspondante dans les différents écrans.
- une liste de fonctions à exécuter en arrière plan si nécessaire (backgroundFunctions). Ces fonctions sont exécutées toutes les 5 minutes.
- une configuration de modèles pour les appels API (models), pour plus d’explications voir la section Création d'un appel API.