stefanrenne/RxSonosLib

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

Summary

Maintainability
A
1 hr
Test Coverage
//
//  SetNextTrackInteractor.swift
//  RxSonosLib
//
//  Created by Stefan Renne on 18/04/2018.
//  Copyright © 2018 Uberweb. All rights reserved.
//

import Foundation
import RxSwift

struct SetNextTrackValues: RequestValues {
    let group: Group
}

class SetNextTrackInteractor: CompletableInteractor {
    
    typealias T = SetNextTrackValues
    
    private let transportRepository: TransportRepository
    
    init(transportRepository: TransportRepository) {
        self.transportRepository = transportRepository
    }
    
    func buildInteractorObservable(values: SetNextTrackValues?) -> Completable {
        guard let group = values?.group else {
            return Completable.error(SonosError.invalidImplementation)
        }
        
        return transportRepository
            .setNextTrack(for: group.master)
    }
}