Files
CodeNomad/packages/ui/src/stores/attachments.ts
2025-11-17 12:06:58 +00:00

48 lines
1.4 KiB
TypeScript

import { createSignal } from "solid-js"
import type { Attachment } from "../types/attachment"
const [attachments, setAttachments] = createSignal<Map<string, Attachment[]>>(new Map())
function getSessionKey(instanceId: string, sessionId: string): string {
return `${instanceId}:${sessionId}`
}
function getAttachments(instanceId: string, sessionId: string): Attachment[] {
const key = getSessionKey(instanceId, sessionId)
return attachments().get(key) || []
}
function addAttachment(instanceId: string, sessionId: string, attachment: Attachment) {
const key = getSessionKey(instanceId, sessionId)
setAttachments((prev) => {
const next = new Map(prev)
const existing = next.get(key) || []
next.set(key, [...existing, attachment])
return next
})
}
function removeAttachment(instanceId: string, sessionId: string, attachmentId: string) {
const key = getSessionKey(instanceId, sessionId)
setAttachments((prev) => {
const next = new Map(prev)
const existing = next.get(key) || []
next.set(
key,
existing.filter((a) => a.id !== attachmentId),
)
return next
})
}
function clearAttachments(instanceId: string, sessionId: string) {
const key = getSessionKey(instanceId, sessionId)
setAttachments((prev) => {
const next = new Map(prev)
next.delete(key)
return next
})
}
export { getAttachments, addAttachment, removeAttachment, clearAttachments }