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

ajout de la version WebExtensions pour chrome #46

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

AmarOk1412
Copy link
Member

Hei @viki53, @Eskimon, j'ai enfin pris le temps de faire les quelques modifs pour la version webextension.

Q R
Type de modification évolution
Ticket(s) (issue(s)) concerné(s) #42

QA

  • Vérifier que l'extension fonctionne bien.

Note

Le code est exactement le même que la version Firefox. Ce qui change :

  • Le manifest.json
  • 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 ?

Copy link

@motet-a motet-a left a 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)

divBlocNotif.id="blocNotif";
var divDate = document.createElement('div');
divDate.id = "date";
divDate.innerHTML = escapeHTML(date);
Copy link

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().

Copy link
Member Author

Choose a reason for hiding this comment

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

Pour aucune raison valable...

function getNotificationsFromAPI() {
_contentDiv = document.createElement('div');
var target = _base_url + "api/notifications/?page_size=30&ordering=-pubdate&Authorization=" + _token;
var xhr = new XMLHttpRequest();
Copy link

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.

Copy link
Contributor

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)

Copy link

@motet-a motet-a Aug 30, 2017

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.

Copy link
Contributor

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

//Get new notifications
var resultsNotification = rootDOM.results;
var countNotifications = 0;
for(var notif = 0; notif < resultsNotification.length; ++notif) {
Copy link

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

Copy link
Contributor

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.

/*
* Global variables
*/
var _notifCounter = 0;
Copy link

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 _.

Copy link
Contributor

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…

//If we are in debug mode
var _debug = false;
var _base_url = "https://zestedesavoir.com/";
var _token = "zds-notifier-firefox";
Copy link

Choose a reason for hiding this comment

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

firefox ?

Copy link
Member Author

Choose a reason for hiding this comment

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

oops

if(_debug) _base_url = "https://beta.zestedesavoir.com/";

function escapeHTML(str) { return str.replace(/[&"'<>]/g, (m) => escapeHTML.replacements[m]); }
escapeHTML.replacements = { "&": "&amp;", '"': "&quot;", "'": "&#39;", "<": "&lt;", ">": "&gt;" };
Copy link

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.

Copy link
Member Author

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

@viki53
Copy link
Contributor

viki53 commented Aug 30, 2017

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.

@AmarOk1412
Copy link
Member Author

@viki53 @motet-a 👍 thanks!

@AmarOk1412
Copy link
Member Author

Je tente de faire ça ce week end ici !

@AmarOk1412
Copy link
Member Author

AmarOk1412 commented Sep 11, 2017

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 :)

@viki53
Copy link
Contributor

viki53 commented Aug 30, 2018

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.
[EDIT] Ça a mis à jour ! Ça a juste mis quelques minutes…

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 fieldset mériterait un petit coup de peinture) et vide. On perd quelques fonctionnalités par rapport à l'ancienne version j'ai l'impression. Ce serait d'ailleurs pas mal de pas avoir à sauvegarder. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants