Added channel list.

This commit is contained in:
retoor 2025-02-13 20:21:34 +01:00
parent 3baa6e53df
commit 37da903936
5 changed files with 34 additions and 9 deletions

View File

@ -37,6 +37,19 @@ class ChannelMemberService(BaseService):
async for model in self.query("SELECT channel_member.* FROM channel_member INNER JOIN channel ON (channel.uid = channel_member.channel_uid and channel.tag = 'dm') INNER JOIN channel_member AS channel_member2 ON(channel_member2.channel_uid = channel.uid AND channel_member2.user_uid = :to_user) WHERE channel_member.user_uid=:from_user " ,dict(from_user=from_user, to_user=to_user)):
return model
return None
async def get_other_dm_user(self, channel_uid, user_uid):
channel_member = await self.get(channel_uid=channel_uid, user_uid=user_uid)
channel = await self.services.channel.get(uid=channel_member['channel_uid'])
if channel["tag"] != "dm":
print("NONT!\n", flush=True)
return None
print("YEAHH",flush=True)
async for model in self.services.channel_member.find(channel_uid=channel_uid):
print("huh!!!",model['uid'],flush=True)
if model["uid"] != channel_member['uid']:
print("GOOOD!!",flush=True)
return await self.services.user.get(uid=model["user_uid"])
async def create_dm(self,channel_uid, from_user_uid, to_user_uid):
result = await self.create(channel_uid, from_user_uid)

View File

@ -54,8 +54,10 @@ class ChannelMessageService(BaseService):
async def offset(self, channel_uid, offset=0):
results = []
async for model in self.query("SELECT * FROM channel_message WHERE channel_uid=:channel_uid ORDER BY created_at DESC LIMIT 60 OFFSET :offset",dict(channel_uid=channel_uid, offset=offset)):
results.append(model)
try:
async for model in self.query("SELECT * FROM channel_message WHERE channel_uid=:channel_uid ORDER BY created_at DESC LIMIT 60 OFFSET :offset",dict(channel_uid=channel_uid, offset=offset)):
results.append(model)
except:
pass
results.sort(key=lambda x: x['created_at'])
return results

View File

@ -34,7 +34,7 @@
<h2 class="no-select">Chat Rooms</h2>
<ul>
{% for channel in channels %}
<li><a class="no-select" href="/web/{{channel['channel_uid']}}.html">{{channel['label']}}</a></li>
<li><a class="no-select" href="/channel/{{channel['uid']}}.html">{{channel['name']}}</a></li>
{% endfor %}
</ul>
</aside>

View File

@ -48,8 +48,8 @@
function updateLayout() {
const messagesContainer = document.querySelector(".chat-messages");
messagesContainer.scrollTop = messagesContainer.scrollHeight + 1000;
//messagesContainer.scrollTop = messagesContainer.scrollHeight + 1000;
updateTimes();
let previousUser = null;
document.querySelectorAll(".message").forEach((message) => {
@ -60,6 +60,9 @@
message.classList.remove("switch-user");
}
});
const lastMessage = messagesContainer.querySelector(".message:last-child");
lastMessage.scrollIntoView({ inline: "nearest" });
}
setInterval(updateTimes, 1000);
@ -81,7 +84,7 @@
updateLayout();
setTimeout(()=>{
updateLayout()
},200)
},1000)
});
initInputField(document.querySelector("textarea"));

View File

@ -48,6 +48,13 @@ class WebView(BaseView):
)]
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)
item = {}
other_user = await self.app.services.channel_member.get_other_dm_user(subscribed_channel["channel_uid"], self.session.get("uid"))
if other_user:
item["name"] = other_user["nick"]
item["uid"] = other_user["uid"]
else:
item["name"] = subscribed_channel["label"]
item["uid"] = subscribed_channel["channel_uid"]
channels.append(item)
return await self.render_template("web.html", {"channel": channel,"user": user,"messages": messages , "channels": channels})