stefanrenne/RxSonosLib

View on GitHub
RxSonosLib/Framework/Domain/Interactors/SetMuteInteractor.swift

Summary

Maintainability
A
2 hrs
Test Coverage
//
//  SetMuteInteractor.swift
//  RxSonosLib
//
//  Created by Stefan Renne on 20/04/2018.
//  Copyright © 2018 Uberweb. All rights reserved.
//

import Foundation
import RxSwift

struct SetMuteValues: RequestValues {
    let room: Room
    let enabled: Bool
}

class SetMuteInteractor: CompletableInteractor {
    
    typealias T = SetMuteValues
    
    private let renderingControlRepository: RenderingControlRepository
    
    init(renderingControlRepository: RenderingControlRepository) {
        self.renderingControlRepository = renderingControlRepository
    }
    
    func buildInteractorObservable(values: SetMuteValues?) -> Completable {
        
        guard let room = values?.room,
              let enabled = values?.enabled else {
            return Completable.error(SonosError.invalidImplementation)
        }
        
        return renderingControlRepository
            .setMute(room: room, enabled: enabled)
    }
}