mirror of
https://github.com/danbee/persephone
synced 2025-03-04 08:39:11 +00:00
47 lines
937 B
Swift
47 lines
937 B
Swift
//
|
|
// MPDServerController.swift
|
|
// Persephone
|
|
//
|
|
// Created by Daniel Barber on 2019/4/28.
|
|
// Copyright © 2019 Dan Barber. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import ReSwift
|
|
|
|
class MPDServerController {
|
|
init(delegate: MPDClientDelegate? = nil) {
|
|
App.mpdClient = MPDClient(withDelegate: delegate)
|
|
|
|
App.store.subscribe(self) {
|
|
$0.select { $0.preferencesState.mpdServer }
|
|
}
|
|
}
|
|
|
|
func connect() {
|
|
let mpdServer = App.store.state.preferencesState.mpdServer
|
|
|
|
guard let host = mpdServer.hostOrDefault else { return }
|
|
|
|
App.mpdClient.connect(
|
|
host: host,
|
|
port: mpdServer.portOrDefault
|
|
)
|
|
}
|
|
|
|
func disconnect() {
|
|
App.mpdClient.disconnect()
|
|
}
|
|
}
|
|
|
|
extension MPDServerController: StoreSubscriber {
|
|
typealias StoreSubscriberStateType = MPDServer
|
|
|
|
func newState(state: MPDServer) {
|
|
guard App.mpdClient != nil else { return }
|
|
|
|
disconnect()
|
|
connect()
|
|
}
|
|
}
|