Philipp Hörist pushed to branch master at gajim / gajim
Commits: 809674b3 by wurstsalat at 2022-06-17T17:49:39+02:00 imprv: MUC: Base invitation type on MUC type and affiliation Conditions are listed here: https://dev.gajim.org/gajim/gajim/-/wikis/development/MUC-Invite-Logic - - - - - 2 changed files: - gajim/common/modules/muc.py - gajim/gtk/controls/groupchat.py Changes: ===================================== gajim/common/modules/muc.py ===================================== @@ -58,6 +58,7 @@ from gajim.common.structs import MUCPresenceData from gajim.common.modules.bits_of_binary import store_bob_data from gajim.common.modules.base import BaseModule +from gajim.common.modules.contacts import GroupchatContact log = logging.getLogger('gajim.c.m.muc') @@ -431,7 +432,7 @@ def _on_config_result(self, task: Task) -> None: self.set_affiliation(result.jid, user_list) for jid in invites: - self.invite(result.jid, jid) + self.invite(result.jid, JID.from_string(jid)) def _on_disco_result_after_config(self, task: Task) -> None: try: @@ -919,17 +920,27 @@ def _on_disco_result_after_invite(self, task: Task) -> None: **invite_data._asdict())) def invite(self, - room: str, - jid: str, + room: JID, + jid: JID, reason: Optional[str] = None, continue_: bool = False ) -> str: - type_ = InviteType.MEDIATED - contact = self._get_contact(jid) - if contact and contact.supports(Namespace.CONFERENCE): + if helpers.get_muc_context(room) == 'private': + room_contact = self._get_contact(room) + assert isinstance(room_contact, GroupchatContact) + self_contact = room_contact.get_self() + affiliation = self_contact.affiliation + admin = affiliation.is_owner or affiliation.is_admin + if admin: + self.set_affiliation( + room, {jid: {'affiliation': 'member'}}) + type_ = InviteType.DIRECT + else: + type_ = InviteType.MEDIATED + else: type_ = InviteType.DIRECT - password = self._mucs[room].password + password = self._mucs[str(room)].password self._log.info('Invite %s to %s', jid, room) return self._nbxmpp('MUC').invite( room, jid, reason, password, continue_, type_) ===================================== gajim/gtk/controls/groupchat.py ===================================== @@ -410,13 +410,16 @@ def _on_invite_ready(self, def _on_invite_clicked(self, _button: Gtk.Button) -> None: invitees = self._invite_box.get_invitees() for jid in invitees: - self.invite(jid) + self.invite(JID.from_string(jid)) self._show_page('groupchat') - def invite(self, contact_jid: str) -> None: - self._client.get_module('MUC').invite(self.room_jid, contact_jid) + def invite(self, invited_jid: JID) -> None: + self._client.get_module('MUC').invite( + self.contact.jid, invited_jid) + invited_contact = self._client.get_module('Contacts').get_contact( + invited_jid) self.add_info_message( - _('%s has been invited to this group chat') % contact_jid) + _('%s has been invited to this group chat') % invited_contact.name) def _on_destroy_room(self, _button: Gtk.Button) -> None: self.xml.destroy_reason_entry.grab_focus() View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/809674b33152bcf5b655be6a1a489938d7279acf -- View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/809674b33152bcf5b655be6a1a489938d7279acf You're receiving this email because of your account on dev.gajim.org.
_______________________________________________ Commits mailing list Commits@gajim.org https://lists.gajim.org/cgi-bin/listinfo/commits