-
-
Notifications
You must be signed in to change notification settings - Fork 82
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
💡 [Feat: Idée] Ajout d'un support pour le "multi-service" #564
base: main
Are you sure you want to change the base?
Conversation
… title in account selection)
Oui ! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Leave a comment
Ok bon je passe la PR en draft car je rencontre encore de problèmes avec la déconnexion des instances PRONOTE... |
Si tu mets un compte pour tous les onglets, cela change t'il qqch ? |
Par contre, j'adore ton fix sur le DevMenu 😂😂 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Très très très agréablement surpris de ton implémentation ! T'as hyper bien géré l'UX pour une feature aussi complèxe donc chapeau !
Cependant, je m'excuse d'avance si le temps de merge peut être un poil elevé ici pour le temps de test
Haha merci beaucoup, j'ai fait de mon mieux ! J'ai repassé la PR en draft, je sais que c'est un peu le rush pour sortir la 7.7 là... Honnêtement prennez le temps de tester, j'ai encore des petits problèmes avec les comptes PRONOTE, qui se font déconnecter (je ne sais pas encore trop pourquoi), donc je repasserai en ready for review quand j'aurai résolu tout ça. Je vous notifierai sur Discord. Je vais d'ailleurs aller demander aux designers ce que je peux faire pour mon UI un peu dégeux :\ Merci pour la review ! |
C'est surtout sortir tout ça en 2 jours, impressionnant ! |
Oua mais c incroyable !! J'ai trop hâte que ca sorte !! |
je sais pas si ca a été suggéré avant mais est ce que tu pourrais rajouter une case a cocher ou un switch qui permet de se connecter automatiquement a cet espace multi service quand on ouvre l'appli ? |
Tu as commenté la PR, donc tu devrai recevoir un mail quand elle sera merge 😉 |
Ça a été suggéré de pouvoir se connecter automatiquement à un compte "par défaut" mais je n'implémenterai pas ça ici (je vais me concentrer uniquement sur le fonctionnement de base, ce sera bien suffisant)... Si personne le développe je ferai une autre PR. |
Oui ça a été suggéré dans une issue spécifique mais l'intégrer ici ferait que retarder la review et l'implémentation (déjà qu'intégrer le multi-service est très complexe) D'ailleurs, @camarm-dev j'suis en train de développer cette pr (#606) et je rencontrai le même problème avec Pronote au niveau du |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code correct, faut que je trouve le temps pour retester
Par rapport à Pronote : Et si tout ce que j'ai dit ne change rien (ce qui ne serait pas surprenant 😂), alors faudrait que l'utilisateur choisisse obligatoirement un compte pour chaque onglet et voir si ça change qqch
J’ai déjà suggéré je sais plus dans quelle issue, des « paramatres generaux » d’application, permettant d’y mettre une connexion automatique, le choix de l’icône (parce que sinon c’est broken si plusieurs compte avec une icône différente) |
Logique pour le typecheck :( ... J'essaye de finir la feature ce weekend, j'ai pas pu regarder ce weekend faute de temps. Il faudrait que je fasse un peu d'UI; j'avais qq petits trucs à améliorer; et puis que je règle le problème des instances PRONOTE, même si je pense savoir d'où ça vient. |
Pour le typecheck, ça a été corrigé par @Skythrew dans #637 |
Encore un weekend chargé où j'ai pas pu travailler sur Papillon... Vous inquiétez pas je compte bien finir la PR quand même, mais surment le weekend prochain :) |
🚀 Nouvelle Pull Request
Dans cette PR, je propose une nouvelle fonctionnalité avancée pour Papillon , qui est de rassembler plusieurs services scolaires connectés en "espaces / environnements", où chaque fonctionnalité utilise un service précis...
Mais à quoi ça sert ?
Pour ceux qui se posent la question, cela permet de rassembler les différents services que peuvent utiliser les universités ou établissement, en un espace unifié. Par exemple, dans mon cas, la gestion des notes, devoirs, edt, ect passe par pronote, tandis que les actualités et la messagerie ne sont disponibles que sur skolengo. Ainsi, en me créant un espace je pourrai rassembler toute ma vie scolaire dans un seul environnement Papillon.
Comment ça fonctionne ?
Cf, screen
Un "espace" donc, est géré comme un compte principal (
PrimaryAccount
) par Papillon. Il dispose de ses propres paramètres, de son propre profil utilisateur ect... Sa particularitée est la nouvelle cléassociatedAccountsLocalIDs
, qui contient les identifiants locaux des comptes liés à cet espace. Aussi, j'ai créé un nouveau store (useMultiService
) pour y stocker les espaces créé, et pour chaque fonctionnalité d'un espace, l'identifiant du compte à utiliser.Ensuite, pour chaque fonctionnalité dans le dossier
services
, on ajoute un cas pour le compte MultiService, et on redirige vers le compte à utiliser:Et donc on a la possibilité de créer le nombre d'espaces que l'on souhaite (cf screens)
Informations importantes
Si vous trouvez cette fonctionnalité intéressante, il faudrait m'aider à réorganiser l'interface (nottament la sélection des services, qui est un peu moche), donc il faudra voir avec les designers.
J'ai aussi du créé une image par défaut pour les espaces (pour ne pas les confondre avec des comptes classiques, et aussi pour qu'ils possèdent une icone propre au lancement de l'app: cf screen)
N'hésitez pas à me demander du contexte supplémentaire (sur discord ce serait plus pratique) ! Merci !
Screenshots / assets
Checklist d'avant pull request
Veuillez cocher toutes les cases applicables en remplaçant [ ] par [x].
TODO
(aka des annotations pour du code manquant) dans vos modificationsChangelogs proposés
src/stores/account/types.ts
)switchTo
(src/stores/account/types.ts
)src/views/settings/SettingsExternalServices.tsx
pour résoudre les erreurs dues au nouveau typesrc/stores/multiService
)src/utils/multiservice
src/utils/ui/default-profile-picture.ts
(&assets/images/multiservice.png
)src/views/settings/SettingsMultiService.tsx
&src/views/settings/SettingsMultiServiceSpace.tsx
)src/router/screens/settings/index.ts
src/router/helpers/types.ts
src/components/Settings/MultiServiceContainerCard.tsx
,src/components/News/Beta.tsx
&src/components/Global/AccountItem.tsx
src/view/settings/Settings.tsx
pour ajouter l'onglet dans les paramètressrc/services
src/components/Home/AccountSwitcherContextMenu.tsx
)Ce qu'il reste à faire
Support dansreload-account.ts
key
dansSettingsMultiServiceSpace.tsx
Informations supplémentaires
Chaque espace, possède un identifiant unique, qui est l'identifiant du compte de cet espace, et que l'on retrouve aussi dans l'objet qui réprésente l'envrionnement (stocké dans
useMultiService
).J'ai du modifier la fonction
switchTo
pour ajouter un cas particulier pour les espace (comptesAccountService.PapillonMultiService
):associatedAccountsLocalIDs
)instance
du compte; par défautinstance
est null (et jamais modifié, puisque ce n'est pas réellement un service) mais cette valeur sert à déterminer à plusieurs endroits si le compte a terminé son chargement: switchTo défini donc instance à une chaine de caractères non-nulle pour éviter les icones de chargement infini.