// SPDX-FileCopyrightText: 2026 John Burwell and contributors
// SPDX-License-Identifier: AGPL-3.0-or-later

import Foundation

enum ConnectedDeviceMirrorCache {
    nonisolated static func rootURL(for sourceID: URL, fileManager: FileManager = .default) -> URL {
        let applicationSupportURL = fileManager.urls(for: .applicationSupportDirectory, in: .userDomainMask).first
            ?? fileManager.homeDirectoryForCurrentUser.appendingPathComponent("Library/Application Support", isDirectory: true)

        return applicationSupportURL
            .appendingPathComponent("World Manager for Minecraft", isDirectory: true)
            .appendingPathComponent("ConnectedDeviceCache", isDirectory: true)
            .appendingPathComponent(sanitizedComponent(for: sourceID), isDirectory: true)
    }

    nonisolated static func purgeRootURL(for sourceID: URL, fileManager: FileManager = .default) throws {
        let rootURL = rootURL(for: sourceID, fileManager: fileManager)
        guard fileManager.fileExists(atPath: rootURL.path) else {
            return
        }

        try fileManager.removeItem(at: rootURL)
    }

    nonisolated private static func sanitizedComponent(for sourceID: URL) -> String {
        let rawValue = sourceID.absoluteString
        let allowed = CharacterSet.alphanumerics.union(CharacterSet(charactersIn: "-_."))

        let pieces = rawValue.unicodeScalars.map { scalar -> String in
            allowed.contains(scalar) ? String(scalar) : "_"
        }

        return String(pieces.joined().prefix(180))
    }
}
