Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
db2bfad
doc(@multi-frontend): corrections README
benjhoo Nov 8, 2024
880d2b5
feat(@multi-frontend/app-update): mise en place module pour les updates
benjhoo Nov 8, 2024
6c3cf32
feat(@multi-frontend/app-update): clean du module
benjhoo Nov 8, 2024
7df6815
feat(@multi-frontend/app-update): externalisation de la version dans …
benjhoo Nov 8, 2024
199f2df
feat(@multi-frontend/app-update): correction usage service version da…
benjhoo Nov 12, 2024
f0463c4
feat(@multi-fronntend/app-update): mise en place module de vérificati…
benjhoo Nov 15, 2024
ec7dfa0
feat(@multi-frontend/shared): création d'un service partagé pour la g…
benjhoo Nov 15, 2024
5cd2f1c
feat(@multi-frontend/alerts): utilisation du système d'alertes pour l…
benjhoo Nov 18, 2024
3b99040
feat(@multi-frontend/app-update): initialisation du module dès le dém…
benjhoo Nov 18, 2024
4452e14
feat(@multi-backend/main): retour des infos de mise à jour sur la rou…
benjhoo Nov 18, 2024
7abea5d
feat(@multi-backend/main): utilisation d'un fichier json séparé pour …
benjhoo Nov 19, 2024
df854a3
fix(@multi-backend/main): mauvais manip nom de variable
benjhoo Nov 19, 2024
40972e5
fix(@multi-frontend/app-update): correction lint
benjhoo Nov 19, 2024
7689d36
docs(@multi-frontend/app-update): maj CHANGELOG + README
benjhoo Nov 19, 2024
c3c2f10
Merge branch 'develop' of github.com:univlorraine/esup-multi into fea…
benjhoo Nov 19, 2024
bb211ae
Merge branch 'develop' of github.com:univlorraine/esup-multi into fea…
benjhoo Nov 19, 2024
d4a6999
build: ajout conf run/debug Jetbrains app-update
benjhoo Nov 27, 2024
76f8905
fix(@multi-frontend/app-update): probleme de vérif à version équivalente
benjhoo Nov 28, 2024
17bdc34
fix(@multi-frontend/app-update): désactiv. tour guidé si alerte de maj
benjhoo Nov 29, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .run/frontend_app-update.run.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="frontend/app-update" type="js.build_tools.npm" folderName="Frontend">
<package-json value="$PROJECT_DIR$/dev/user-frontend-ionic/package.json" />
<command value="run" />
<scripts>
<script value="module:watch" />
</scripts>
<arguments value="app-update" />
<node-interpreter value="project" />
<envs />
<method v="2" />
</configuration>
</component>
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,24 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
* **(widgets)**: les widgets tiennent désormais compte de l'Ionicon ou bien des icônes SVG renseignées du côté du CMS et les affichent à côté du titre de la Widget

#### New features
* **(app-update)** : Nouveau module permettant de vérifier si une mise à jour du client est disponible sur les stores et force éventuellement l'utilisateur à mettre à jour si des évolutions majeures empêchent le fonctionnement des anciennes versions
* **(calendar)** : Il est désormais possible de choisir entre 2 affichages pour la widget des évènements du calendrier :
* Liste verticale (list)
* Slider horizontal (slider)
* **(schedule)** : Il est désormais possible de choisir entre 2 affichages pour la widget des prochains cours à venir :
* Liste verticale (list)
* Slider horizontal (slider)
* **(shared)** : Création d'un nouveau service **Alert** partagé, permettant de gérer l'affichage des messages d'alerte par le biais d'une file d'attente et par ordre de priorité

### Backend
#### Bug fixes
* **(auth)** : l'authentification transmet désormais l'IP du client au serveur CAS pour éviter le bannissement du microservice auth sur de trop nombreuses tentatives d'authentification en échec
* **(maps)** : suppression du tracking du fichier map-data.json et ajout d'un fichier .dist avec des POI factices
* **(statistics)** : prise en compte de la nouvelle uid de tracking à la place du Device Id pour la génération des statistiques d'usage

#### New Features
* **(main)** : une nouvelle route `/app-update-infos` a été ajoutée permettant de retourner les informations nécessaires au client pour le module de mise à jour `app-update`

## 1.1.0 (2024-09-13)

### Client
Expand Down
2 changes: 2 additions & 0 deletions dev/user-backend-nest/main/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,5 @@ lerna-debug.log*
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

src/client-infos.json
9 changes: 9 additions & 0 deletions dev/user-backend-nest/main/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,12 @@
- `STATISTICS_SERVICE_NATS_SERVERS` : Addresses complètes des serveurs NATS pour communiquer avec le microservice `statistics`, séparées par des virgules (ex: nats://localhost:4222).

- `MAIL_CALENDAR_SERVICE_NATS_SERVERS` : Addresses complètes des serveurs NATS pour communiquer avec le microservice `mail-calendar`, séparées par des virgules (ex: nats://localhost:4222).

# Paramétrer la vérification des mises à jour côté client
Si vous avez activé le module côté client qui permet de vérifier les mises à jour disponibles, il faudra alors renseigner ces informations de mises à jour dans le fichier `src/client-infos.json`
(copier au préalable le fichier `src/client-infos.json.dist`)

- **storeVersion**: numéro de version du client actuellement sur les stores
- **minVersionRequired**: version minimum du client requise
- **playStoreUrl**: url vers l'application sur le Play Store
- **appStoreUrl**: url vers l'application sur l'App Store
6 changes: 6 additions & 0 deletions dev/user-backend-nest/main/src/app.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ import { ClientProxy } from '@nestjs/microservices';
import { AuthGuard } from '@nestjs/passport';
import { concatMap, map } from 'rxjs';
import * as infosJsonData from './infos.json';
import * as clientInfosJson from './client-infos.json';
import { ErrorsInterceptor } from './interceptors/errors.interceptor';
import { AuthorizationHelper } from './security/authorization.helper';

Expand Down Expand Up @@ -731,6 +732,11 @@ export class AppController {
version: infosJsonData.version,
};
}
@Get('/app-update-infos')
appUpdateInfos() {
return clientInfosJson;
}

@Get('/health')
mainCheckHealth() {
return {
Expand Down
6 changes: 6 additions & 0 deletions dev/user-backend-nest/main/src/client-infos.json.dist
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"storeVersion": "1.1.0",
"minVersionRequired": "1.0.0",
"playStoreUrl": "https://play.google.com/store/apps/details?id=org.monUniversite.monApplication",
"appStoreUrl": "https://apps.apple.com/fr/app/monUniversite/idxxxxxxxxx"
}
4 changes: 2 additions & 2 deletions dev/user-backend-nest/main/src/infos.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"name": "main",
"version": "1.0.3"
}
"version": "1.1.0"
}
40 changes: 20 additions & 20 deletions dev/user-frontend-ionic/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Puis mettre à jour le "path" du module dans le fichier `tsconfig.json` pour pr
},
```

A partir de là le module peut être importé dans l'application hôte :
À partir de là, le module peut être importé dans l'application hôte :
```ts
import { HelloPageModule } from '@multi/hello';
```
Expand All @@ -38,32 +38,31 @@ Il faut également ajouter le module au script npm `module:build-all` :

#### Lint

Rajouter une section lint au project dans `user-frontend-ionic/angular.json`. A rajouter sous la section "test" du module :
Rajouter une section lint au project dans `user-frontend-ionic/angular.json`. À rajouter sous la section "test" du module :
```json
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"lintFilePatterns": [
"projects/[nom du module]/**/*.ts",
"projects/[nom du module]/**/*.html"
]
}
}
"builder": "@angular-eslint/builder:lint",
"options": {
"lintFilePatterns": [
"projects/[nom du module]/**/*.ts",
"projects/[nom du module]/**/*.html"
]
}
}
```

Puis rajouter le fichier `.eslintrc.json` suivant à la racine du module :
```json
{
"extends": "../../.eslintrc.json",
"ignorePatterns": [
Puis rajouter le fichier `.eslintrc.js` suivant à la racine du module :
```javascript
module.exports = {
extends: "../../.eslintrc.js",
ignorePatterns: [
"!**/*"
]
}

```

#### Traductions
Pour les traductions nous utilisons [ngx translate](https://github.com/ngx-translate/core).
Pour les traductions, nous utilisons [ngx translate](https://github.com/ngx-translate/core).

Si le module contient des éléments qui doivent être traduits, il faudra créer un fichier de traduction pour ce module dans `src/theme/app-theme/i18n/[mon module]/fr.json`. Pensez à le copier dans le dossier `app-theme-dist` pour partager ces traductions.

Expand All @@ -87,7 +86,7 @@ Notez que toutes les clés de traduction du module seront préfixées par ce que

**ATTENTION** un module qui contient des traductions doit être initialisé avant que le module de traduction ne démarre, il faudra donc obligatoirement importer le module dans `app.module.ts` (avant l'import du `TranslateModule`).

#### Firebase (à compléter avec la partie iOS)
### Firebase (à compléter avec la partie iOS)

Ajouter un dossier `firebase` dans `src/environnements` :

Expand Down Expand Up @@ -119,9 +118,9 @@ En exécutant la commande npx `cap sync`, les fichiers de configuration Firebase

**Procédure pour ajouter un nouvel environnement de développement avec une configuration Firebase spécifique :**

Firebase permet de créer plusieurs applications par environnement de développement pour un même projet. Il génère des fichier configuration `google-service.json` (Android) et `GoogleServices-info.plis` (iOS) pour chacune d’entre elles.
Firebase permet de créer plusieurs applications par environnement de développement pour un même projet. Il génère des fichiers configuration `google-service.json` (Android) et `GoogleServices-info.plis` (iOS) pour chacune d’entre elles.

* Créer une nouvelle application dans le projet Firebase et génèrer son fichier de configuration pour chaque plateforme.
* Créer une nouvelle application dans le projet Firebase et générer son fichier de configuration pour chaque plateforme.

* Suffixer ces fichiers pour l’environnement de développement visé : `google-service-[environnement].json`, `GoogleServices-info-[environnement].plist` .

Expand Down Expand Up @@ -167,6 +166,7 @@ npm run module:build-all

- [Module guided-tour](dev/user-frontend-ionic/src/theme/app-theme/guided-tour/README.md)
- [Module shared](dev/user-frontend-ionic/projects/shared/README.md)
- [Module app-update](dev/user-frontend-ionic/projects/app-update/README.md)
- [Module auth](dev/user-frontend-ionic/projects/auth/README.md)
- [Module calendar](dev/user-frontend-ionic/projects/calendar/README.md)
- [Module cards](dev/user-frontend-ionic/projects/cards/README.md)
Expand Down
40 changes: 40 additions & 0 deletions dev/user-frontend-ionic/angular.json.dist
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,46 @@
}
}
},
"app-update": {
"projectType": "library",
"root": "projects/app-update",
"sourceRoot": "projects/app-update/src",
"prefix": "lib",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:ng-packagr",
"options": {
"project": "projects/app-update/ng-package.json"
},
"configurations": {
"production": {
"tsConfig": "projects/app-update/tsconfig.lib.prod.json"
},
"development": {
"tsConfig": "projects/app-update/tsconfig.lib.json"
}
},
"defaultConfiguration": "production"
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "projects/app-update/src/test.ts",
"tsConfig": "projects/app-update/tsconfig.spec.json",
"karmaConfig": "projects/app-update/karma.conf.js"
}
},
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"lintFilePatterns": [
"projects/auth/**/*.ts",
"projects/auth/**/*.html"
]
}
}
}
},
"auth": {
"projectType": "library",
"root": "projects/auth",
Expand Down
2 changes: 1 addition & 1 deletion dev/user-frontend-ionic/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"module:create": "npx ng g library",
"module:build": "npx ng build --project=",
"module:watch": "npx ng build --watch --project=",
"module:build-all": "npm run module:build guided-tour && npm run module:build shared && npm run module:build preferences && npm run module:build features && npm run module:build auth && npm run module:build map && npm run module:build rss && npm run module:build cards && npm run module:build schedule && npm run module:build contacts && npm run module:build notifications && npm run module:build important-news && npm run module:build clocking && npm run module:build reservation && npm run module:build menu && npm run module:build chatbot && npm run module:build static-pages && npm run module:build social-network && npm run module:build contact-us && npm run module:build restaurants && npm run module:build unread-mail && npm run module:build calendar",
"module:build-all": "npm run module:build guided-tour && npm run module:build shared && npm run module:build app-update && npm run module:build preferences && npm run module:build features && npm run module:build auth && npm run module:build map && npm run module:build rss && npm run module:build cards && npm run module:build schedule && npm run module:build contacts && npm run module:build notifications && npm run module:build important-news && npm run module:build clocking && npm run module:build reservation && npm run module:build menu && npm run module:build chatbot && npm run module:build static-pages && npm run module:build social-network && npm run module:build contact-us && npm run module:build restaurants && npm run module:build unread-mail && npm run module:build calendar",
"dev:android": "ionic capacitor run android --open -l --external",
"dev:ios": "ionic capacitor run ios --open -l --external"
},
Expand Down
6 changes: 6 additions & 0 deletions dev/user-frontend-ionic/projects/app-update/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = {
extends: "../../.eslintrc.js",
ignorePatterns: [
"!**/*"
]
}
3 changes: 3 additions & 0 deletions dev/user-frontend-ionic/projects/app-update/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Module App-update

Module permettant de checker les versions disponibles sur les stores et de proposer une mise à jour à l'utilisateur
7 changes: 7 additions & 0 deletions dev/user-frontend-ionic/projects/app-update/ng-package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
"dest": "../../dist/app-update",
"lib": {
"entryFile": "src/public-api.ts"
}
}
12 changes: 12 additions & 0 deletions dev/user-frontend-ionic/projects/app-update/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"name": "app-update",
"version": "0.0.1",
"peerDependencies": {
"@angular/common": "^15.2.0",
"@angular/core": "^15.2.0"
},
"dependencies": {
"tslib": "^2.3.0"
},
"sideEffects": false
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/*
* Copyright ou © ou Copr. Université de Lorraine, (2022)
*
* Direction du Numérique de l'Université de Lorraine - SIED
* ([email protected])
* JNESIS ([email protected])
*
* Ce logiciel est un programme informatique servant à rendre accessible
* sur mobile divers services universitaires aux étudiants et aux personnels
* de l'université.
*
* Ce logiciel est régi par la licence CeCILL 2.1, soumise au droit français
* et respectant les principes de diffusion des logiciels libres. Vous pouvez
* utiliser, modifier et/ou redistribuer ce programme sous les conditions
* de la licence CeCILL telle que diffusée par le CEA, le CNRS et INRIA
* sur le site "http://cecill.info".
*
* En contrepartie de l'accessibilité au code source et des droits de copie,
* de modification et de redistribution accordés par cette licence, il n'est
* offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
* seule une responsabilité restreinte pèse sur l'auteur du programme, le
* titulaire des droits patrimoniaux et les concédants successifs.
*
* À cet égard, l'attention de l'utilisateur est attirée sur les risques
* associés au chargement, à l'utilisation, à la modification et/ou au
* développement et à la reproduction du logiciel par l'utilisateur étant
* donné sa spécificité de logiciel libre, qui peut le rendre complexe à
* manipuler et qui le réserve donc à des développeurs et des professionnels
* avertis possédant des connaissances informatiques approfondies. Les
* utilisateurs sont donc invités à charger et à tester l'adéquation du
* logiciel à leurs besoins dans des conditions permettant d'assurer la
* sécurité de leurs systèmes et/ou de leurs données et, plus généralement,
* à l'utiliser et à l'exploiter dans les mêmes conditions de sécurité.
*
* Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
* pris connaissance de la licence CeCILL 2.1, et que vous en avez accepté les
* termes.
*/

import { APP_INITIALIZER, NgModule } from '@angular/core';
import { ProjectModuleService } from '@multi/shared';
import { CommonModule } from '@angular/common';
import { IonicModule } from '@ionic/angular';
import { AppUpdateService } from './app-update.service';
import { TranslateModule } from '@ngx-translate/core';


const initModule = (projectModuleService: ProjectModuleService, appUpdateService: AppUpdateService) =>
() => {
projectModuleService.initProjectModule({
name: 'app-update',
translation: true,
});

appUpdateService.initialize();
}

@NgModule({
imports: [
CommonModule,
IonicModule,
TranslateModule,
],
providers: [
{
provide: APP_INITIALIZER,
useFactory: initModule,
deps:[ProjectModuleService, AppUpdateService],
multi: true
}
],
})
export class AppUpdateModule { }
Loading