Commit graph libervia-backend/libervia/backend/plugins/plugin_xep_0045.py
Author SHA1 Message Date
Goffi
c4e3a2b015 plugin XEP-0045: add set_room_configuration and is_jid_in_room methods:
The `set_room_configuration` allow to update configuration with well-known options.
The `is_jid_in_room` check if an entity with the given real JID is in the room.
2026-10-08 20:50:37 +02:00
Goffi
1af645c0f0 plugin XEP-0045, XEP-0402: Update bookmark on room join/leave:
As PEP bookmarks are nowadays used to sync joined state across devices, trigger points
have been added to XEP-0045 so XEP-0402 can automatically update the `autojoin` status on
MUC joining or leaving.

A check has been added to ignore already joined or left room when XEP-0402 plugin updates
the MUC status on bookmark update.
2026-09-15 11:48:04 +02:00
Goffi
dc9e3e98d5 plugin XEP-0045: Use disco as fallback for is_room:
If a room was not joined (e.g., due to failure), `is_room` was wrongly returning `False`.
Disco identity is now used as fallback to detect correctly is an entity is a room or not.
This changes makes `is_room` async, and by extension `get_bare_or_full` too.
2026-08-12 18:10:51 +02:00
Goffi
e5781641f3 plugin XEP-0045: Fix use of empty string for nicks:
If empty string is used for nick in `join` (e.g., due to a bridge call), take use part of
the JID. This fix the use of empty resource, which was resulting in rejection by the
server.
2026-08-12 18:02:14 +02:00
Goffi
7d2d97fa75 plugin XEP-0045: Notification on mention:
If a mention is detected in a MUC (`groupchat`, not DM), a notification is sent.
2026-06-26 23:03:24 +02:00
Goffi
de13f16791 plugin XEP-0045: fix early return in availableReceived blocking room join:
On room join, the room object is created before the server's self-presence arrives.
`_getRoomUser()` thus returns `user=None` for the initial presence, which led to
`super().availableReceived(presence)` not being called, resulting in wrong typing of the
room and the room not really being joined.
2026-06-19 14:12:42 +02:00
Goffi
6aba4c6686 plugin XEP-0045: Fix variable used in logs. 2026-06-06 12:23:06 +02:00
Goffi
766d49fb38 plugin XEP-0313: Sync status tracking + resume workflow:
- Add sync status tracking with bridge signals (`mam_sync_started`, `mam_sync_completed`,
  `mam_sync_error`), `mam_sync_statuses_get` method and helper methods that are called
  from `plugin_xep_0045`.
- Update "resume" workflow:
    - fix settings of last stanza ID, so it's always set (was not set for our own messages)
    - own message now use `onMessage` full workflow instead of just store and signal.
    - add `flush_archive_batch` at the end of the process.
    - Sync status are sent during resumt
- Modernisation (type hints, use of `get_plugin_data`)
2026-05-02 15:55:18 +02:00
Goffi
95b24ec319 plugin XEP-0045: MAM archive batching:
Message archives (MAM) are sent by batches to avoid flooding the bridge when the client is
retrieving big ones.
2026-05-02 15:55:18 +02:00
Goffi
a55ef47b0a plugin XEP-0045: MUC joining refactoring:
- Join method is completely refactored so a room is now joined immediately, and MAM
  synchronisation happens in background.
- Legacy history is not used anymore to simplify code.
- Global simplification of the plugin, not more complicated states handling or message
  caching.
2026-05-02 15:55:18 +02:00
Goffi
68da01a043 Dates update. 2026-03-31 12:57:17 +02:00
Goffi
51776603e0 depdencies, core: update Tx-XMPP to be version >= 10.0:
This version changes the package name, so all `wokkel` imports habe been replaced by
`tx_xmpp`
2026-03-24 16:42:27 +01:00
Goffi
82e2c6efac apply black to the whole codebase. 2026-03-09 09:22:04 +01:00
Goffi
6a7b7bc36a core: Replace legacy INI config system with Pydantic-based TOML configuration.
This is a huge configuration refactoring.

The configuration system now uses Pydantic settings, with better validation, better
support for environment variables and other goodies.

The main config files now use TOML instead of INI, this allow for better handling of
complex types, notably dict.

Plugins, components and frontends can declare their config settings in a class which will
be imported dynamically.
2025-11-30 12:27:35 +01:00
Goffi
96bf3af324 Global reformatting with black. 2025-09-13 10:46:10 +02:00
Goffi
0a42dd3da3 core (main): renamed hasFeature to has_feature to fix inconsistency. 2025-09-05 19:31:50 +02:00
Goffi
cfc4041b1d plugin XEP-0045: Fix _message_parse_trigger which was incorrectly breaking the trigger workflow:
`None` was returned in some case instead of `True`, breaking the trigger workflow.
2025-05-06 00:34:01 +02:00
Goffi
65c6aefd68 plugin XEP-0045: add MUC search to plugin JID search results. 2025-04-11 18:19:28 +02:00
Goffi
53fdaa9d09 Reformatted code base using black. 2024-06-19 18:44:57 +02:00
Goffi
0e23b8c1b0 plugin XEP-0272: implement XEP-0272: Multiparty Jingle (Muji)
rel 429
2024-05-15 17:34:46 +02:00
Goffi
79fd3d7c13 plugin XEP-0045: avoir crash if subject is not set when _get_room_joined_args is called. 2023-12-13 22:00:25 +01:00
Goffi
b8d00757d3 plugin XEP-053, component AP gateway: use the new trigger.add_with_check method 2023-12-09 19:20:13 +01:00
Goffi
436848048a plugin XEP-0045: user normal workflow for history + get_room_user_jid method:
- workflow is now using the normal messages workflow even for history message: previous
  workflow was dedicated to MUC and only adding message to history, resulting in other
  plugins being skipped.
- new `get_room_user_jid` helps to retrieve easily the JID currently used in a joined
  room.
2023-11-22 15:00:57 +01:00
Goffi
29f70b35e2 plugin XEP-0045: fix name conflict in errback 2023-10-03 15:03:53 +02:00
Goffi
33b5bb63b7 plugin XEP-0045: fix calls to join 2023-06-07 22:26:17 +02:00
Goffi
d2685ba11b refactoring: renamed sat package to libervia.backend 2023-06-02 11:49:51 +02:00
Renamed from sat/plugins/plugin_xep_0045.py (Browse further)