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

[DONE] Yaal Coop/Add PWA functionality to app and notifications capabilities #937

Merged
merged 2 commits into from
Sep 27, 2023

Conversation

LoanR
Copy link
Contributor

@LoanR LoanR commented Sep 5, 2023

PWA

L'application est installable sur différents os : iOS, macOS, Windows, Android, Linux...
Cette fonctionnalité se base sur la lib django-pwa qui permet de configurer la création du manifest.json et du service worker.

Notifications

Le système de base de notifications est implémenté et s'appuie sur la lib django-webpush.

Standard web push

L'usage standard est le suivant :

  • Accepter de recevoir des notifications doit être fait par une action de l'utilisateur. La demande sera toujours double, le navigateur doit lui aussi demander cette autorisation
  • Suivant le navigateur utilisé (PWA ou non), le navigateur contacte le serveur distant qui lui correspond (Mozilla Push Service avec autopush-rs pour Firefox par exemple)
  • Le navigateur fournit la clé VAPID publique
  • Le push service répond avec un endpoint sur lequel poster les notifications
  • Lorsque l'application veut envoyer une notification, elle envoie le contenu sur ce endpoint avec la clé VAPID privée
  • Le push service authentifie l'information puis envoie le contenu de la notification sur les appareils enregistrés. Le message peut avoir une durée de vie, ce qui fait que les appareils éteints pourront tout de même recevoir la notification par la suite si nécessaire.

Conditions de notification

Notification métier : fin d'encodage

Pour le moment, Esup-Pod utilise ces notifications pour un cas métier particulier : la fin de l'encodage d'une vidéo. Le flow suivi est le suivant :

  • Lorsqu'un utilisateur upload une vidéo, l'app demande la permission d'envoyer des notifications
  • Si l'utilisateur accepte, le navigateur s'inscrit au push service correspondant et le serveur va enregistrer la valeur de l'attribut accepts_notifications de l'Owner
  • Dans le même temps le navigateur demande l'autorisation de notifier sur l'appareil
  • Si l'utilisateur accepte, l'autorisation de notifier depuis cette url est enregistrée dans les paramètres du navigateur
  • Si ces conditions sont remplies, lorsque l'encoding d'une vidéo appartenant à l'utilisateur est terminé, une notification sera envoyé sur ses appareils enregistrés.

Conditions de demande de notification

Un utilisateur peut paramétrer sa préférence de notification depuis son volet menu utilisateur.
Si la préférence de notification d'un utilisateur n'a pas encore été définie, la demande de notification se fera pendant l'encodage d'une vidéo, sur la page d'édition de la vidéo.

Règles de notifications

Pour être notifié de la fin d'un encoding, un utilisateur doit avoir accepté les notifications (accepts_notifications à True), et au moins un de ses appareils doit être enregistré à un push service.
Il doit également donner l'autorisation a un site de notifier son appareil depuis les paramètres du navigateur. Le fait qu'un utilisateur décide finalement de retirer la permission de notification d'un site dans son navigateur ne peut pas être contrôlé, cela ne rentre pas en compte dans le choix de l'envoi d'une notification.
Si un utilisateur refuse d'être notifié (accepts_notification à False) ou qu'aucun de ses appareil n'est enregistré à un push service, il recevra un mail à la fin de l'encodage (si le paramètre EMAIL_ON_ENCODING_COMPLETION est à True)

Cas particulier

Sur iOS, pour utiliser le service de notification et les recevoir, il faut impérativement installer la PWA. C'est une limitation imposée par iOS.

Tests

Pour tester les notifications, une url est à disposition pour les superusers, /pwa
Un bouton permet d'envoyer une notification sur tous les appareils enregistrés (et autorisés à notifier) de l'utilisateur connecté.

resolves #912
cc @azmeuk

@LoanR LoanR force-pushed the pwa-django-webpush branch from e7b4421 to e4719f0 Compare September 5, 2023 13:54
@LoanR
Copy link
Contributor Author

LoanR commented Sep 5, 2023

Il y a un peu d'infos dans dockerfile-dev-with-volumes/README.adoc et dans pod/main/configuration.json
Dans ce dernier fichier, pod_version_init n'est pas précisé, ne sachant pas à quelle version la PWA sera déployée.

Y a-t-il un endroit indiqué pour documenter la PWA et les notification (ce qui a été décrit dans la PR) ?
La meilleure place semble être https://www.esup-portail.org/wiki/display/ES/esup-pod mais nous n'y avons pas accès...

@LoanR LoanR force-pushed the pwa-django-webpush branch from e4719f0 to e5d707d Compare September 5, 2023 14:02
@ptitloup
Copy link
Contributor

ptitloup commented Sep 6, 2023

Bonjour et merci pour votre contribution. Je viens de solliciter l'équipe en charge du développement pour faire les review. Pour la documentation, en effet, je vais ouvrir une page sur le wiki mais je ne pourrais malheureusement pas vous donner accès. Je vous propose donc de faire la doc au format markdown et je la mettrai en ligne sur le wiki. Bonne journée

@Badatos Badatos self-requested a review September 6, 2023 07:53
Copy link
Collaborator

@Badatos Badatos left a comment

Choose a reason for hiding this comment

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

Merci pour cette fonctionnalité !
J’ai fait quelques remarques, principalement lié au QoC et à l'accessibilité.

pod/authentication/forms.py Show resolved Hide resolved
verbose_name=_("Accept notifications"),
default=None,
null=True,
help_text=_("Get push notifications from your devices."),
Copy link
Collaborator

Choose a reason for hiding this comment

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

il me semble qu'il serait plus juste de dire "on your devices" plutôt que "from" ?

WEBPUSH_SETTINGS = {
"VAPID_PUBLIC_KEY": "",
"VAPID_PRIVATE_KEY": "",
"VAPID_ADMIN_EMAIL": "[email protected]"
Copy link
Collaborator

Choose a reason for hiding this comment

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

[email protected] risque d'être spammé si on le laisse par défaut.

@@ -270,4 +274,3 @@ <h1 class="page_title">{{page_title|capfirst}}</h1>
</body>

</html>
Copy link
Collaborator

@Badatos Badatos Sep 6, 2023

Choose a reason for hiding this comment

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

Merci de laisser une ligne vide en fin de fichiers

@@ -243,6 +243,11 @@ <h5 id="pod-navbar__menuuserLabel">{% if user.get_full_name != '' %}{{ user.get_
<a class="nav-item nav-link" href="{% url 'bbb:live_list_meeting' %}"><i class="bi bi-lightning-charge pod-nav-link-icon mx-1" aria-hidden="true"></i>{% trans 'Perform a BigBlueButton live' %}</a>
{% endif %}
{% endif %}
<div class="nav-item">
<button class="nav-link" onclick="new bootstrap.Toast(document.querySelector('#notification-toast')).show()">
<i class="bi bi-bell pod-nav-link-icon mx-1"></i>{% trans 'Notifications settings' %}
Copy link
Collaborator

@Badatos Badatos Sep 6, 2023

Choose a reason for hiding this comment

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

ajouter aria-hidden="true" sur chaque icône bootstrap

pod/progressive_web_app/utils.py Show resolved Hide resolved
pod/progressive_web_app/views.py Show resolved Hide resolved
pod/settings.py Outdated
# PWA

PWA_APP_NAME = 'Podeduc'
PWA_APP_DESCRIPTION = (
Copy link
Collaborator

Choose a reason for hiding this comment

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

Est-il possible de mettre la description en anglais, et d'inclure le systeme de traduction ?

Copy link
Collaborator

Choose a reason for hiding this comment

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

(sinon, ajouter un commentaire pour le préciser)

pod/video_encode_transcript/utils.py Show resolved Hide resolved
pod/video_encode_transcript/utils.py Show resolved Hide resolved
@LoicBonavent LoicBonavent self-requested a review September 8, 2023 12:20
Copy link
Collaborator

@LoicBonavent LoicBonavent left a comment

Choose a reason for hiding this comment

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

Bonjour,

Voici le retour après mes premiers tests.
Pour informations, j'ai mis à jour Pod, sur un environnement de test fonctionnel, via les commandes habituelles :

  • python3 -m pip install -r requirements.txt
  • make updatedb
  • make migrate
  • make statics
  • make compilelang
    Puis, j'ai réalisé la configuration adéquate dans custom/settings_local.py en utilisant des clés générées via https://web-push-codelab.glitch.me/
    WEBPUSH_SETTINGS = {
    "VAPID_PUBLIC_KEY": "xxx",
    "VAPID_PRIVATE_KEY": "xxxx",
    "VAPID_ADMIN_EMAIL": "xxx"
    }
    Et final un restart du service uwsgi-pod.

Côté installation, aucun problème !

Par la suite, j'ai réalisé des tests sur différents navigateurs Firefox / Chrome / Edge sur mon PC (je testerai lundi sur un téléphone/tablette).
Voici alors mes remarques :

  • Quand je vais dans le menu, dans Paramètres de notification et que je clique sur Autoriser :

Pour continuer mes tests sur les notifications, j'ai alors modifier directement la valeur du champ authentication_owner.accepts_notifications pour mon compte (j'ai mis 1 pour les accepter).

Après cette manip, les notifications de fin d'encodage s'affichaient bien sur tous les navigateurs.

  • Sur Chrome/Edge, sur toutes les pages, j'ai une erreur non bloquante dans la console : Uncaught (in promise) TypeError: Failed to execute 'addAll' on 'Cache': Request failed

  • Sur la route /pwa, les boutons n'ont pas de style et le bouton Send notification n'est pas traduit. J'imagine que c'est seulement une page de test, c'est donc peu important.

  • Dans l'Administration, il manque quelques traductions (push information, User, subscription, Group).

  • Sur Chrome/Edge, j'ai pu installer l'application sur le bureau (sous Firefox, je n'ai pas trouvé mais il me semble que c'est lié à Firefox, qui ne l'autorise plus depuis 2 ans).
    Par contre, l'application se nomme Podeduc et les icônes correspondent aux icônes "de base" (non surchargés) de Pod.
    Serait-il possible de pouvoir réaliser une surcharge du nom de l'application et du(es) icône(s) ? Typiquement, via le fichier de configuration custom/setting_local.py.
    Par exemple, chez nous, nous mettrions Plateforme vidéo UM comme nom d'application et l'icône correspondant à la charte de l'université.

Encore merci pour ce travail de qualité.

Bonne journée,

@ptitloup
Copy link
Contributor

Bonjour @LoanR est-ce possible de répondre aux remarques svp ?

@ptitloup
Copy link
Contributor

Est-ce possible d'apporter les modifications demandées ? merci bcp

@LoanR
Copy link
Contributor Author

LoanR commented Sep 13, 2023

Hello @ptitloup, c'est bien pris en compte de notre côté, on est sur les modifs demandées et on enquête sur les erreurs rencontrées.
On reviendra ici dès qu'on aura suffisamment avancé ou si on a des questions.

@azmeuk
Copy link
Contributor

azmeuk commented Sep 13, 2023

Bonjour,

Je viens de pousser les modifications de codes demandées par @Badatos.

@LoicBonavent

Par la suite, j'ai réalisé des tests sur différents navigateurs Firefox / Chrome / Edge sur mon PC (je testerai lundi sur un téléphone/tablette).

Nous n'avons pas testé sur Edge car le cahier des charges listait Chrome, Firefox et Safari.

Me confirmes-tu que tu as fais tes tests depuis un Windows ?

Me confirmes-tu que tu tests depuis une URL publique en https ?

Peux-tu m'indiquer les versions des navigateurs avec lesquelles tu effectues tes tests ?

sur Chrome et Edge, le navigateur me demande de confirmer l'autorisation, mais cela me provoque une erreur 403 dans la Console du navigateur lors d'une requête sur https://xxx.umontpellier.fr/accounts/set-notifications/ 403 (forbidden)

À première vue je dirais que ça pourrait être un souci de CSRF. Vois-tu passer le token CSRF dans la requête ?

Sur Chrome/Edge, sur toutes les pages, j'ai une erreur non bloquante dans la console : Uncaught (in promise) TypeError: Failed to execute 'addAll' on 'Cache': Request failed

Le serviceworker essayait de mettre en cache un fichier avec un mauvais chemin. C'est corrigé.

Sur la route /pwa, les boutons n'ont pas de style et le bouton Send notification n'est pas traduit. J'imagine que c'est seulement une page de test, c'est donc peu important.

Effectivement nous avons fais cette simple page pour pouvoir tester la réception des notifications sans avoir besoin de mettre en ligne une vidéo. Cette page n'est disponible qu'aux super utilisateurs. Si c'est important on peut le traduire.

Dans l'Administration, il manque quelques traductions (push information, User, subscription, Group).

En effet ces éléments viennent de l'extension django-webpush. Il n'y a pas de traduction pour le moment mais une PR a été soumise à ce sujet.

Sur Chrome/Edge, j'ai pu installer l'application sur le bureau (sous Firefox, je n'ai pas trouvé mais il me semble que c'est lié à Firefox, qui ne l'autorise plus depuis 2 ans).

Il existe une extension qui permet l'installation avec Firefox : https://github.com/filips123/PWAsForFirefoxhttps://github.com/filips123/PWAsForFirefox

Par contre, l'application se nomme Podeduc et les icônes correspondent aux icônes "de base" (non surchargés) de Pod.
Serait-il possible de pouvoir réaliser une surcharge du nom de l'application et du(es) icône(s) ? Typiquement, via le fichier de configuration custom/setting_local.py.
Par exemple, chez nous, nous mettrions Plateforme vidéo UM comme nom d'application et l'icône correspondant à la charte de l'université.

On peut surcharger n'importe quel élément de configuration décrit dans django-pwa dans setting_local.py et notamment PWA_APP_NAME qui contrôle le nom d'affichage, ou bien PWA_APP_ICONS et PWA_APP_ICONS_APPLE pour qui contrôlent les icônes.

@LoicBonavent
Copy link
Collaborator

Bonjour,

Merci pour ce retour.
En effet, j'utilise bien Windows 10 et Firefox 117.0.1, Chrome 116.0 sur un serveur de test (il y a peut-être des contraintes à ce niveau) en HTTPS.
Concernant le problème 403, c'est bien le token CSRF qui ne passe pas dans la requête (par contre, j'ai bien un cookie csrftoken rempli); si je suis le seul à avoir ce problème, c'est que cela vient sûrement de mon environnement de test (je vais faire des tests supplémentaires pour vérifier ce point).
Et merci aussi pour les autres points, en particulier la configuration de django-pwa.

@LoanR
Copy link
Contributor Author

LoanR commented Sep 15, 2023

Nous allons mettre ces questions de configuration de django-pwa dans la doc, ça simplifiera l'usage.

@LoicBonavent
Copy link
Collaborator

Bonjour,

Dans mon cas, je vous confirme que le problème de 403 venait de mon environnement de test et non de votre développement (la valeur du cookie csrftoken n'était pas fournie).

Encore une petite remarque, il semblerait qu'il y ait 2 traductions en double, ce qui pose problème pour la compilation :
"Don't forget to allow notifications from this website in your browser's settings!"
et
"Error during unsubscription..."

Merci.

@azmeuk
Copy link
Contributor

azmeuk commented Sep 15, 2023

Dans mon cas, je vous confirme que le problème de 403 venait de mon environnement de test et non de votre développement (la valeur du cookie csrftoken n'était pas fournie).

Merci pour l'info. Par curiosité, qu'est-ce qui a provoqué le souci ?

Encore une petite remarque, il semblerait qu'il y ait 2 traductions en double, ce qui pose problème pour la compilation.

On s'en occupe rapidement.

@LoicBonavent
Copy link
Collaborator

Je pense que cela doit être lié à la conf Nginx vis-à-vis de proxy_set_header Cookie ou quelque chose dans ce style.
Pour tester, j'ai modifié le fichier notification-toast.js comme ceci :
_var csrftoken = Cookies.get('csrftoken');
// Check if token is undefined or null
if (csrftoken == null) {
csrftoken = jQuery("[name=csrfmiddlewaretoken]").val();
}
formData.append("csrfmiddlewaretoken", csrftoken);

const response = await fetch(post_url, {
method: "POST",
body: formData,
headers: {
"X-Requested-With": "XMLHttpRequest",
"X-CSRFToken": csrftoken,
},
});_

Je pense qu'il y a également un petit problème de traduction pour le message d'encodage; j'obtiens du Franglais :) :
The vidéo "" has been encodé aux formats Web, and is now available on Pod.

Copy link
Contributor

@AymericJak AymericJak left a comment

Choose a reason for hiding this comment

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

Bonjour, quelques petits changements attendus de mon côté.
Merci

pod/locale/fr/LC_MESSAGES/django.po Outdated Show resolved Hide resolved
pod/locale/fr/LC_MESSAGES/django.po Outdated Show resolved Hide resolved
pod/locale/fr/LC_MESSAGES/djangojs.po Outdated Show resolved Hide resolved
pod/progressive_web_app/urls.py Show resolved Hide resolved
pod/urls.py Outdated Show resolved Hide resolved
@azmeuk
Copy link
Contributor

azmeuk commented Sep 19, 2023

Je pense qu'il y a également un petit problème de traduction pour le message d'encodage; j'obtiens du Franglais :) :
The vidéo "" has been encodé aux formats Web, and is now available on Pod.

C'est réglé.

@AymericJak

Les différents points sont réglés aussi.

@LoicBonavent LoicBonavent self-requested a review September 19, 2023 11:36
Copy link
Collaborator

@LoicBonavent LoicBonavent left a comment

Choose a reason for hiding this comment

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

D'après mes tests, cela semble concluant.
Un grand merci pour ce travail !

Copy link
Contributor

@ptitloup ptitloup left a comment

Choose a reason for hiding this comment

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

ok pour moi en review, je teste le fonctionnement

@ptitloup
Copy link
Contributor

ptitloup commented Sep 19, 2023

Ne pas prendre en compte les tests ci-dessous, j'avais oublié de deployer les fichiers statics :'(, toutes mes excuses

Test effectués sur MacOS (Mac Book Pro) : Ok sur Firefox et Safari. (pas d'installation possible)

Voici quelques retours de mes tests sur mon telephone pro sur Android.
Navigateur utilisé : Firefox
Pour l'installation, il faut aller dans le menu du navigateur puis cliquer sur installer. Il me rajoute bien un reccourci sur la page d'accueil mais l'icone est blanc :'(
j'aurai bien aimé un systeme identique aux notifications pour l'installation.
Au niveau des notifications, je clique sur Autoriser mais rien ne se passe :'(

Second test effectué sur Chrome. Il ne propose pas d'installer mais d'ajouter à l'ecran d'accueil. L'icone est bien présent (mais il me semble qu'il s'agit du favicon et non des icons fourni dans l'application)
Concernant les notifications, je clique sur paramètres de notification puis sur Autoriser mais rien ne se passe...

Avez-vous tester de votre côté ? Ai-je oublié quelque chose ? merci pour votre aide

@ptitloup
Copy link
Contributor

En effet, cela fonctionne bcp mieux quand on déploie les fichiers statics.
Je confirme avoir réussi à installer et à recevoir les notifications sur mon environnement de test. Par contre, il faut cliquer une première fois sur autoriser, puis autoriser du côté du navigateur et cliquer à nouveau sur autoriser. Je trouve que ce n'est pas très ergonomique. Est-ce possible de voir pour récupérer l'évènement d'autorisation du navigateur et d'enregistrer directement ?
Petite question, comment est choisi le nom de l'application car de mon coté, elle s'appelle podeduc ... j'aurai préféré pod ulille !
Merci pour votre aide et bravo pour ce dev

@ptitloup
Copy link
Contributor

ptitloup commented Sep 19, 2023

enfin, est-ce possible de rajouter une entrée du menu pour installer l'application ? (dans le cas ou l'installation est possible !)

Copy link
Contributor

@AymericJak AymericJak left a comment

Choose a reason for hiding this comment

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

C'est bon pour moi.

Merci à vous pour cette PR !

@ptitloup
Copy link
Contributor

Bonjour @LoanR , pourriez-vous me faire un retour sur les deux point remontés suite à mes tests fonctionnels :

  • est-ce possible de rajouter une entrée du menu pour installer l'application ? (dans le cas ou l'installation est possible !)
  • Est-ce possible de voir pour récupérer l'évènement d'autorisation du navigateur et d'enregistrer directement plutot que de devoir recliquer sur autoriser ?
    Merci bcp

@azmeuk
Copy link
Contributor

azmeuk commented Sep 25, 2023

Bonjour @ptitloup
Désolé pour les délais de réponse. Je m'occupe de tous les points restants dans la journée de demain.
Éloi

Owners can set their notification preference.
Notifications are sent when video encoding is complete.

Co-authored-by: Éloi Rivard <[email protected]>
Co-authored-by: Loan Robert <[email protected]>
@azmeuk
Copy link
Contributor

azmeuk commented Sep 26, 2023

@ptitloup

S'il ne l'a pas deja fait, on peut faire quelque comme cela :

serviceWorkerRegistration.pushManager.subscribe(options).then permet en effet de déclencher un traitement après acceptation des notifications par le navigateur de l'utilisateur, mais c'est une action qui est déjà exécutée par django-webpush. En cas d'accord django-webpush appelle la méthode postSubscribeObj qui enregistre en base de données les informations du device.

Si on appelle serviceWorkerRegistration.pushManager.subscribe nous-même alors il faut aussi faire un appel à postSubscribeObj, et c'était en partie ce dont je parlai avec ma question sur la réplication du code.

Par ailleurs, django-webpush prépare les options à passer à serviceWorkerRegistration.pushManager.subscribe dans sa méthode subscribe et notamment la transmission de la clé publique. C'est encore une partie du code qu'il sera nécessaire de dupliquer si l'on veut appeler serviceWorkerRegistration.pushManager.subscribe nous-même.

On peut envisager une manière non intrusive en écoutant l'évènement de souscription grâce à l'évènement pushsubscriptionchange, mais le support navigateur est encore anecdotique (et encore que je n'arrive pas à le faire fonctionner correctement avec Firefox, et que je ne suis pas sûr qu'il s'agisse de l'événement d'acceptation de la souscription ou bien juste d'une modification sur une souscription).

Screenshot 2023-09-26 at 14-58-14 ServiceWorkerGlobalScope pushsubscriptionchange event - Web APIs MDN

Je vois donc 2 options :

  1. Implémentation de la fonctionnalité avec duplication d'une partie du code de django-webpush.
  2. Garder le comportement actuel et ouvrir un ticket de demande de fonctionnalité sur le dépôt de django-webpush.

Tu me confirmes que j'implémente la 1 avec duplication d'une partie du code ?

@azmeuk
Copy link
Contributor

azmeuk commented Sep 26, 2023

Je viens de pousser l'affichage d'une entrée de menu permettant l'installation de la PWA pour les navigateurs qui la supportent, à savoir pour le moment Chrome.

@azmeuk
Copy link
Contributor

azmeuk commented Sep 26, 2023

Voici le texte de documentation qui peut être ajouté au wiki:

# PWA

L'application implémente quelques fonctionnalités des [applications web progressives](https://developer.mozilla.org/fr/docs/Web/Progressive_web_apps),
comme l'installation ou les notifications.

## Configuration

Les métadonnées de l'application sont pré-remplies, mais toutes les options (icônes, nom de l'application, etc.) peuvent être surchargées.
La liste exhaustive des paramètres de configuration est disponible [sur le dépôt de django-pwa](https://github.com/silviolleite/django-pwa?tab=readme-ov-file#configuration).
Notamment, le nom et la description de l'application sont contrôlés par les variables `PWA_APP_NAME` et `PWA_APP_DESCRIPTION`.

## Notifications push

Afin de permettre à l'application d'envoyer aux utilisateurs des notifications natives, il est nécessaire de générer une paire de clés VAPID, par exemple avec des outils tels que https://web-push-codelab.glitch.me/

Ensuite, les clés doivent être indiqués dans la configuration via les paramètres suivants:

```python
WEBPUSH_SETTINGS = {
    "VAPID_PUBLIC_KEY": "<clé-publique>",
    "VAPID_PRIVATE_KEY": "<clé-privée>",
    "VAPID_ADMIN_EMAIL": "[email protected]"
}

@ptitloup
Copy link
Contributor

Bonjour Eloi,
merci pour l'implementation et ton retour.
Ok pour la doc, je vias rajouter une page dans le wiki.
Pour ta question, en fait, je cherche quelque chose d'ergonomique pour nos utilisateurs. Le fait d'avoir à cliquer sur "notification" puis de devoir autoriser puis après de rappuyer ne l'est pas, bcp d'utilisateurs ne vont pas le faire. J'opte donc pour la V1 en attendant mieux. J'aurai aimé que ce ne soit pas le cas. Merci

@ptitloup
Copy link
Contributor

CC @azmeuk !

@ptitloup
Copy link
Contributor

@azmeuk
Copy link
Contributor

azmeuk commented Sep 26, 2023

Bonjour Eloi, merci pour l'implementation et ton retour. Ok pour la doc, je vias rajouter une page dans le wiki. Pour ta question, en fait, je cherche quelque chose d'ergonomique pour nos utilisateurs. Le fait d'avoir à cliquer sur "notification" puis de devoir autoriser puis après de rappuyer ne l'est pas, bcp d'utilisateurs ne vont pas le faire. J'opte donc pour la V1 en attendant mieux. J'aurai aimé que ce ne soit pas le cas. Merci

C'est bien compris. J'implémente ça demain matin.

@azmeuk
Copy link
Contributor

azmeuk commented Sep 26, 2023

La doc est en ligne : https://www.esup-portail.org/wiki/display/ES/Mode+PWA+et+Notifications

On dirait que le la mise en forme markdown n'a pas fonctionné.

@ptitloup
Copy link
Contributor

La doc est en ligne : https://www.esup-portail.org/wiki/display/ES/Mode+PWA+et+Notifications

On dirait que le la mise en forme markdown n'a pas fonctionné.

Pas grave, je referais cela tranquillement

@ptitloup
Copy link
Contributor

Voilà, c'est fait

@ptitloup
Copy link
Contributor

Bonjour, je confirme la bonne installation de Pod. Testé via chromium sous Mac OS. Il m'a proposé de l'installer et j'ai maintenant l'application de disponible directement. Etrange, l'application se nomme podeduc !

@azmeuk
Copy link
Contributor

azmeuk commented Sep 27, 2023

Etrange, l'application se nomme podeduc !

@ptitloup as-tu configuré la variable PWA_APP_NAME ? Vois-tu les modifications dans https://ton-installation.tld/manifest.json ?

@ptitloup
Copy link
Contributor

Quand je modifie la variable PWA_APP_NAME, je vois bien la modification. Donc tout est ok mais pourquoi PodEduc par défaut ? c'est plutot ca ma question :)

@azmeuk
Copy link
Contributor

azmeuk commented Sep 27, 2023

Je ne sais plus d'où ce nom vient. Tu préfères un autre nom par défaut ?

@ptitloup
Copy link
Contributor

Pod Educ est le nom de l'instance Pod de l'education nationale. Certes, c'est une grosse instance mais nous sommes plutot enseignement supérieur. Ne voulant froisser personne, on pourrait mettre Pod tout simplement.

@ptitloup
Copy link
Contributor

ok j'ai trouvé, tout se trouve dans pod/settings.py, est-ce possible de déplacer ces paramètres dans pod/main/settings.py et de remplacer podeduc par Pod svp ? Merci bcp

Copy link
Contributor

@ptitloup ptitloup left a comment

Choose a reason for hiding this comment

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

ok pour moi

@azmeuk
Copy link
Contributor

azmeuk commented Sep 27, 2023

J'ai poussé les modifications que tu as demandé tout à l'heure, et aussi un changement sur la partie front pour l'activation des notifications.

Activation / désactivation des notifications par l'utilisateur.
ok

L'utilisateur active les notifications dans l'interface, mais les refuse dans le navigateur : pas le choix, il faut aller les réactiver à la main.
ko

@ptitloup
Copy link
Contributor

testé sur macOS, installation ok et notifications ok. Merci pour ces changements. Tout cela me convient.

@ptitloup ptitloup merged commit afb1f34 into EsupPortail:develop Sep 27, 2023
4 checks passed
@ptitloup
Copy link
Contributor

Merci bcp !

vsabatie pushed a commit to vsabatie/Pod that referenced this pull request Nov 22, 2023
…ilities (EsupPortail#937)

* Add PWA functionality to app and notifications capabilities

Owners can set their notification preference.
Notifications are sent when video encoding is complete.

Co-authored-by: Éloi Rivard <[email protected]>
Co-authored-by: Loan Robert <[email protected]>

* Implement a PWA installation menu entry

---------

Co-authored-by: Éloi Rivard <[email protected]>
vsabatie pushed a commit to vsabatie/Pod that referenced this pull request Nov 23, 2023
…ilities (EsupPortail#937)

* Add PWA functionality to app and notifications capabilities

Owners can set their notification preference.
Notifications are sent when video encoding is complete.

Co-authored-by: Éloi Rivard <[email protected]>
Co-authored-by: Loan Robert <[email protected]>

* Implement a PWA installation menu entry

---------

Co-authored-by: Éloi Rivard <[email protected]>
vsabatie pushed a commit to vsabatie/Pod that referenced this pull request Nov 23, 2023
…ilities (EsupPortail#937)

* Add PWA functionality to app and notifications capabilities

Owners can set their notification preference.
Notifications are sent when video encoding is complete.

Co-authored-by: Éloi Rivard <[email protected]>
Co-authored-by: Loan Robert <[email protected]>

* Implement a PWA installation menu entry

---------

Co-authored-by: Éloi Rivard <[email protected]>
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.

6 participants