28 lines
862 B
TypeScript
28 lines
862 B
TypeScript
|
|
import { existsSync, readdirSync, readFileSync } from "node:fs"
|
||
|
|
import { join } from "node:path"
|
||
|
|
import type { StoredMessageMeta } from "../types"
|
||
|
|
import { getMessageDir } from "./message-dir"
|
||
|
|
|
||
|
|
export function readMessages(sessionID: string): StoredMessageMeta[] {
|
||
|
|
const messageDir = getMessageDir(sessionID)
|
||
|
|
if (!messageDir || !existsSync(messageDir)) return []
|
||
|
|
|
||
|
|
const messages: StoredMessageMeta[] = []
|
||
|
|
for (const file of readdirSync(messageDir)) {
|
||
|
|
if (!file.endsWith(".json")) continue
|
||
|
|
try {
|
||
|
|
const content = readFileSync(join(messageDir, file), "utf-8")
|
||
|
|
messages.push(JSON.parse(content))
|
||
|
|
} catch {
|
||
|
|
continue
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return messages.sort((a, b) => {
|
||
|
|
const aTime = a.time?.created ?? 0
|
||
|
|
const bTime = b.time?.created ?? 0
|
||
|
|
if (aTime !== bTime) return aTime - bTime
|
||
|
|
return a.id.localeCompare(b.id)
|
||
|
|
})
|
||
|
|
}
|