Fix destroying a MUC
- Only close the tab if we initiated the destruction
This commit is contained in:
parent
31d9b39744
commit
4670760668
4 changed files with 26 additions and 12 deletions
|
@ -286,6 +286,9 @@ class Bookmarks(AbstractPEPModule):
|
||||||
else:
|
else:
|
||||||
self._private_store(storage_node)
|
self._private_store(storage_node)
|
||||||
|
|
||||||
|
app.nec.push_incoming_event(
|
||||||
|
NetworkEvent('bookmarks-received', account=self._account))
|
||||||
|
|
||||||
def _pubsub_store(self, storage_node: nbxmpp.Node) -> None:
|
def _pubsub_store(self, storage_node: nbxmpp.Node) -> None:
|
||||||
self._con.get_module('PubSub').send_pb_publish(
|
self._con.get_module('PubSub').send_pb_publish(
|
||||||
'', 'storage:bookmarks', storage_node, 'current',
|
'', 'storage:bookmarks', storage_node, 'current',
|
||||||
|
@ -344,8 +347,12 @@ class Bookmarks(AbstractPEPModule):
|
||||||
}
|
}
|
||||||
|
|
||||||
self.store_bookmarks()
|
self.store_bookmarks()
|
||||||
app.nec.push_incoming_event(
|
|
||||||
NetworkEvent('bookmarks-received', account=self._account))
|
def remove(self, jid: str, publish: bool = True) -> None:
|
||||||
|
if self.bookmarks.pop(jid, None) is None:
|
||||||
|
return
|
||||||
|
if publish:
|
||||||
|
self.store_bookmarks()
|
||||||
|
|
||||||
def get_name_from_bookmark(self, jid: str) -> str:
|
def get_name_from_bookmark(self, jid: str) -> str:
|
||||||
fallback = jid.split('@')[0]
|
fallback = jid.split('@')[0]
|
||||||
|
@ -354,6 +361,9 @@ class Bookmarks(AbstractPEPModule):
|
||||||
except KeyError:
|
except KeyError:
|
||||||
return fallback
|
return fallback
|
||||||
|
|
||||||
|
def is_bookmark(self, jid: str) -> bool:
|
||||||
|
return jid in self.bookmarks
|
||||||
|
|
||||||
def purge_pubsub_bookmarks(self) -> None:
|
def purge_pubsub_bookmarks(self) -> None:
|
||||||
log.info('Purge/Delete Bookmarks on PubSub, '
|
log.info('Purge/Delete Bookmarks on PubSub, '
|
||||||
'because publish options are not available')
|
'because publish options are not available')
|
||||||
|
|
|
@ -84,7 +84,7 @@ class MUC:
|
||||||
'cancel_config',
|
'cancel_config',
|
||||||
'send_captcha',
|
'send_captcha',
|
||||||
'decline',
|
'decline',
|
||||||
'request_voice'
|
'request_voice',
|
||||||
'destroy',
|
'destroy',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -182,6 +182,9 @@ class GroupchatControl(ChatControlBase):
|
||||||
# if True, the room has mentioned us
|
# if True, the room has mentioned us
|
||||||
self.attention_flag = False
|
self.attention_flag = False
|
||||||
|
|
||||||
|
# True if we initiated room destruction
|
||||||
|
self._wait_for_destruction = False
|
||||||
|
|
||||||
# sorted list of nicks who mentioned us (last at the end)
|
# sorted list of nicks who mentioned us (last at the end)
|
||||||
self.attention_list = []
|
self.attention_list = []
|
||||||
self.nick_hits = []
|
self.nick_hits = []
|
||||||
|
@ -651,14 +654,10 @@ class GroupchatControl(ChatControlBase):
|
||||||
_('Invalid group chat JID'),
|
_('Invalid group chat JID'),
|
||||||
_('The group chat JID has not allowed characters.'))
|
_('The group chat JID has not allowed characters.'))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
self._wait_for_destruction = True
|
||||||
con = app.connections[self.account]
|
con = app.connections[self.account]
|
||||||
con.get_module('MUC').destroy(self.room_jid, reason, jid)
|
con.get_module('MUC').destroy(self.room_jid, reason, jid)
|
||||||
con.get_module('Bookmarks').bookmarks.pop(self.room_jid, None)
|
|
||||||
con.get_module('Bookmarks').store_bookmarks()
|
|
||||||
gui_menu_builder.build_bookmark_menu(self.account)
|
|
||||||
self.force_non_minimizable = True
|
|
||||||
self.parent_win.remove_tab(self, self.parent_win.CLOSE_COMMAND)
|
|
||||||
self.force_non_minimizable = False
|
|
||||||
|
|
||||||
# Ask for a reason
|
# Ask for a reason
|
||||||
DoubleInputDialog(_('Destroying %s') % '\u200E' + \
|
DoubleInputDialog(_('Destroying %s') % '\u200E' + \
|
||||||
|
@ -2227,6 +2226,14 @@ class GroupchatControl(ChatControlBase):
|
||||||
self.autorejoin = False
|
self.autorejoin = False
|
||||||
self.got_disconnected()
|
self.got_disconnected()
|
||||||
|
|
||||||
|
con = app.connections[self.account]
|
||||||
|
con.get_module('Bookmarks').remove(self.room_jid)
|
||||||
|
|
||||||
|
if self._wait_for_destruction:
|
||||||
|
self.force_non_minimizable = True
|
||||||
|
self.parent_win.remove_tab(self, self.parent_win.CLOSE_COMMAND)
|
||||||
|
self.force_non_minimizable = False
|
||||||
|
|
||||||
def get_role_iter(self, role: str) -> Optional[Gtk.TreeIter]:
|
def get_role_iter(self, role: str) -> Optional[Gtk.TreeIter]:
|
||||||
try:
|
try:
|
||||||
ref = self._role_refs[role]
|
ref = self._role_refs[role]
|
||||||
|
|
|
@ -21,8 +21,6 @@ from gajim.common import app
|
||||||
from gajim.common import helpers
|
from gajim.common import helpers
|
||||||
from gajim.common.i18n import _
|
from gajim.common.i18n import _
|
||||||
|
|
||||||
from gajim import gui_menu_builder
|
|
||||||
|
|
||||||
from gajim.gtk.dialogs import ErrorDialog
|
from gajim.gtk.dialogs import ErrorDialog
|
||||||
from gajim.gtk.util import get_builder
|
from gajim.gtk.util import get_builder
|
||||||
|
|
||||||
|
@ -207,7 +205,6 @@ class ManageBookmarksWindow:
|
||||||
con.get_module('Bookmarks').bookmarks[jid] = bmdict
|
con.get_module('Bookmarks').bookmarks[jid] = bmdict
|
||||||
|
|
||||||
con.get_module('Bookmarks').store_bookmarks()
|
con.get_module('Bookmarks').store_bookmarks()
|
||||||
gui_menu_builder.build_bookmark_menu(acct)
|
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
def on_cancel_button_clicked(self, widget):
|
def on_cancel_button_clicked(self, widget):
|
||||||
|
|
Loading…
Add table
Reference in a new issue