Libpurple jest biblioteką z bardzo stabilnym API. Jest to z jednej strony wygodne, ponieważ nawet stare pluginy działają z nowymi wersjami Pidgina. Z drugiej strony krępuje to możliwości rozwoju, dostosowania biblioteki do nowych funkcji obsługiwanych protokołów. Na szczęście, pracujemy nad Pidginem/Libpurple 3.0.0, co oznacza, że można zmieniać API na tyle, ile tylko potrzeba.
W związku z tym, skupiłem się ostatnio na przystosowaniu Libpurple do poprawnej obsługi Gadu-Gadu, tam, gdzie mogło by to nie być możliwe po wydaniu wersji 3.0.0. Na przykład, zaimplementowałem sprawdzanie poprawności nazw użytkownika: GG używa tylko numerów jako identyfikatorów, podczas gdy Pidgin pozwalał na podawanie czegokolwiek. Teraz, dialogi takie jak dodawanie użytkowników, lub konfiguracji konta nie pozwolą na wprowadzenie nieprawidłowego ciągu jako numeru GG.
Zaimplementowałem również ustawianie własnych awatarów, w związku z czym wsparcie dla nich jest już kompletne. Niestety, użyłem starego protokołu, ponieważ nowy wykorzystuje (tak jak nowy protokół transferu plików) wartość IMToken, która nie jest dostępna w aktualnym libgadu.
Wśród kosmetycznych zmian, obsługa użytkowników, którzy nas zablokowali została w końcu wykonana prawidłowo. Teraz, zablokowany użytkownik jest oznaczany przez ikonę odmowy (przekreślone czerwone kółko), zamiast oznaczania statusu jako niewidoczny. Ponadto, przy próbie wysłania wiadomości do takiej osoby, użytkownik otrzyma ostrzeżenie.
Kolejną nową funkcją w libpurple jest sprawdzanie poprawności w dialogach utworzonych przez Request API. Teraz, okna takie jak tworzenie nowej wiadomości nie pozwoli na wprowadzenie nieprawidłowego identyfikatora użytkownika (w przypadku kont Gadu-Gadu – numeru GG), a okno rejestracji nowego konta nie będzie migało po nieprawidłowym wypełnieniu.
Wstępna obsługa multilogowania została zaimplementowana: wiadomości są synchronizowane między sesjami, a błędy związane ze statusami na różnych klientach poprawione (#14776). Do wykonania jeszcze została możliwość podglądu i ewentualnego zamykania innych sesji oraz (opcjonalna) synchronizacja statusu.
Kod związany z własnym statusem został napisany od nowa, przy okazji czego poprawiono kilka błędów.
Mam jedno pytanie, czy podczas prac testowałeś może zmiany również na telepathy-haze?
Nie testowałem. Nie przyglądałem się też tej bibliotece, ale podejrzewam, że autorzy telepathy będą musieli sami dostosować ją do nowego libpurple. Ale jak na razie, wersja 3.0.0 jest na tyle niestabilna, że nie mogę jej nawet testować pod Windowsem.