metatext/ViewModels/Sources/ViewModels/View Models/ShareExtensionNavigationViewModel.swift
Justin Mazzocchi fe093d7e33
Renaming
2021-01-25 16:06:35 -08:00

45 lines
1.5 KiB
Swift

// Copyright © 2020 Metabolist. All rights reserved.
import Combine
import Foundation
import ServiceLayer
public enum ShareExtensionError: Error {
case noAccountFound
}
public final class ShareExtensionNavigationViewModel: ObservableObject {
@Published public var alertItem: AlertItem?
private let environment: AppEnvironment
public init(environment: AppEnvironment) {
self.environment = environment
}
}
public extension ShareExtensionNavigationViewModel {
func newStatusViewModel(extensionContext: NSExtensionContext?) throws -> NewStatusViewModel {
let allIdentitiesService = try AllIdentitiesService(environment: environment)
guard let identity = try allIdentitiesService.mostRecentAuthenticatedIdentity()
else { throw ShareExtensionError.noAccountFound }
let identityService = try allIdentitiesService.identityService(id: identity.id)
let identityContext = IdentityContext(
identity: identity,
publisher: identityService.identityPublisher(immediate: false)
.assignErrorsToAlertItem(to: \.alertItem, on: self),
service: identityService,
environment: environment)
return NewStatusViewModel(
allIdentitiesService: allIdentitiesService,
identityContext: identityContext,
environment: environment,
inReplyTo: nil,
redraft: nil,
extensionContext: extensionContext)
}
}