group topic support

This commit is contained in:
ingvar1995 2018-07-21 20:25:10 +03:00
parent 820b5a0253
commit 7e08be71e0
5 changed files with 22 additions and 0 deletions

View file

@ -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'),

View file

@ -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),

View file

@ -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
# ----------------------------------------------------------------------------------------------------------------- # -----------------------------------------------------------------------------------------------------------------

View file

@ -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

View file

@ -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