Thu, 24 Apr 2025 22:19:39 -0500
IRCv3: check if a member is in a conversation before adding them
Awhile ago we update the NAMREPLY handler to build a separate
Purple.ConversationMembers and then splice that onto the existing one to help
with sorting and other performance issues. However, we didn't check if the
users already existed in the existing list, so we would get duplicates. This
address that.
Also fixed a reference leak.
Testing Done:
Joined a channel and sent `/quote names #channel` multiple times and verified that the member list did not grow to include a bunch of duplicates.
Reviewed at https://reviews.imfreedom.org/r/3987/
id: im.pidgin.Pidgin3 runtime: org.gnome.Platform runtime-version: '47' branch: default sdk: org.gnome.Sdk command: pidgin3 separate-locales: false tags: - dev add-extensions: im.pidgin.Purple3.Plugin: directory: plugins version: default add-ld-path: lib merge-dirs: purple-3 no-autodownload: true autodelete: true subdirectories: true im.pidgin.Pidgin3.Plugin: directory: plugins version: default add-ld-path: lib merge-dirs: pidgin-3 no-autodownload: true autodelete: true subdirectories: true modules: - name: mercurial buildsystem: simple build-commands: - make PREFIX=/app install-bin sources: - type: archive url: https://www.mercurial-scm.org/release/mercurial-6.9.tar.gz sha256: 629604293df2be8171ec856bf4f8b4faa8e4305af13607dce0f89f74132836d6 - name: libidn buildsystem: autotools cleanup: - /lib/*.la config-opts: - "--disable-static" sources: - type: archive url: https://ftp.gnu.org/gnu/libidn/libidn-1.42.tar.gz sha256: d6c199dcd806e4fe279360cb4b08349a0d39560ed548ffd1ccadda8cdecb4723 - name: birb buildsystem: meson config-opts: - "-Ddoc=false" - "--wrap-mode=nofallback" sources: - type: archive archive-type: tar-xz url: https://sourceforge.net/projects/pidgin/files/birb/0.3.1/birb-0.3.1.tar.xz/download sha256: 70fa6462042f7d7c86a495eb93355fa14af057136b691e23838290bbcf57465c - name: hasl buildsystem: meson config-opts: - "-Ddoc=false" - "--wrap-mode=nofallback" sources: - type: archive archive-type: tar-xz url: https://sourceforge.net/projects/pidgin/files/hasl/0.4.0/hasl-0.4.0.tar.xz/download sha256: e78c244a259f13d43d230e9a8909bf0437a9466bef6757770a54a60c7c720036 - name: ibis buildsystem: meson config-opts: - "-Ddoc=false" - "--wrap-mode=nofallback" sources: - type: archive archive-type: tar-xz url: https://sourceforge.net/projects/pidgin/files/ibis/0.13.1/ibis-0.13.1.tar.xz/download sha256: 31da8257d75370f0b5c9f02c33af326fc1f4c71076533f07a977ab2102bbeca0 - name: xeme buildsystem: meson config-opts: - "-Ddoc=false" - "--wrap-mode=nofallback" sources: - type: archive archive-type: tar-gzip url: https://keep.imfreedom.org/xeme/xeme/archive/5d0707ab10a2.tar.gz sha256: eabb0f88fdc54775e9aab63d277d0d0cf54c456ee09580d45bd516d1117088da - name: gplugin buildsystem: meson config-opts: - "-Ddoc=false" - "-Dlua=false" - "-Dpython3=false" - "--wrap-mode=nofallback" sources: - type: archive archive-type: tar-xz url: https://sourceforge.net/projects/pidgin/files/gplugin/0.44.2/gplugin-0.44.2.tar.xz/download sha256: aea244e1add9628b50ec042c54cf93803f4577f8f142678f09b91fd4c0b20f72 - name: seagull buildsystem: meson config-opts: - "--wrap-mode=nofallback" sources: - type: archive archive-type: tar-xz url: https://sourceforge.net/projects/pidgin/files/seagull/0.1.1/seagull-0.1.1.tar.xz sha256: 499fc45b6a8539bc2293b362fec1c847fe25697355a0572f07ace3f359a38873 - name: libspelling buildsystem: meson config-opts: - "--wrap-mode=nofallback" sources: - type: archive archive-type: tar-xz url: https://download.gnome.org/sources/libspelling/0.4/libspelling-0.4.6.tar.xz sha256: 3248a9b5336ea2f727d2db912d2f0083accc0505ce707679b3d9b8266c0101f5 - name: pidgin3 buildsystem: meson config-opts: - "-Ddoc=false" - "--wrap-mode=nofallback" sources: - type: dir path: . post-install: - install -d /app/plugins - install -d /app/plugins/pidgin-3 - install -d /app/plugins/purple-3 finish-args: # X11 + XShm access - "--share=ipc" - "--socket=fallback-x11" # Wayland access - "--socket=wayland" # GPU acceleration if needed - "--device=dri" # Needs to talk to the network: - "--share=network" # Audio - "--socket=pulseaudio" # Notifications (purple-toast) - "--talk-name=org.freedesktop.Notifications" # Accessibility - "--talk-name=org.a11y.Bus" # libsecret plugin - "--talk-name=org.freedesktop.secrets" # kwallet plugin - "--talk-name=org.kde.kwalletd5" - "--talk-name=org.kde.kwalletd6" # Bonjour - "--system-talk-name=org.freedesktop.Avahi" # Plugin Paths - "--env=PURPLE_PLUGIN_PATH=/app/plugins/purple-3" - "--env=PIDGIN_PLUGIN_PATH=/app/plugins/pidgin-3"