62 lines
2.1 KiB
Swift
62 lines
2.1 KiB
Swift
import SwiftUI
|
|
import AppKit
|
|
|
|
struct ModelCardRowView: View {
|
|
let model: any TranscriptionModel
|
|
let isDownloaded: Bool
|
|
let isCurrent: Bool
|
|
let downloadProgress: [String: Double]
|
|
let modelURL: URL?
|
|
|
|
// Actions
|
|
var deleteAction: () -> Void
|
|
var setDefaultAction: () -> Void
|
|
var downloadAction: () -> Void
|
|
var editAction: ((CustomCloudModel) -> Void)?
|
|
|
|
var body: some View {
|
|
Group {
|
|
switch model.provider {
|
|
case .local:
|
|
if let localModel = model as? LocalModel {
|
|
LocalModelCardView(
|
|
model: localModel,
|
|
isDownloaded: isDownloaded,
|
|
isCurrent: isCurrent,
|
|
downloadProgress: downloadProgress,
|
|
modelURL: modelURL,
|
|
deleteAction: deleteAction,
|
|
setDefaultAction: setDefaultAction,
|
|
downloadAction: downloadAction
|
|
)
|
|
}
|
|
case .nativeApple:
|
|
if let nativeAppleModel = model as? NativeAppleModel {
|
|
NativeAppleModelCardView(
|
|
model: nativeAppleModel,
|
|
isCurrent: isCurrent,
|
|
setDefaultAction: setDefaultAction
|
|
)
|
|
}
|
|
case .groq, .elevenLabs, .deepgram:
|
|
if let cloudModel = model as? CloudModel {
|
|
CloudModelCardView(
|
|
model: cloudModel,
|
|
isCurrent: isCurrent,
|
|
setDefaultAction: setDefaultAction
|
|
)
|
|
}
|
|
case .custom:
|
|
if let customModel = model as? CustomCloudModel {
|
|
CustomModelCardView(
|
|
model: customModel,
|
|
isCurrent: isCurrent,
|
|
setDefaultAction: setDefaultAction,
|
|
deleteAction: deleteAction,
|
|
editAction: editAction ?? { _ in }
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |