Files
irchad/app/frontend/src/stores/bufferStore.ts
2026-01-17 23:03:24 -05:00

48 lines
1.1 KiB
TypeScript

import { Buffer, type BufferOptions } from "@/lib/buffer.ts";
import { defineStore } from "pinia";
import { computed, ref } from "vue";
export const useBufferStore = defineStore("bufferStore", () => {
const buffers = ref({} as Record<string, Buffer>);
const activeBufferName = ref(null as string | null);
function setActiveBuffer(bufferName: string) {
const buffer = getBuffer(bufferName);
if (!buffer) return;
activeBufferName.value = bufferName;
buffer.resetLastSeen();
}
function addBuffer(bufferName: string, options: BufferOptions) {
buffers.value[bufferName] = new Buffer(options);
return buffers.value[bufferName];
}
function getBuffer(bufferName: string) {
return buffers.value[bufferName];
}
function delBuffer(bufferName: string) {
if (buffers.value[bufferName]) {
delete buffers.value[bufferName];
}
}
const activeBuffer = computed(() => {
if (activeBufferName.value) {
return buffers.value[activeBufferName.value];
}
});
return {
buffers,
activeBufferName,
activeBuffer,
addBuffer,
getBuffer,
delBuffer,
setActiveBuffer,
};
});