import Foundation

// 传输历史 / 消息记录的本地持久化（修「重启清空」）。落 Application Support 下的 JSON 文件——
// 不进 Documents（那是「收到的文件」对用户可见的目录），也不进 UserDefaults（记录可能较多）。
// 原生侧是这两类记录的真源：引擎只过桥推增量，原生加载 / 追加 / 删除 / 落盘（见 EngineController）。
enum RecordsStore
{
    private static func fileURL(_ name: String) -> URL?
    {
        guard let dir = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first
        else { return nil }
        try? FileManager.default.createDirectory(at: dir, withIntermediateDirectories: true)
        return dir.appendingPathComponent("cdrop-\(name).json")
    }

    static func save<T: Encodable>(_ value: T, _ name: String)
    {
        guard let url = fileURL(name), let data = try? JSONEncoder().encode(value) else { return }
        try? data.write(to: url, options: .atomic)
    }

    static func load<T: Decodable>(_ type: T.Type, _ name: String) -> T?
    {
        guard let url = fileURL(name), let data = try? Data(contentsOf: url) else { return nil }
        return try? JSONDecoder().decode(type, from: data)
    }

    static func clear(_ name: String)
    {
        guard let url = fileURL(name) else { return }
        try? FileManager.default.removeItem(at: url)
    }
}
