metatext/ServiceLayer/Sources/ServiceLayer/Entities/AppEnvironment.swift

60 lines
2 KiB
Swift
Raw Normal View History

2020-08-02 22:23:01 +00:00
// Copyright © 2020 Metabolist. All rights reserved.
import Foundation
2020-08-31 01:40:58 +00:00
import HTTP
2020-08-30 23:33:11 +00:00
import Mastodon
2020-09-01 07:33:49 +00:00
import UserNotifications
2020-08-02 22:23:01 +00:00
2020-08-31 10:21:01 +00:00
public struct AppEnvironment {
2020-08-12 07:24:39 +00:00
let session: Session
2020-08-12 09:01:21 +00:00
let webAuthSessionType: WebAuthSession.Type
let keychainServiceType: KeychainService.Type
2020-08-18 05:13:37 +00:00
let userDefaults: UserDefaults
2020-09-01 07:33:49 +00:00
let userNotificationClient: UserNotificationClient
2020-08-18 05:13:37 +00:00
let inMemoryContent: Bool
2020-09-01 07:33:49 +00:00
let identityFixture: IdentityFixture?
2020-08-31 10:21:01 +00:00
public init(session: Session,
webAuthSessionType: WebAuthSession.Type,
keychainServiceType: KeychainService.Type,
userDefaults: UserDefaults,
2020-09-01 07:33:49 +00:00
userNotificationClient: UserNotificationClient,
inMemoryContent: Bool,
identityFixture: IdentityFixture?) {
2020-08-31 10:21:01 +00:00
self.session = session
self.webAuthSessionType = webAuthSessionType
self.keychainServiceType = keychainServiceType
self.userDefaults = userDefaults
2020-09-01 07:33:49 +00:00
self.userNotificationClient = userNotificationClient
2020-08-31 10:21:01 +00:00
self.inMemoryContent = inMemoryContent
2020-09-01 07:33:49 +00:00
self.identityFixture = identityFixture
2020-08-31 10:21:01 +00:00
}
2020-08-12 07:24:39 +00:00
}
2020-08-31 10:21:01 +00:00
public extension AppEnvironment {
2020-09-01 07:33:49 +00:00
struct IdentityFixture {
public let id: UUID
public let instanceURL: URL
public let instance: Instance?
public let account: Account?
public init(id: UUID, instanceURL: URL, instance: Instance?, account: Account?) {
self.id = id
self.instanceURL = instanceURL
self.instance = instance
self.account = account
}
}
static func live(userNotificationCenter: UNUserNotificationCenter) -> Self {
Self(
session: Session(configuration: .default),
webAuthSessionType: LiveWebAuthSession.self,
keychainServiceType: LiveKeychainService.self,
userDefaults: .standard,
userNotificationClient: .live(userNotificationCenter),
inMemoryContent: false,
identityFixture: nil)
}
2020-08-02 22:23:01 +00:00
}