Nouvelles de développement - Décembre 2019

Gajim development news

Nouvelles de développement - Décembre 2019

Gajim development news

Il s’agit du troisième message d’une série d’actualités sur le développement de Gajim. Dans ces messages, je (wurstsalat) vais essayer de résumer un mois de développement autour de Gajim. Parfois, ces messages couvriront également python-nbxmpp et XMPP en général. Le développement de décembre a apporté des améliorations aux transferts de fichiers via HTTP, les info-bulles de la liste de contacts, et plus. N’hésitez pas à rejoindre gajim@conference.gajim.org pour discuter avec nous.

Changements dans Gajim

Le remplacement de l’ancien système de fenêtres de dialogue (voir Nouvelles de développement - Novembre 2019) a été terminé ce mois-ci. Il y a encore des fenêtres de dialogue inutiles à supprimer, mais c’est déjà un grand pas en avant. Pour donner un exemple de fenêtre inutile : quand un contact accepte votre demande de souscription, une fenêtre de dialogue avec un unique bouton OK s’affiche pour vous informer de cet événement. À la place, Gajim va désormais déclencher une simple notification (ce qui est bien moins intrusif).

Depuis longtemps maintenant, vous pouviez survoler à la souris un salon de discussion dans la liste de contacts de Gajim, et cela affichait une infobulle avec des informations basiques concernant ce salon. Par le passé, cette infobulle était utilisée pour afficher le sujet du salon également (et ce, sans tronquer le texte). Nous avons décidé de remplacer le sujet par la description du salon, si disponible. Le sujet peut toujours être consulté en ouvrant la page d’information du salon de discussion. De plus, chaque information est désormais limitée en longueur de texte, ce qui donne une infobulle compacte.

Pour certaines actions, Gajim a besoin d’une procédure de type assistant pour guider l’utilisateur à travers plusieurs étapes de saisie. Gajim dispose désormais d’un assistant extensible pour cela. Deux procédures ont déjà été migrées vers ce nouvel assistant : le changement de mot de passe et la suppression d’un compte. Par exemple, lors de la suppression d’un compte, les utilisateurs peuvent choisir de supprimer le compte localement ou bien entièrement, c’est à dire à la fois localement et aussi côté serveur. C’est une procédure dynamique où des étapes peuvent échouer (par exemple un serveur qui ne permet pas la suppresion d’un compte, perte de connexion, …) ou bien nécessiter de nouvelles données à saisir. Le nouvel assistant permet à Gajim d’afficher des options, la progression, les erreurs, etc. dans une seule et même fenêtre sans avoir besoin de fenêtres de dialogue supplémentaires. La prochaine procédure à migrer sera l’assistant de création de compte, une partie essentielle pour une adoption facilitée.

Pour les transferts de fichier via HTTP File Upload (XEP-0363), ainsi que pour d’autres téléchargements HTTP, Gajim a longtemps utilisé des threads python. Cela ne fonctionne pas dans tous les cas, provoquant parfois un gel de l’interface utilisateur. Pour permettre aux transferts HTTP de fonctionner de façon asynchrone, Gajim utilise désormais la bibliothèque ’libsoup’. En travaillant sur ce sujet, le code concernant les transferts de fichier à été simplifié. À l’avenir, cela permettra aux utilisateurs de définir des proxies pour les connexions HTTP (par exemple pour URL image preview, plugin installer).

Qu’est-ce qui s’est passé d’autre

  • Correction de bogues dans les champs de saisie de message où de longs messages sans retour à la ligne n’étaient pas entièrement visibles (#8980, #9574)
  • Correction d’un bogue dans la messagerie sans serveur (#9926)
  • Les menus “Démarrer discussion” et “Créer un salon” sont maintenant désactivés lorsque l’utilisateur n’est pas connecté
  • Fermer une discussion comportant des messages non lus affichera désormais un message dynamique, prenant en compte les réglages d’historique
  • Amélioration de la sélection de source Audio/Vidéo dans les préférences

Dans un effort continu d’amélioration de la qualité du code en renforçant les règles pylint, de nombreux avertissements et erreurs de linting ont été corrigés.

Mises à jour d’extensions

L’extension URL image preview a été adaptée aux changements relatifs aux transferts de fichiers HTTP. Cela impliqua une refonte de l’extension, qui a aussi permis de corriger #456 et #320. Par le passé, l’extension était capable d’afficher des URIs de type geo: (liens vers des lieux) sur une carte utilisant soit Google Maps soit OpenStreetMap via Map Quest. Aujourd’hui les accès à ces deux services sont bridés ou nécessite un abonnement payant, rendant leur usage sans intérêt dans l’extension. Lorsqu’un URI de type geo: est reçu, l’extension va désormais afficher une icône cliquable en forme de carte, qui ouvrira le lien dans un navigateur Web. La plupart des navigateurs Web prennent en charge ces liens en ouvrant un service de cartographie avec les coordonnées fournies.

L’extension OMEMO de Gajim a également été adaptée aux changements liés aux transferts de fichiers HTTP, ce qui a aussi permis de corriger #467 et #419.

En outre, deux extensions ont été complètement retravaillées : Clickable Nicknames (#454) et Message Box Size.

Changements dans python-nbxmpp

La prise en charge de HTTP File Upload (XEP-0363) a été ajoutée dans python-nbxmpp.