CovidTrackerFr / vitemadose-front

Interface utilisateur de l'outil ViteMaDose
https://vitemadose.covidtracker.fr
Other
80 stars 51 forks source link

Affichage du message de service depuis la remote config Firebase #199 #262

Closed GillesDebunne closed 2 years ago

GillesDebunne commented 2 years ago

Cette Pull Request est

Description

Inspiré par le travail de @Aymeric sur #207, voici une nouvelle proposition pour #199 et #136.

Seule la configuration firebase du message de service (disclaimer) est utilisée. S'il est activé, on l'affiche avec sa sévérité à la place du message qui avait été commenté.

GillesDebunne commented 2 years ago

Pour référence, les autres valeurs disponibles dans la remote config sont (valeurs en prod au 01/08):

url_base: https://vitemadose.gitlab.io
path_data_department: /vitemadose/{code}.json
path_stats: /vitemadose/stats.json
chronodose_min_count: 2
data_disclaimer_enabled: false
data_disclaimer_message: La recherche par code postal...
data_disclaimer_severity: error
data_disclaimer_repeat_days: 5
path_list_departments: /vitemadose/departements.json
vaccination_centres_list_radius_in_km: 50
ios_maintenance_mode_url: 

Les différents chemins (url_base, path_data_department, path_stats et path_list_departments) pourraient être comparés avec les valeurs en dur dans le code. Les lire depuis la config créerait un SPOF et ajouterait un délai au chargement.

On pourrait également utiliser le rayon de recherche par défaut, mais il est maintenant réglable. Et on ne voudrait pas changer cette valeur alors que des résultats sont déjà affichés.

GillesDebunne commented 2 years ago

Noter que data_disclaimer_severity et data_disclaimer_repeat_days ne sont lues que dans l'app Android, tandis que path_list_departments, vaccination_centres_list_radius_in_km et ios_maintenance_mode_url sont utilisés sur iOS seulement.

Il y a peut-être à creuser de ce côté là pour unifier les 2 apps.

fcamblor commented 2 years ago

Hello, et merci de remettre au goût du jour cette problématique qui pour moi est assez importante (c'était l'un des sujets chauds dans ma todo list :) )

Il y a plusieurs (bonnes) idées d' @Aymerik dans sa PR que j'aimerais reprendre :

Il y a des choses sur sa PR que j'aimerais changer :

(du coup, je viens de pusher sur la branche de ta PR 3 commits qui couvrent ces problématiques)

Il reste un problème (je trouve) : la taille du bundle de prod qui passe de 70Ko à 92Ko (+20%) avec l'arrivée de Firebase ... je me demande s'il ne serait pas possible d'appeler une URL REST directement pour récupérer la remote config (sans avoir à se reposer sur une lib)

VMD_prod with_firebase
fcamblor commented 2 years ago

En hackant ici et là, je me suis aperçu qu'on pouvait faire la requête suivante :

POST https://firebaseremoteconfig.googleapis.com/v1/projects/vite-ma-dose-dev/namespaces/firebase:fetch?key=AIzaSyC5lncyBHo4HAmMecIvokok1A5PWWRrutw
{"app_instance_id":"dK7wz_QN_XhHDygC4aGC_9","app_id":"1:812389299998:web:ff949f4962d751b45dfb0f"}

(note: le query param key et le body param app_id sont déjà en configuration actuellement)

on pouvait alors récupérer les clefs configurées :

{
  "entries": {
    "chronodose_min_count": "2",
    "data_disclaimer_enabled": "false",
    "data_disclaimer_message": "Les plateformes sont très sollicitées, les données affichées par Vite Ma Dose peuvent avoir jusqu'à 15 minutes de retard pour Doctolib.",
    "data_disclaimer_repeat_days": "5",
    "data_disclaimer_severity": "warning",
    "path_contributors": "/vitemadose/contributors_all.json",
    "path_data_department": "/vitemadose/{code}.json",
    "path_list_departments": "/vitemadose/departements.json",
    "path_stats": "/vitemadose/stats.json",
    "url_base": "https://vitemadose.gitlab.io",
    "vaccination_centres_list_radius_in_km": "50"
  },
  "state": "UPDATE"
}

Je me pose juste la question de :

À voir, je testerai régulièrement dans les jours qui viennent pour voir...

fcamblor commented 2 years ago

J'ai (déjà) confirmé que de nouveaux app_instance_id sont générés régulièrement.

Mais la bonne nouvelle, c'est que j'ai pu voir qu'en appelant le endpoint suivant, on pouvait récupérer la valeur de ce app_instance-id :

POST https://firebaseinstallations.googleapis.com/v1/projects/vite-ma-dose-dev/installations
HEADER['x-goog-api-key']=AIzaSyC5lncyBHo4HAmMecIvokok1A5PWWRrutw
{"appId":"1:812389299998:web:ff949f4962d751b45dfb0f","sdkVersion":"w:0.4.30"}

La réponse :

{
    "name": "projects/812389299998/installations/cKSmx-f-lnllSnYa7o2Zd2",
    "fid": "cKSmx-f-lnllSnYa7o2Zd2",
    "refreshToken": "2_XWlkJDQFA31vrFhy7q1Zyqoq0Z62BSwss4Dy3OAdX3UECqcvmA_fOWvlQqbuFl0f",
    "authToken": {
        "token": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6IjE6ODEyMzg5Mjk5OTk4OndlYjpmZjk0OWY0OTYyZDc1MWI0NWRmYjBmIiwiZXhwIjoxNjI4Nzk1MTkxLCJmaWQiOiJjS1NteC1mLWxubGxTbllhN28yWmQyIiwicHJvamVjdE51bWJlciI6ODEyMzg5Mjk5OTk4fQ.AB2LPV8wRQIhAIveE0CTY_-A6VprEHGFRFvRWvVn8XfRsuPKOkyx9_IQAiBYCZGjX7uWtdiIGVWBmunaXgVL1cJ6NWdwD2YPViQ10g",
        "expiresIn": "604800s"
    }
}
fcamblor commented 2 years ago

Je viens de rajouter le commit 21b1cdd qui vient supprimer la dépendance vers firebase et le remplacer par les appels évoqués précédemment

=> On reste beaucoup plus stable au niveau des assets (74Ko) :

without_firebase

Pour info, les URLs suivantes permettent de reproduire mes screenshots :

fcamblor commented 2 years ago

@GillesDebunne @Aymerik merci pour vos contributions :-)