//
//  DeviceStorageHelper.swift
//  suixinkan
//
//  读取本机型号与可用存储，对齐 Android DeviceStorageHelper。
//

import Foundation
import UIKit

/// 设备存储快照，用于有线传图页设备信息面板。
struct DeviceStorageSnapshot: Equatable {
    let modelName: String
    let availableGbText: String
}

/// 设备存储信息读取工具。
enum DeviceStorageHelper {
    /// 读取当前设备型号与 Documents 目录可用空间。
    static func readStorageSnapshot() -> DeviceStorageSnapshot {
        let availableBytes = availableDocumentsBytes()
        let availableGb = Double(availableBytes) / 1024.0 / 1024.0 / 1024.0
        return DeviceStorageSnapshot(
            modelName: buildModelName(),
            availableGbText: String(format: "还剩 %.1fGB 可用", availableGb)
        )
    }

    private static func buildModelName() -> String {
        DeviceModelNameResolver.marketingName()
    }

    private static func availableDocumentsBytes() -> Int64 {
        let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
        guard let documentsURL else { return 0 }
        let values = try? documentsURL.resourceValues(forKeys: [.volumeAvailableCapacityForImportantUsageKey])
        if let capacity = values?.volumeAvailableCapacityForImportantUsage {
            return Int64(capacity)
        }
        if let attributes = try? FileManager.default.attributesOfFileSystem(forPath: documentsURL.path),
           let freeSize = attributes[.systemFreeSize] as? NSNumber {
            return freeSize.int64Value
        }
        return 0
    }
}
