pidgin/pidgin

Add purple_account_manager_get_connected and port libpurple to it

Generally speaking, purple_connections_get_all is used to get a list of accounts
that are currently connected and then act upon those accounts.

Instead of having a connections API for that, we can just put it into the
account manager which can query the accounts it knows about and check if they
are connected or not making the account the source of truth for whether it is
connected or not.

This also has the benefit of treating the connection as just a data object that
belongs to the account which feels a lot more natural than the existing API.

Testing Done:
Ran and let a bonjour account go idle and verified via another instance of pidgin.

Reviewed at https://reviews.imfreedom.org/r/2031/
---
environment:
- BUILD_NUMBER
- REPOSITORY=pidgin/builders
- REGISTRY=docker.io
- DOCS_BUILD_IMAGE=${REGISTRY}/${REPOSITORY}:debian-bookworm-amd64
tasks:
import:
type: docker/import
files: .:.
build:
type: docker/run
image: ${REGISTRY}/${REPOSITORY}:${TARGET}
clean:
type: convey/clean
files:
- appimage-x86_64
- clang
- debian-bookworm-amd64
- fedora-36-amd64
- scanbuild
- ubuntu-kinetic-amd64
docs-clean:
type: convey/clean
files:
- facebook3-docs
- finch3-docs
- pidgin3-docs
- purple3-docs
docs-build:
type: docker/run
image: ${DOCS_BUILD_IMAGE}
workdir: ${CONVEY_WORKSPACE}
script:
- set -ex
- meson -Ddoc=true build-docs
- ninja -C build-docs doc
docs-export:
type: docker/export
files:
- build-docs/doc/reference/finch/finch/:finch3-docs
- build-docs/doc/reference/libpurple/libpurple/:purple3-docs
- build-docs/doc/reference/pidgin/pidgin/:pidgin3-docs
- build-docs/doc/reference/protocols/facebook/facebook/:facebook3-docs
export:
type: docker/export
files: build-${TARGET}:${TARGET}
bare-export:
type: docker/export
files: ${TARGET}:${TARGET}
plans:
pidgin3-appimage-x86_64:
environment:
- TARGET=appimage-x86_64
- RECIPE=Pidgin3
- CONFIGURE_ARGS=-Dconsoleui=False
stages:
- tasks: [import, build, bare-export]
clang:
environment: [TARGET=clang]
stages:
- tasks: [import, build]
- tasks: [export]
run: always
clean:
stages:
- tasks: [clean, docs-clean]
debian-bookworm-amd64:
environment: [TARGET=debian-bookworm-amd64]
stages:
- tasks: [import, build]
- tasks: [export]
run: always
docs:
stages:
- tasks: [docs-clean, import, docs-build, docs-export]
fedora-36-amd64:
environment: [TARGET=fedora-36-amd64]
stages:
- tasks: [import, build]
- tasks: [export]
run: always
scanbuild:
environment: [TARGET=scanbuild]
stages:
- tasks: [import, build]
- tasks: [export]
run: always
ubuntu-kinetic-amd64:
environment: [TARGET=ubuntu-kinetic-amd64]
stages:
- tasks: [import, build]
- tasks: [export]
run: always