func fetchModels()

in HuggingChat-Mac/LocalSTT/AudioModelManager.swift [340:397]


    func fetchModels() {
        availableModels = []

        // First check what's already downloaded
        if let documents = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
            let modelPath = documents.appendingPathComponent(modelStorage).path
            // Check if the directory exists
            if FileManager.default.fileExists(atPath: modelPath) {
                localModelPath = modelPath
                do {
                    let downloadedModels = try FileManager.default.contentsOfDirectory(atPath: modelPath)
                    for model in downloadedModels where !localModels.contains(model) {
                        localModels.append(model)
                    }
                } catch {
                    print("Error enumerating files at \(modelPath): \(error.localizedDescription)")
                }
            }
        }

        localModels = WhisperKit.formatModelFiles(localModels)
        for availableLocalModel in availableLocalModels {
            if localModels.contains(availableLocalModel.id) {
                let fileSize = getDirectorySize(selectedModel: availableLocalModel.id)
                availableLocalModel.downloadState = .downloaded
                availableLocalModel.localURL = URL(fileURLWithPath: localModelPath).appendingPathComponent(availableLocalModel.id)
                availableLocalModel.size = fileSize
            } else {
                availableLocalModel.downloadState = .notDownloaded
                availableLocalModel.localURL = nil
                availableLocalModel.size = nil
            }
        }
//        for dwnModel in localModels {
//            if let modelIndex = availableLocalModels.firstIndex(where: { $0.id == dwnModel }) {
//                let fileSize = getDirectorySize(selectedModel: dwnModel)
//                availableLocalModels[modelIndex].downloadState = .downloaded
//                availableLocalModels[modelIndex].localURL = URL(fileURLWithPath: localModelPath).appendingPathComponent(dwnModel)
//                availableLocalModels[modelIndex].size = fileSize
//            }
//        }
        
//        for model in localModels {
//            if !availableModels.contains(model),
//               !disabledModels.contains(model) {
//                availableModels.append(model)
//            }
//        }
//        Task {
//            let remoteModels = try await WhisperKit.fetchAvailableModels(from: repoName)
//            for model in remoteModels {
//                if !availableModels.contains(model),
//                   !disabledModels.contains(model) {
//                    availableModels.append(model)
//                }
//            }
//        }
    }