Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Intégration Skolengo - Installation + Auth #84

Open
wants to merge 26 commits into
base: development
Choose a base branch
from

Conversation

NonozgYtb
Copy link
Contributor

@NonozgYtb NonozgYtb commented Mar 18, 2024

Warning

La review de @maelgangloff est très souhaitable.

Checklist d'avant pull request

  • Vous avez testé de build le projet avec vos modifications et ce build a réussi
  • Vous respectez les conventions de codage et de nomage du projet
  • Vous utilisez la tabulation pour l'indentation afin de maintenir un code lisible
  • Cette pull request n'est pas un duplicata d'une autre
  • Cette pull request est prête à être revue (review) et fusionnée (merge)
  • Cette pull request doit être fusionnée dans la branche development (le cas contraire préciser laquelle)
  • Il n'y a pas de TODO (aka des annotations pour du code manquant) dans vos modifications

    Rajout de TODO pour indiqué où le développement de l'intégration SkolengoNG est à continuer.

  • Il n'y a pas d'erreurs de langue dans votre code (grammaire, vocabulaire, conjugaison, orthographe)
  • Les détails des changements ont été décris ci-dessous
  • Cette pull-request n'est pas une "breaking-change" (par exemple des modifications qui vont entraîner la modification du fonctionnement de certaines fonctionnalités déjà existantes)

Explications des changements

Différents rajouts liés à la future intégration de Skolengo NG (Nouvelle génération - avec scolengo-api@3)
Certains fichiers du "squelette" de l'application ont été modifiés afin de remplacer l'ancienne intégration (sans scolengo-api).
Enfin d'autres modifications mineurs ont été apportés (renommage et ajout de fonctionnalités mineures (activation conditionnelle de Skolengo) notamment).

Changelogs proposés

  • Remplacement de l'ancienne page de recherche d'établissement Skolengo par une mise à jour
  • Ajout de scolengo-api à la page de recherche d'étab.
  • La page SelectService est d'avantage modulaire
  • Rajout d'un blocage à la fin de l'obtention du token d'authentification Skolengo, puisque le reste n'est pas encore correctement implémenté (réutilisation jusqu'à cette étape de l'ancienne intégration)
  • Ajout de SkolengoCommonCache, une nouvelle intégration d'AsyncStorage (nouveau nom de SkolengoCache, maintenant typesafe). Elle intègre la gestion des default values, de l'expiration des données ainsi que celle des collections. Même si elle sera surement utilisé dans l'intégration SkolengoNG, elle est également un POC (proof of concept) puisque cela pourra être utilisé plus généralement sur l'application pour une meilleur homogénéité et garantir un seul moyen efficace et "++" (du fait des fonctionnalités supplémentaires) pour accéder aux données stuquées sur le téléphone.

Note

Pour que votre pull-request soit fusionnée, vous devez obtenir l'approbation de au moins deux membres de l'équipe dont un coordinateur.
Soyez donc patient :)

Review de @maelgangloff recommandée


Informations supplémentaires

Plus d'information dans le titre (et occasionnellement la description) des commits.

Ce merge n'est pas urgent, mais personnellement, je me baserai sur celui-ci pour le PR N°2 sur SkolengoNG.

Tip

N'hésitez pas à revenir vers moi par ce PR ou sur Discord concernant ce Pull Request ou plus globalement sur l'intégration SkolengoNG

Info : Skolengo est activé uniquement en version dev pour l'instant à des fins de test (__DEV__ || false)
Version typesafe de SkolengoCache + ajout de skoapp-prod dans app.json
Renommage pour avoir un seul nom au sein du projet
Car je suis fatigué donc je fais pas gaffe !
@LeGeek01
Copy link
Collaborator

y'a un conflit sur GradeView.js, il faudrait que tu le résoude

@ecnivtwelve
Copy link
Contributor

GradeView n'est plus utilisé de toute manière, faudrait le virer complètement même

@NonozgYtb NonozgYtb changed the title Intégration Skolengo (part 1) Intégration Skolengo - Installation + Auth Mar 20, 2024
@NonozgYtb
Copy link
Contributor Author

NonozgYtb commented Mar 20, 2024

Copie du message relayé sur le serveur discord :

Mise à jour - Intégration Skolengo "Next Gen" :

Je vous annonce que la PR Skolengo (partie 1 - Installation et Authentification) me semble finalisé.

Où en est-on ?

  • L'application utilise désormais scolengo-api de notre coupaing @maelgangloff , permettant une réactivité augmenté en cas de changement de la part de Kosmos.
  • La recherche d'établissement est fonctionnelle et utilise dès lors une interface similaire à celle de pronote (version de il y a quelques jours seulement)
  • L'authentification via deeplink marche complètement et on récupère bien le token, notre sésame pour continuer
  • Skolengo est dès lors activé pour toutes les builds dev uniquement (!__DEV__), ceci afin de simplifier le test de fonctions sans le rendre disponible à tous puisque loin d'être encore finalisé
  • Plusieurs petites améliorations mineures se sont aussi immiscés dans mes commits

Et maintenant ?
J'attend pour ma part les différentes reviews donc celle de @maelgangloff.
Je prévois de réaliser la structure générale du SkolengoDataProvider dans la partie 2 (nom pas officiel mais je les numérote quand même car cela n'est pas indépendant, car oui : essayer d'utiliser des données avant de pouvoir se connecter est stupide)
Autre petite news : J'ai màj SkolengoCommonCache (ex-SkolengoCache) donc je propose l'utilisation généralisée à moyen terme au sein de l'application, mais ce n'est pas le débat actuel !

D'accord et pour Pronote ?
Très bonne question : l'appli a été publié et marche pour Pronote :clown: (oui j'essaie de faire des blagues à 22h30, pas la meilleure idée que j'ai eu je dois l'avouer)

A tout bientôt les amis et merci pour votre investissement sur le projet 👍

fetch/Skolengo/SkolengoAuthWorkflow.ts Outdated Show resolved Hide resolved
fetch/Skolengo/SkolengoCommonCache.ts Outdated Show resolved Hide resolved
ecnivtwelve
ecnivtwelve previously approved these changes Mar 21, 2024
Copy link
Contributor

@ecnivtwelve ecnivtwelve left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A voir si @maelgangloff à quelque chose à ajouter et si l'application fonctionne pour les utilisateurs de Skolengo, mais au moins le code me parait OK !

Copy link
Contributor

@tom-theret tom-theret left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai cette erreur

node:events:492
      throw er; // Unhandled 'error' event
      ^

Error: EMFILE: too many open files, watch
    at FSWatcher._handle.onchange (node:internal/fs/watchers:207:21)
Emitted 'error' event on NodeWatcher instance at:
    at FSWatcher._checkedEmitError (/Users/tom.theret/Documents/git_project/Papillon/node_modules/metro-file-map/src/watchers/NodeWatcher.js:134:12)
    at FSWatcher.emit (node:events:514:28)
    at FSWatcher._handle.onchange (node:internal/fs/watchers:213:12) {
  errno: -24,
  syscall: 'watch',
  code: 'EMFILE',
  filename: null
}

@NonozgYtb
Copy link
Contributor Author

Au vu de ton erreur, c'est ton pc qui doit avoir un probleme ou qui atteint la limite. Je te conseille de supprimer le dossier node_modules et de refaire un npm i ensuite quand tu fais fais npm start -- -c permettant de supprimer le cache d'expo. En tour cas, je ne pense pas que ce soit lié au PR que tu as ces problèmes. Mael corrige moi si j'ai faux.

@tom-theret
Copy link
Contributor

tom-theret commented Mar 21, 2024

Au vu de ton erreur, c'est ton pc qui doit avoir un probleme ou qui atteint la limite. Je te conseille de supprimer le dossier node_modules et de refaire un npm i ensuite quand tu fais fais npm start -- -c permettant de supprimer le cache d'expo. En tour cas, je ne pense pas que ce soit lié au PR que tu as ces problèmes. Mael corrige moi si j'ai faux.

Je viens de :

  • Supprimer node_module
  • Redémarrer le Mac
  • npm i
  • npm start -- -c

ça fonctionne toujours pas 😭

EDIT : Il fallait Watchman sur Mac

Copy link
Contributor

@tom-theret tom-theret left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Supprime de app.tsx :

    {
      name: 'Grade',
      component: require('../views/Grades/GradeView').default,
      options: {
        presentation: 'modal',
        headerTintColor: '#fff',
      }
    },

et fait hyper attention à ta syntaxe

@NonozgYtb
Copy link
Contributor Author

NonozgYtb commented Mar 26, 2024

Sans message de votre part, est-ce que la PR est bonne, pouvez-vous la review et pouvez-vous peut être la merge ?

@maelgangloff
Copy link
Contributor

Sans message de votre part, est-ce que la PR est bonne, pouvez-vous la review et pouvez-vous peut être la merge ?

Pour être validée, une PR doit obtenir deux review favorables. Cette PR est assez longue, ce qui implique d'attendre plus longtemps pour obtenir ces review.
Personnellement, je n'ai pas encore eu le temps de faire assez de tests.
Bonne journée

Copy link

@vinceh121 vinceh121 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pensez à faire un kanban des tickets qui vont découler de cette PR (refresh de token, introspection, vue de notes, etc)

voir un kanban de toutes les tâches liées a Skolengo

disco
).catch(skolengoErrorHandler);
if (!token) return skolengoErrorHandler();
//console.log({token});

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
//console.log({token});

return null;
};

export const loginSkolengoWorkflow = async (

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

faut reformatter, ça manque de lignes vide pour séparer les unités logique

'Skolengo : intégration en cours',
'Veuillez patienter, le processus de connexion à Skolengo à fonctionné.\nMais l\'intégration de Skolengo (NG) n\'est pas encode terminé.\n\nRevenez plus tard.'
);
/* // TODO : Créer l'intégration via scolengo-api

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

faudrait finir au moins l'enregistrement du token et de l'école

@@ -1,36 +1,50 @@
import AsyncStorage from '@react-native-async-storage/async-storage';

class SkolengoPrivateCache {
class CommonCacheUtils {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Common" mais prefixé de SkolengoCache_ et sous un namespace Skolengo ?

static msToTomorrow() {
const now = Date.now();
const timePassedToday = now % this.DAY;
const timePassedToday = (now % this.DAY) + this.TIMEZONE_OFFSET;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est du différentiel, laisse tout en UTC0 au lieu de te faire chier avec les fuseaux horaires

@@ -0,0 +1 @@
--install.ignore-optional true

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ne pas mélanger les package managers

).catch(skolengoErrorHandler);
if (!token) return skolengoErrorHandler();
//console.log({token});
Alert.alert(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pas besoin de faire de joli toasts pour ce qui restera en develop

export class SkolengoDataProvider {
constructor() {
if (!SkolengoNotImplementedWarn) {
console.warn('SkolengoDataProvider is not implemented');

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pas besoin de faire de joli warnings pour ce qui restera en develop

>
<StatusBar
animated
barStyle={UIColors.dark ? 'light-content' : 'dark-content'}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

peut être à généraliser dans le composant


const selectOption = (index) => {
const selectOption = (index:number) => {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const selectOption = (index:number) => {
const selectOption = (index: number) => {

@Vilerio
Copy link
Contributor

Vilerio commented Apr 8, 2024

Salut, moyen de régler les conflits et de fermer vos discussions si elles sont résolues svp ?

@Vilerio
Copy link
Contributor

Vilerio commented Apr 8, 2024

mais visiblement y a des trucs à modif

@maelgangloff
Copy link
Contributor

La résolution des conversations est prioritaire sur les conflits qui pourront être gérés dans un second temps afin d'avoir une bonne base.
Pour rappel, les conditions pour qu'une PR soit acceptée sont :

  • L'ensemble des discussions sont résolues
  • La PR reçoit au moins deux review favorables

Cette PR est assez conséquente, il ne faut pas négliger les avis de chacun.
Si @NonozgYtb tu considère que certaines remarques ne sont pas pertinentes, n'hésite pas à en débattre ;)

Copy link
Member

@camarm-dev camarm-dev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je suis utilisateur de skolengo et l'authentification fonctionne bien de mon côté.

@LeGeek01
Copy link
Collaborator

LeGeek01 commented May 6, 2024

@NonozgYtb il va falloir fixer les conflits et regarder les remarques de vinceh21, les passer en résolu si possible

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants