Closed GillesDebunne closed 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.
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.
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 :
VmdAppComponent
) => ça permet d'éviter un overhead lors de la recherche, et permettra d'utiliser la config sur toutes les pages de l'app (la config aura été initialisée une fois pour toutes))Il y a des choses sur sa PR que j'aimerais changer :
vaccination_centres_list_radius_in_km
(plus utile vu que configurable par l'utilisateur dorénavant)(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)
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 :
https://firebaseremoteconfig.googleapis.com/v1/projects/vite-ma-dose-dev/namespaces/firebase:fetch
) ... j'imagine que cela ne doit pas changer tous les 4 matinsapp_instance_id
: j'ai un peu peur que cette valeur puisse changer d'un jour à l'autre (en fonction des instances provisionnées par Google ???)À voir, je testerai régulièrement dans les jours qui viennent pour voir...
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"
}
}
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) :
Pour info, les URLs suivantes permettent de reproduire mes screenshots :
@GillesDebunne @Aymerik merci pour vos contributions :-)
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é.