diff --git a/irchad-web/src/components/BufferList.vue b/irchad-web/src/components/BufferList.vue index 6491dd3..b195e8d 100644 --- a/irchad-web/src/components/BufferList.vue +++ b/irchad-web/src/components/BufferList.vue @@ -1,17 +1,23 @@ - - - {{ buf }} + setActiveBuffer(item.id)" + > + + {{ bufName }} + + + diff --git a/irchad-web/src/components/Chat.vue b/irchad-web/src/components/Chat.vue index 2c3083d..21829f8 100644 --- a/irchad-web/src/components/Chat.vue +++ b/irchad-web/src/components/Chat.vue @@ -5,21 +5,26 @@ import { useIRCStore } from "@/stores/irc"; const store = useIRCStore(); const inputBuffer = ref(); -onMounted(() => { - store.connect(); -}); +onMounted(store.connect); function send() { store.sendActiveBuffer(inputBuffer.value); inputBuffer.value = ""; } + + + + {{ store.activeBufferName }} + {{ store.activeBuffer?.topic }} + + { function setActiveBuffer(bufferName) { activeBufferName.value = bufferName; + resetBufferLastSeen(bufferName); + } + + function resetBufferLastSeen(bufferName) { + const buffer = getBuffer(bufferName); + if (!buffer) return; + buffer.lastSeenIdx = buffer.messages.length; } const client = new Client({ @@ -51,13 +58,6 @@ export const useIRCStore = defineStore("irc", () => { function sendActiveBuffer(message) { client.say(activeBufferName.value, message); - // const buffer = getBuffer(activeBufferName.value); - // - // buffer.messages.push({ - // nick: clientInfo.value.nick, - // message, - // time: Date.now(), - // }); } function isMe(target) { @@ -69,6 +69,7 @@ export const useIRCStore = defineStore("irc", () => { messages: [], topic: "", users: [], + lastSeenIdx: 0, }; return buffers.value[bufferName]; } @@ -121,6 +122,10 @@ export const useIRCStore = defineStore("irc", () => { buffer = getBuffer(message.target); } buffer.messages.push(message); + + if (activeBufferName.value) { + resetBufferLastSeen(activeBufferName.value); + } }); client.on("join", (ev) => { @@ -152,6 +157,12 @@ export const useIRCStore = defineStore("irc", () => { } }); + client.on("topic", ({ topic, channel }) => { + const buffer = getBuffer(channel); + if (!buffer) return; + buffer.topic = topic; + }); + client.on("part", ({ nick, channel }) => { if (isMe(nick)) { delBuffer(channel);
{{ store.activeBufferName }}