group topic support
This commit is contained in:
parent
820b5a0253
commit
7e08be71e0
5 changed files with 22 additions and 0 deletions
|
@ -181,6 +181,9 @@ class GroupMenuGenerator(BaseContactMenuGenerator):
|
||||||
menu = (builder
|
menu = (builder
|
||||||
.with_action(util_ui.tr('Set alias'), lambda: main_screen.set_alias(number))
|
.with_action(util_ui.tr('Set alias'), lambda: main_screen.set_alias(number))
|
||||||
.with_submenu(copy_menu_builder)
|
.with_submenu(copy_menu_builder)
|
||||||
|
.with_optional_action(util_ui.tr('Set topic'),
|
||||||
|
lambda: groups_service.set_group_topic(self._contact),
|
||||||
|
self._contact.is_moderator_or_founder())
|
||||||
.with_action(util_ui.tr('Reconnect to group'),
|
.with_action(util_ui.tr('Reconnect to group'),
|
||||||
lambda: groups_service.reconnect_to_group(self._contact.number))
|
lambda: groups_service.reconnect_to_group(self._contact.number))
|
||||||
.with_optional_action(util_ui.tr('Disconnect from group'),
|
.with_optional_action(util_ui.tr('Disconnect from group'),
|
||||||
|
|
|
@ -33,6 +33,12 @@ class GroupChat(contact.Contact, ToxSave):
|
||||||
def get_self_name(self):
|
def get_self_name(self):
|
||||||
return self._peers[0].name
|
return self._peers[0].name
|
||||||
|
|
||||||
|
def get_self_role(self):
|
||||||
|
return self._peers[0].role
|
||||||
|
|
||||||
|
def is_moderator_or_founder(self):
|
||||||
|
return self.get_self_role() <= constants.TOX_GROUP_ROLE['MODERATOR']
|
||||||
|
|
||||||
def add_peer(self, peer_id, is_current_user=False):
|
def add_peer(self, peer_id, is_current_user=False):
|
||||||
peer = GroupChatPeer(peer_id,
|
peer = GroupChatPeer(peer_id,
|
||||||
self._tox.group_peer_get_name(self._number, peer_id),
|
self._tox.group_peer_get_name(self._number, peer_id),
|
||||||
|
|
|
@ -76,6 +76,17 @@ class GroupsService(tox_save.ToxSave):
|
||||||
group.name = self._tox.group_get_name(group.number)
|
group.name = self._tox.group_get_name(group.number)
|
||||||
group.status_message = self._tox.group_get_topic(group.number)
|
group.status_message = self._tox.group_get_topic(group.number)
|
||||||
|
|
||||||
|
def set_group_topic(self, group):
|
||||||
|
if not group.is_moderator_or_founder():
|
||||||
|
return
|
||||||
|
text = util_ui.tr('New topic for group {}:'.format(group.name))
|
||||||
|
title = util_ui.tr('Set group topic')
|
||||||
|
topic, ok = util_ui.text_dialog(text, title, group.status_message)
|
||||||
|
if not ok or not topic:
|
||||||
|
return
|
||||||
|
self._tox.group_set_topic(group.number, topic)
|
||||||
|
group.status_message = topic
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
# Peers list
|
# Peers list
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -399,6 +399,7 @@ def group_peer_join(contacts_provider, groups_service):
|
||||||
group = contacts_provider.get_group_by_number(group_number)
|
group = contacts_provider.get_group_by_number(group_number)
|
||||||
group.add_peer(peer_id)
|
group.add_peer(peer_id)
|
||||||
invoke_in_main_thread(groups_service.generate_peers_list)
|
invoke_in_main_thread(groups_service.generate_peers_list)
|
||||||
|
invoke_in_main_thread(groups_service.update_group_info, group)
|
||||||
|
|
||||||
return wrapped
|
return wrapped
|
||||||
|
|
||||||
|
|
|
@ -1851,6 +1851,7 @@ class Tox:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
error = c_int()
|
error = c_int()
|
||||||
|
topic = bytes(topic, 'utf-8')
|
||||||
result = Tox.libtoxcore.tox_group_set_topic(self._tox_pointer, group_number, topic, len(topic), byref(error))
|
result = Tox.libtoxcore.tox_group_set_topic(self._tox_pointer, group_number, topic, len(topic), byref(error))
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue