Noobish1/WeatherRules

View on GitHub
App/CombinedExtension/CombinedTodayExtension/Objects/CombinedExtensionSettingsController.swift

Summary

Maintainability
A
0 mins
Test Coverage
import RxRelay
import WhatToWearCoreComponents
import WhatToWearExtensionCore

internal final class CombinedExtensionSettingsController: DefaultsBackedObservableControllerWithNonOptionalObject {
    // MARK: typealiases
    internal typealias Object = CombinedExtensionSettings

    // MARK: static properties
    internal static let shared = CombinedExtensionSettingsController()

    // MARK: properties
    internal let config: ControllerConfig
    internal let migrator: AnyMigrator<CombinedExtensionSettings>
    internal let relay: BehaviorRelay<CombinedExtensionSettings>

    // MARK: init
    private convenience init() {
        self.init(config: .combinedExtensionSettings, migrator: AnyMigrator(CombinedExtensionSettingsMigrator()))
    }

    internal init(config: ControllerConfig, migrator: AnyMigrator<CombinedExtensionSettings>) {
        self.config = config
        self.migrator = migrator
        self.relay = BehaviorRelay(value: Self.retrieve(config: config, migrator: migrator))
    }
}