metatext/ViewModels/Sources/ViewModels/View Models/ShareExtensionNavigationViewModel.swift

47 lines
1.5 KiB
Swift
Raw Normal View History

2020-12-10 02:44:06 +00:00
// 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 {
2021-01-17 07:14:17 +00:00
func newStatusViewModel(extensionContext: NSExtensionContext?) throws -> NewStatusViewModel {
2020-12-10 02:44:06 +00:00
let allIdentitiesService = try AllIdentitiesService(environment: environment)
guard let identity = try allIdentitiesService.mostRecentAuthenticatedIdentity()
else { throw ShareExtensionError.noAccountFound }
let identityService = try allIdentitiesService.identityService(id: identity.id)
2021-01-26 00:06:35 +00:00
let identityContext = IdentityContext(
2020-12-10 02:44:06 +00:00
identity: identity,
publisher: identityService.identityPublisher(immediate: false)
.assignErrorsToAlertItem(to: \.alertItem, on: self),
service: identityService,
environment: environment)
return NewStatusViewModel(
allIdentitiesService: allIdentitiesService,
2021-01-26 00:06:35 +00:00
identityContext: identityContext,
2021-01-10 05:56:15 +00:00
environment: environment,
2021-03-21 23:23:41 +00:00
identity: nil,
2021-01-11 22:45:30 +00:00
inReplyTo: nil,
2021-01-17 07:14:17 +00:00
redraft: nil,
2021-03-02 00:53:36 +00:00
directMessageTo: nil,
2021-01-17 07:14:17 +00:00
extensionContext: extensionContext)
2020-12-10 02:44:06 +00:00
}
}