-
Notifications
You must be signed in to change notification settings - Fork 11
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
ajout de la version WebExtensions pour chrome #46
base: master
Are you sure you want to change the base?
Conversation
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.
J’ai juste regardé les sources, je n’ai pas essayé plus que ça.
Du plus important au moins important :
- J’aime bien le fait que ce soit beaucoup plus simple qu’actuellement
- J’aime bien le fait que ça utilise l’API comme il faut sans scrap le HTML
innerHTML
c’est mal- Ça serait plus jolis en découpant la grosse fonction
getNotificationsFromAPI()
- J’aime moins le fait que ça utilise des XHR au lieu de
fetch()
- J’aime moins le fait qu’il n’y ai pas trop de réglages (on ne peut visiblement pas changer l’intervalle de rafraichissement et tout)
Google Chrome/notifier.js
Outdated
divBlocNotif.id="blocNotif"; | ||
var divDate = document.createElement('div'); | ||
divDate.id = "date"; | ||
divDate.innerHTML = escapeHTML(date); |
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.
Pourquoi ne pas utiliser innerText
? Il n’y aurait pas besoin de escapeHTML()
.
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.
Pour aucune raison valable...
Google Chrome/notifier.js
Outdated
function getNotificationsFromAPI() { | ||
_contentDiv = document.createElement('div'); | ||
var target = _base_url + "api/notifications/?page_size=30&ordering=-pubdate&Authorization=" + _token; | ||
var xhr = new XMLHttpRequest(); |
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.
Tout le tralala sur les XHR devrait pouvoir être retiré parce que maintenant, en ces temps modernes, il y a fetch()
. Mais bon, ça peut attendre.
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.
Effectivement, dans un environnement contrôlé comme celui des extensions on peut se permettre. Ça devrait pas faire de mal pour nettoyer le code de tout passer en Promise
(voire en Observable
quand ce sera natif)
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.
Je vois pas trop l’intérêt des observables dans ce cas. Pour moi, c’est surtout utile pour des flux d’évenements, là on récupère juste une seule page web. Puis les promises marchent avec async
et await
.
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.
La liste des notifs pourrait être un observable (à terme, hein, dans l'immédiat ça sert à rien) avec une récupération en temps réel, en fait
Google Chrome/notifier.js
Outdated
//Get new notifications | ||
var resultsNotification = rootDOM.results; | ||
var countNotifications = 0; | ||
for(var notif = 0; notif < resultsNotification.length; ++notif) { |
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.
Bon ça serait cool de déplacer ça dans une fonction parce qu’il y a des if
dans des for
dans des if
dans des if
dans des if
…
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.
👍
À noter qu'un for (const notif of results)
serait pas mal pour nettoyer le code également.
Google Chrome/notifier.js
Outdated
/* | ||
* Global variables | ||
*/ | ||
var _notifCounter = 0; |
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.
Ça serait mieux de mettre ces variables globales dans une IIFE ou un module de ES6 plutôt que de les préfixer par des _
.
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.
On pourrait d'ailleurs utiliser la nouvelle notation à base de const
et let
pour ce genre de choses…
Google Chrome/notifier.js
Outdated
//If we are in debug mode | ||
var _debug = false; | ||
var _base_url = "https://zestedesavoir.com/"; | ||
var _token = "zds-notifier-firefox"; |
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.
firefox
?
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.
oops
Google Chrome/notifier.js
Outdated
if(_debug) _base_url = "https://beta.zestedesavoir.com/"; | ||
|
||
function escapeHTML(str) { return str.replace(/[&"'<>]/g, (m) => escapeHTML.replacements[m]); } | ||
escapeHTML.replacements = { "&": "&", '"': """, "'": "'", "<": "<", ">": ">" }; |
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.
À mon humble avis, c’est inutile si tu utilises innerText
.
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.
Yeap. J'ai relu le code et il était bien bien moche :D
J'ai pas encore fait le tour du code en détail, mais tes remarques sont justes, ça fait déjà une base de choses à corriger. Il faudrait aussi passer à ES6 de façon générale, autant que possible (voir caniuse si besoin pour la compatibilité), pour garder un code simple, moderne et maintenable. |
Je tente de faire ça ce week end ici ! |
Bon j'ai pas eu le temps (prend plus de temps que prévu) de tout faire ce week end mais j'ai pas oublié et c'est en cours :) |
f74e393
to
b887a00
Compare
Bon, on va déterrer un peu tout ça ! Je viens d'installer l'extension chez moi et j'ai déjà un bug : ça se rafraîchit pas. Du coup j'ai beau avoir cliqué sur un lien, lu le contenu et attendu un petit moment, j'ai toujours la notif. Aussi les notifs sont de la même couleur que le header/footer de la popup, c'est pas super visible. Ce serait pas mieux avec un fond clair pour la liste ? Ensuite la page de settings est pas hyper sexy (le |
Hei @viki53, @Eskimon, j'ai enfin pris le temps de faire les quelques modifs pour la version webextension.
QA
Note
Le code est exactement le même que la version Firefox. Ce qui change :
notifier_popup.css
(j'ai fais un truc crade d'ailleurs dedans)Du coup je me dis qu'il est plus judicieux de mettre tout dans le même dossier et séparer juste le css et le manifest en précisant dans le README la nouvelle démarche.
Qu'en pensez-vous ?