Added channel list.

This commit is contained in:
retoor 2025-02-13 19:47:05 +01:00
parent b6eba60843
commit 3baa6e53df
3 changed files with 17 additions and 123 deletions

View File

@ -86,6 +86,15 @@ class ChannelService(BaseService):
if (datetime.fromisoformat(now()) - datetime.fromisoformat(user["last_ping"])).total_seconds() < 20:
yield user
async def get_for_user(self, user_uid):
async for channel_member in self.services.channel_member.find(
user_uid=user_uid,
is_banned=False,
deleted_at=None,
):
channel = await self.get(uid=channel_member["channel_uid"])
yield channel
async def ensure_public_channel(self, created_by_uid):
model = await self.get(is_listed=True, tag="public")
is_moderator = False

View File

@ -33,11 +33,9 @@
<aside class="sidebar">
<h2 class="no-select">Chat Rooms</h2>
<ul>
<li><a class="no-select" href="#">General</a></li>
<li><a class="no-select" href="#">Development</a></li>
<li><a class="no-select" href="#">Support</a></li>
<li><a class="no-select" href="#">Random</a></li>
{% for channel in channels %}
<li><a class="no-select" href="/web/{{channel['channel_uid']}}.html">{{channel['label']}}</a></li>
{% endfor %}
</ul>
</aside>
{% endblock %}

View File

@ -46,121 +46,8 @@ class WebView(BaseView):
messages = [await self.app.services.channel_message.to_extended_dict(message) for message in await self.app.services.channel_message.offset(
channel["uid"]
)]
return await self.render_template("web.html", {"channel": channel,"user": user,"messages": messages})
async def get2(self):
if self.login_required and not self.session.get("logged_in"):
return web.HTTPFound("/")
channel = None
if not self.request.match_info.get("channel"):
channel = await self.app.services.channel.get(
tag="public",deleted_at=None
)
if channel:
return web.HTTPFound("/channel/{}.html".format(channel["uid"]))
if not channel:
print(self.request.match_info.get("channel"), flush=True)
channel = await self.app.services.channel.get(
uid=str(self.request.match_info.get("channel"))
)
if channel:
print(f'found {channel["uid"]} {channel["name"]}', flush=True)
if not channel:
name = "#" + str(self.request.match_info.get("channel")).lstrip("#")
print("TADAAA:",name, flush=True)
channel = await self.app.services.channel.get(
label=name,deleted_at=None
)
if not channel:
user = await self.app.services.user.get(uid=self.request.match_info.get("channel"))
if not user:
print("HIERRR EXIT\n",flush=True)
return web.HTTPNotFound()
print("FOUND USer: ",user['username'],flush=True)
own_channels = self.app.services.channel_member.find(
user_uid=self.session.get("uid"),deleted_at=None
)
user_channels = self.app.services.channel_member.find(
user_uid=user['uid'],deleted_at=None
)
found_channel = False
async for user_channel in user_channels:
if found_channel:
break
async for own_channel in own_channels:
if user_channel["channel_uid"] == own_channel["channel_uid"]:
channel = await self.app.services.channel.get(uid=user_channel["channel_uid"])
if channel['tag'] == 'dm':
found_channel = True
print("FOUND DM\n",flush=True)
break
channel = None
else:
print("Channel mistmatch!\n",flush=True)
if found_channel:
print(f"FOUND CHANNEL; {channel['uid']}\n",flush=True)
return web.HTTPFound("/channel/{}.html".format(channel["uid"]))
channel = await self.app.services.channel.create(
label="Direct Message",
created_by_uid=self.session.get("uid"),
tag="dm",
description="Direct Chat",
is_private=True,
is_listed=True
)
print(f"UID NEW CHANNELr: {channel['uid']}\n",flush=True)
channel_member_self = await self.app.services.channel_member.create(
channel_uid=channel['uid'],
user_uid=self.session.get("uid"),
is_moderator=True
)
print(f"UID NEW CHANNEL_MEMBER SELF: {channel_member_self['uid']}\n",flush=True)
channel_member_user = await self.app.services.channel_member.create(
channel_uid=channel['uid'],
user_uid=user["uid"],
is_moderator=True
)
print(f"UID NEW CHANNEL_MEMBER USER: {channel_member_user['uid']}\n",flush=True)
self.app.db.commit()
print(f"REDIRECT NAAR GOEDE: {channel['uid']}\n",flush=True)
return web.HTTPFound("/channel/{}.html".format(channel["uid"]))
if not channel:
print("NOT found!\n",flush=True)
return web.HTTPNotFound()
print(channel['uid'],":",self.session.get('uid'),flush=True)
from pprint import pprint as pp
pp(channel)
channel_member = await self.app.services.channel_member.get(
channel_uid=channel["uid"], user_uid=self.session.get("uid"),deleted_at=None
)
if not channel_member:
print("NO CHANNEL_MEMBER")
return web.HTTPNotFound()
print("HIER\n",flush=True)
print("UUID=",self.session.get("uid"),flush=True)
user = await self.app.services.user.get(uid=self.session.get("uid"))
if not user:
return web.HTTPNotFound()
if self.request.path.endswith(".json"):
return await super().get()
messages = [await self.app.services.channel_message.to_extended_dict(message) for message in await self.app.services.channel_message.offset(
channel["uid"]
)]
return await self.render_template("web.html", {"channel": channel_member,"user": user,"messages": messages})
channels = []
async for subscribed_channel in self.app.services.channel_member.find(user_uid=self.session.get("uid"), deleted_at=None, is_banned=False):
print("CHANNELL!!\n",flush=True)
channels.append(subscribed_channel)
return await self.render_template("web.html", {"channel": channel,"user": user,"messages": messages , "channels": channels})