mirror of https://gitlab.com/litecord/litecord.git
add gdm channel destruction
- channels: destroy pubsub channel when deleting a guild channel
This commit is contained in:
parent
d9283c92df
commit
39c4fc991b
|
|
@ -31,6 +31,9 @@ from litecord.schemas import (
|
|||
|
||||
from litecord.blueprints.checks import channel_check, channel_perm_check
|
||||
from litecord.system_messages import send_sys_message
|
||||
from litecord.blueprints.dm_channels import (
|
||||
gdm_add_recipient, gdm_remove_recipient, gdm_destroy
|
||||
)
|
||||
|
||||
log = Logger(__name__)
|
||||
bp = Blueprint('channels', __name__)
|
||||
|
|
@ -211,6 +214,8 @@ async def close_channel(channel_id):
|
|||
|
||||
await app.dispatcher.dispatch_guild(
|
||||
guild_id, 'CHANNEL_DELETE', chan)
|
||||
|
||||
await app.dispatcher.remove('channel', channel_id)
|
||||
return jsonify(chan)
|
||||
|
||||
if ctype == ChannelType.DM:
|
||||
|
|
@ -234,8 +239,17 @@ async def close_channel(channel_id):
|
|||
return jsonify(chan)
|
||||
|
||||
if ctype == ChannelType.GROUP_DM:
|
||||
# TODO: group dm
|
||||
pass
|
||||
await gdm_remove_recipient(channel_id, user_id)
|
||||
|
||||
gdm_count = await app.db.fetchval("""
|
||||
SELECT COUNT(*)
|
||||
FROM group_dm_members
|
||||
WHERE id = $1
|
||||
""", channel_id)
|
||||
|
||||
if gdm_count == 0:
|
||||
# destroy dm
|
||||
await gdm_destroy(channel_id)
|
||||
|
||||
raise ChannelNotFound()
|
||||
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ async def _gdm_create(user_id, peer_id) -> int:
|
|||
return channel_id
|
||||
|
||||
|
||||
async def _gdm_add_recipient(channel_id: int, peer_id: int, *, user_id=None):
|
||||
async def gdm_add_recipient(channel_id: int, peer_id: int, *, user_id=None):
|
||||
"""Add a recipient to a Group DM.
|
||||
|
||||
Dispatches:
|
||||
|
|
@ -96,6 +96,7 @@ async def _gdm_add_recipient(channel_id: int, peer_id: int, *, user_id=None):
|
|||
|
||||
await app.dispatcher.sub('channel', peer_id)
|
||||
|
||||
# TODO: if not user id, userid=peerid
|
||||
if user_id:
|
||||
await send_sys_message(
|
||||
app, channel_id, MessageType.RECIPIENT_ADD,
|
||||
|
|
@ -103,7 +104,7 @@ async def _gdm_add_recipient(channel_id: int, peer_id: int, *, user_id=None):
|
|||
)
|
||||
|
||||
|
||||
async def _gdm_remove_recipient(channel_id: int, peer_id: int, *, user_id=None):
|
||||
async def gdm_remove_recipient(channel_id: int, peer_id: int, *, user_id=None):
|
||||
"""Remove a member from a GDM.
|
||||
|
||||
Dispatches:
|
||||
|
|
@ -134,6 +135,32 @@ async def _gdm_remove_recipient(channel_id: int, peer_id: int, *, user_id=None):
|
|||
)
|
||||
|
||||
|
||||
async def gdm_destroy(channel_id):
|
||||
"""Destroy a Group DM."""
|
||||
chan = await app.storage.get_channel(channel_id)
|
||||
|
||||
await app.db.execute("""
|
||||
DELETE FROM group_dm_members
|
||||
WHERE id = $1
|
||||
""", channel_id)
|
||||
|
||||
await app.db.execute("""
|
||||
DELETE FROM group_dm_channels
|
||||
WHERE id = $1
|
||||
""", channel_id)
|
||||
|
||||
await app.db.execute("""
|
||||
DELETE FROM channels
|
||||
WHERE id = $1
|
||||
""", channel_id)
|
||||
|
||||
await app.dispatcher.dispatch(
|
||||
'channel', channel_id, 'CHANNEL_DELETE', chan
|
||||
)
|
||||
|
||||
await app.dispatcher.remove('channel', channel_id)
|
||||
|
||||
|
||||
@bp.route('/<int:dm_chan>/recipients/<int:peer_id>', methods=['PUT'])
|
||||
async def add_to_group_dm(dm_chan, peer_id):
|
||||
"""Adds a member to a group dm OR creates a group dm."""
|
||||
|
|
@ -160,7 +187,7 @@ async def add_to_group_dm(dm_chan, peer_id):
|
|||
user_id, other_id
|
||||
)
|
||||
|
||||
await _gdm_add_recipient(dm_chan, peer_id, user_id=user_id)
|
||||
await gdm_add_recipient(dm_chan, peer_id, user_id=user_id)
|
||||
|
||||
return jsonify(
|
||||
await app.storage.get_channel(dm_chan)
|
||||
|
|
@ -178,5 +205,5 @@ async def remove_from_group_dm(dm_chan, peer_id):
|
|||
if owner_id != user_id:
|
||||
raise Forbidden('You are now the owner of the group DM')
|
||||
|
||||
await _gdm_remove_recipient(dm_chan, peer_id)
|
||||
await gdm_remove_recipient(dm_chan, peer_id)
|
||||
return '', 204
|
||||
|
|
|
|||
Loading…
Reference in New Issue