Files
multi-simadmin/apps/ios/Sources/MultiSimAdmin/Services/DefaultContainer.swift
T

74 lines
2.4 KiB
Swift

import Foundation
enum DefaultContainer {
static func documentFileURL(_ name: String) -> URL {
let directory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
return directory.appendingPathComponent(name)
}
@MainActor
static func makeFleetModel() -> FleetViewModel {
FleetViewModel(
repository: FileInstanceRepository(location: documentFileURL("instances.json")),
probe: ConnectionProbe(client: SimAdminClient()),
credentials: KeychainCredentialStore()
)
}
@MainActor
static func makeMessagesModel() -> MessagesViewModel {
MessagesViewModel(
repository: FileInstanceRepository(location: documentFileURL("instances.json")),
service: MessageService(
client: SimAdminClient(),
sessions: InstanceSessionStore(),
credentials: KeychainCredentialStore()
)
)
}
@MainActor
static func makeNotificationsModel() -> NotificationsViewModel {
NotificationsViewModel(
repository: FileInstanceRepository(location: documentFileURL("instances.json")),
service: NotificationService(
client: SimAdminClient(),
sessions: InstanceSessionStore(),
credentials: KeychainCredentialStore()
)
)
}
@MainActor
static func makeLogsModel() -> LogsViewModel {
let store = FileLogStore(location: documentFileURL("log-center.json"))
return LogsViewModel(
repository: FileInstanceRepository(location: documentFileURL("instances.json")),
service: LogCenterService(
client: SimAdminClient(),
sessions: InstanceSessionStore(),
credentials: KeychainCredentialStore(),
store: store
),
store: store
)
}
@MainActor
static func makeSettingsModel() -> SettingsViewModel {
SettingsViewModel(store: FileLogStore(location: documentFileURL("log-center.json")))
}
@MainActor
static func makeDeviceModel(instance: Instance) -> DeviceViewModel {
DeviceViewModel(
instance: instance,
service: DeviceService(
client: SimAdminClient(),
sessions: InstanceSessionStore(),
credentials: KeychainCredentialStore()
)
)
}
}