Noutăți în domeniul dezvoltării Decembrie 2019

Noutăti despre proiectarea Gajim

Noutăți în domeniul dezvoltării Decembrie 2019

Noutăti despre proiectarea Gajim

Aceasta este a treia postare dintr-o serie de știri despre dezvoltarea Gajim. În aceste postări eu (wurstsalat) voi încerca să rezum o lună de dezvoltare în jurul Gajim. Uneori, aceste postări vor acoperi și python-nbxmpp și XMPP în general. Dezvoltarea din decembrie a adus îmbunătățiri la transferurile de fișiere HTTP, la tooltipurile din lista de contacte și multe altele. Nu ezitați să vă alăturați gajim@conference.gajim.org pentru a discuta cu noi.

Schimbări în Gajim

Înlocuirea vechiului sistem de dialog al mesajelor din Gajim (see November’s development news) a fost finalizată în această lună. Suntem încă în procesul de eliminare a dialogurilor acolo unde acestea nu sunt necesare, dar acesta este deja un bun pas înainte. Pentru a da un exemplu de dialog de mesaj inutil: atunci când un contact confirmă cererea de abonament, ar apărea un dialog de mesaj cu un singur buton OK pentru a vă informa despre acest eveniment. În schimb, Gajim va emite acum o simplă notificare (care este mai puțin intruzivă).

De mult timp, puteai să treci peste un chat de grup din lista de contacte din Gajim și se afișa un tooltip cu informații de bază despre acel chat. În trecut, acest tooltip obișnuia să afișeze și subiectul chat-ului de grup (și nu scurta textul). Am decis să înlocuim subiectul cu descrierea chat-ului de grup, dacă este dată. Subiectul poate fi în continuare vizualizat prin deschiderea paginii de informații a chat-ului de grup. În plus, au fost stabilite limite de lungime a textului pentru fiecare informație, rezultând astfel un tooltip compact.

Pentru anumite acțiuni, Gajim are nevoie de un proces asemănător unui asistent pentru a ghida utilizatorii prin mai multe etape de introducere a datelor. Gajim dispune acum de un asistent extensibil în acest scop. Două fluxuri de lucru au fost deja migrate către noul asistent: schimbarea parolei și eliminarea contului. Atunci când elimină un cont, de exemplu, utilizatorii pot alege dacă doresc să îl elimine local sau în întregime, adică atât local, cât și de pe server. Acesta este un proces dinamic în care pașii pot merge prost (de exemplu, serverul nu oferă posibilitatea de eliminare a contului, conexiunea pierdută, …) sau ar fi necesară o intrare suplimentară din partea utilizatorului. Utilizarea noului asistent permite Gajim să afișeze opțiunile, progresul, erorile și așa mai departe într-o singură fereastră, fără a utiliza dialoguri suplimentare. Următoarea acțiune care va fi migrată va fi asistentul de creare a contului, o parte crucială a user onboarding.

Pentru transferurile de fișiere prin HTTP File Upload (XEP-0363), precum și pentru alte descărcări și încărcări HTTP, Gajim utilizează de mult timp fire de execuție python. Acest lucru nu s-a dovedit a funcționa în toate cazurile, uneori ducând la blocarea interfeței grafice. Pentru a face ca transferurile HTTP să funcționeze asincron, Gajim folosește acum biblioteca ’libsoup’. În timp ce se lucra la acest lucru, codul din jurul transferurilor de fișiere a fost, de asemenea, simplificat. În viitor, acest lucru ar trebui să le permită utilizatorilor să configureze și proxy-uri pentru conexiunile HTTP (de exemplu, previzualizarea imaginilor URL, instalarea plugin-urilor).

Ce s-a mai întâmplat

  • Au fost corectate erori în introducerea mesajelor, unde mesajele lungi fără pauze de linie nu erau vizibile în totalitate (#8980, #9574)
  • A fost reparată o eroare în mesageria fără server (#9926)
  • Elementele de meniu ‘Start Chat’ și ‘Create Group Chat’ sunt acum dezactivate atunci când utilizatorul nu este conectat
  • Închiderea unui chat cu mesaje necitite va afișa acum un mesaj de dialog dinamic, luând în considerare setările istoricului
  • Selectare îmbunătățită a sursei audio/video în preferințe

În cadrul unui efort continuu de îmbunătățire a calității codului prin înăsprirea regulilor pylint, au fost corectate multe avertismente și erori de linting.

Actualizări de plugin-uri

Plugin-ul de previzualizare a imaginilor URL al lui Gajim a fost adaptat la modificările de transfer de fișiere HTTP. Aceasta a inclus și o refacere completă a plugin-ului, care a reparat și #456 și #320. În trecut, pluginul era capabil să afișeze geo:-URI (linkuri către locații) pe o hartă folosind fie Google Maps, fie OpenStreetMap prin Map Quest. În prezent, ambele servicii au tarife limitate sau necesită un abonament plătit, ceea ce face inutilă utilizarea acestor servicii de către plugin. Atunci când primește un geo:-URI, pluginul de previzualizare va afișa acum o pictogramă de hartă pe care se poate face clic și care deschide browserul web. Majoritatea browserelor acceptă aceste linkuri prin deschiderea unui serviciu de hărți utilizând coordonatele furnizate.

Plugin-ul OMEMO al lui Gajim a fost adaptat și el la modificările aduse transferului de fișiere HTTP, care a reparat, de asemenea, #467 și #419.

În plus, două pluginuri au fost complet refăcute: poreclele care pot fi accesate prin clic (#454) și dimensiunea casetei de mesaje.

Modificări în python-nbxmpp

Suport pentru încărcarea de fișiere HTTP (XEP-0363) a fost adăugat la python-nbxmpp.