From 85a5cfc57a134eeccec4b0656718ddc6c5e22ba2 Mon Sep 17 00:00:00 2001 From: Luna Date: Sat, 16 Feb 2019 22:59:20 -0300 Subject: [PATCH] make update_channel more flexible against non-guild chans ..to handle gdm edits --- litecord/blueprints/channels.py | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/litecord/blueprints/channels.py b/litecord/blueprints/channels.py index 585d6a6..28f6501 100644 --- a/litecord/blueprints/channels.py +++ b/litecord/blueprints/channels.py @@ -411,25 +411,39 @@ async def update_channel(channel_id): user_id = await token_check() ctype, guild_id = await channel_check(user_id, channel_id) - if ctype not in GUILD_CHANS: - raise ChannelNotFound('Can not edit non-guild channels.') + if ctype not in (ChannelType.GUILD_TEXT, ChannelType.GUILD_VOICE, + ChannelType.GROUP_DM): + raise ChannelNotFound('unable to edit unsupported chan type') - await channel_perm_check(user_id, channel_id, 'manage_channels') - j = validate(await request.get_json(), CHAN_UPDATE) + is_guild = ctype in GUILD_CHANS - # TODO: categories? + if is_guild: + await channel_perm_check(user_id, channel_id, 'manage_channels') + + j = validate(await request.get_json(), + CHAN_UPDATE if is_guild else GROUP_DM_UPDATE) + + # TODO: categories update_handler = { ChannelType.GUILD_TEXT: _update_text_channel, ChannelType.GUILD_VOICE: _update_voice_channel, + # ChannelType.GROUP_DM: _update_group_dm, }[ctype] - await _update_channel_common(channel_id, guild_id, j) + if is_guild: + await _update_channel_common(channel_id, guild_id, j) + await update_handler(channel_id, j) chan = await app.storage.get_channel(channel_id) + if is_guild: + await app.dispatcher.dispatch( + 'guild', guild_id, 'CHANNEL_UPDATE', chan) + else: + await app.dispatcher.dispatch( + 'channel', channel_id, 'CHANNEL_UPDATE', chan) - await app.dispatcher.dispatch('guild', guild_id, 'CHANNEL_UPDATE', chan) return jsonify(chan)