diff --git a/Persephone.xcodeproj/xcshareddata/xcschemes/Persephone-iOS.xcscheme b/Persephone.xcodeproj/xcshareddata/xcschemes/Persephone-iOS.xcscheme new file mode 100644 index 0000000..68ab8fd --- /dev/null +++ b/Persephone.xcodeproj/xcshareddata/xcschemes/Persephone-iOS.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Resources/export/iosAppIcon.png b/Resources/export/iosAppIcon.png new file mode 100644 index 0000000..2e41614 Binary files /dev/null and b/Resources/export/iosAppIcon.png differ diff --git a/Resources/export/iosAppIcon@2x.png b/Resources/export/iosAppIcon@2x.png new file mode 100644 index 0000000..7b6a09a Binary files /dev/null and b/Resources/export/iosAppIcon@2x.png differ diff --git a/Resources/export/nextTrackButtonHugeiOS.pdf b/Resources/export/nextTrackButtonHugeiOS.pdf new file mode 100644 index 0000000..c1687a6 Binary files /dev/null and b/Resources/export/nextTrackButtonHugeiOS.pdf differ diff --git a/Resources/export/nextTrackButtonHugeiOS.png b/Resources/export/nextTrackButtonHugeiOS.png new file mode 100644 index 0000000..d3e38bf Binary files /dev/null and b/Resources/export/nextTrackButtonHugeiOS.png differ diff --git a/Resources/export/nextTrackButtonHugeiOS@2x.png b/Resources/export/nextTrackButtonHugeiOS@2x.png new file mode 100644 index 0000000..3342900 Binary files /dev/null and b/Resources/export/nextTrackButtonHugeiOS@2x.png differ diff --git a/Resources/export/nextTrackButtonHugeiOS@3x.png b/Resources/export/nextTrackButtonHugeiOS@3x.png new file mode 100644 index 0000000..5131eda Binary files /dev/null and b/Resources/export/nextTrackButtonHugeiOS@3x.png differ diff --git a/Resources/export/nextTrackButtonLargeiOS.pdf b/Resources/export/nextTrackButtonLargeiOS.pdf index 30c8349..9f2f974 100644 Binary files a/Resources/export/nextTrackButtonLargeiOS.pdf and b/Resources/export/nextTrackButtonLargeiOS.pdf differ diff --git a/Resources/export/pauseButtonHugeiOS.pdf b/Resources/export/pauseButtonHugeiOS.pdf new file mode 100644 index 0000000..b47299f Binary files /dev/null and b/Resources/export/pauseButtonHugeiOS.pdf differ diff --git a/Resources/export/pauseButtonHugeiOS.png b/Resources/export/pauseButtonHugeiOS.png new file mode 100644 index 0000000..29d5497 Binary files /dev/null and b/Resources/export/pauseButtonHugeiOS.png differ diff --git a/Resources/export/pauseButtonHugeiOS@2x.png b/Resources/export/pauseButtonHugeiOS@2x.png new file mode 100644 index 0000000..cf1ffcd Binary files /dev/null and b/Resources/export/pauseButtonHugeiOS@2x.png differ diff --git a/Resources/export/pauseButtonHugeiOS@3x.png b/Resources/export/pauseButtonHugeiOS@3x.png new file mode 100644 index 0000000..6115b41 Binary files /dev/null and b/Resources/export/pauseButtonHugeiOS@3x.png differ diff --git a/Resources/export/pauseButtonLargeiOS.pdf b/Resources/export/pauseButtonLargeiOS.pdf index 0680892..4f49630 100644 Binary files a/Resources/export/pauseButtonLargeiOS.pdf and b/Resources/export/pauseButtonLargeiOS.pdf differ diff --git a/Resources/export/playButtonHugeiOS.pdf b/Resources/export/playButtonHugeiOS.pdf new file mode 100644 index 0000000..81115af Binary files /dev/null and b/Resources/export/playButtonHugeiOS.pdf differ diff --git a/Resources/export/playButtonHugeiOS.png b/Resources/export/playButtonHugeiOS.png new file mode 100644 index 0000000..a8e7f2c Binary files /dev/null and b/Resources/export/playButtonHugeiOS.png differ diff --git a/Resources/export/playButtonHugeiOS@2x.png b/Resources/export/playButtonHugeiOS@2x.png new file mode 100644 index 0000000..9638f00 Binary files /dev/null and b/Resources/export/playButtonHugeiOS@2x.png differ diff --git a/Resources/export/playButtonHugeiOS@3x.png b/Resources/export/playButtonHugeiOS@3x.png new file mode 100644 index 0000000..a620610 Binary files /dev/null and b/Resources/export/playButtonHugeiOS@3x.png differ diff --git a/Resources/export/playButtonLargeiOS.pdf b/Resources/export/playButtonLargeiOS.pdf index faad7a1..38ed773 100644 Binary files a/Resources/export/playButtonLargeiOS.pdf and b/Resources/export/playButtonLargeiOS.pdf differ diff --git a/Resources/export/prevTrackButtonHugeiOS.pdf b/Resources/export/prevTrackButtonHugeiOS.pdf new file mode 100644 index 0000000..d4eb770 Binary files /dev/null and b/Resources/export/prevTrackButtonHugeiOS.pdf differ diff --git a/Resources/export/prevTrackButtonHugeiOS.png b/Resources/export/prevTrackButtonHugeiOS.png new file mode 100644 index 0000000..1f813bc Binary files /dev/null and b/Resources/export/prevTrackButtonHugeiOS.png differ diff --git a/Resources/export/prevTrackButtonHugeiOS@2x.png b/Resources/export/prevTrackButtonHugeiOS@2x.png new file mode 100644 index 0000000..1959763 Binary files /dev/null and b/Resources/export/prevTrackButtonHugeiOS@2x.png differ diff --git a/Resources/icons.sketch b/Resources/icons.sketch index 2a5d316..fb6fb32 100644 Binary files a/Resources/icons.sketch and b/Resources/icons.sketch differ diff --git a/iOS/Assets.xcassets/Contents.json b/iOS/Assets.xcassets/Contents.json index da4a164..73c0059 100644 --- a/iOS/Assets.xcassets/Contents.json +++ b/iOS/Assets.xcassets/Contents.json @@ -1,6 +1,6 @@ { "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/iOS/Assets.xcassets/nextTrackButtonHugeiOS.imageset/Contents.json b/iOS/Assets.xcassets/nextTrackButtonHugeiOS.imageset/Contents.json new file mode 100644 index 0000000..1e7587e --- /dev/null +++ b/iOS/Assets.xcassets/nextTrackButtonHugeiOS.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "nextTrackButtonHugeiOS.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "template" + } +} diff --git a/iOS/Assets.xcassets/nextTrackButtonHugeiOS.imageset/nextTrackButtonHugeiOS.pdf b/iOS/Assets.xcassets/nextTrackButtonHugeiOS.imageset/nextTrackButtonHugeiOS.pdf new file mode 100644 index 0000000..c1687a6 Binary files /dev/null and b/iOS/Assets.xcassets/nextTrackButtonHugeiOS.imageset/nextTrackButtonHugeiOS.pdf differ diff --git a/iOS/Assets.xcassets/pauseButtonHugeiOS.imageset/Contents.json b/iOS/Assets.xcassets/pauseButtonHugeiOS.imageset/Contents.json new file mode 100644 index 0000000..62a34b5 --- /dev/null +++ b/iOS/Assets.xcassets/pauseButtonHugeiOS.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "pauseButtonHugeiOS.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "template" + } +} diff --git a/iOS/Assets.xcassets/pauseButtonHugeiOS.imageset/pauseButtonHugeiOS.pdf b/iOS/Assets.xcassets/pauseButtonHugeiOS.imageset/pauseButtonHugeiOS.pdf new file mode 100644 index 0000000..b47299f Binary files /dev/null and b/iOS/Assets.xcassets/pauseButtonHugeiOS.imageset/pauseButtonHugeiOS.pdf differ diff --git a/iOS/Assets.xcassets/playButtonHugeiOS.imageset/Contents.json b/iOS/Assets.xcassets/playButtonHugeiOS.imageset/Contents.json new file mode 100644 index 0000000..c9a0c7c --- /dev/null +++ b/iOS/Assets.xcassets/playButtonHugeiOS.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "playButtonHugeiOS.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "template" + } +} diff --git a/iOS/Assets.xcassets/playButtonHugeiOS.imageset/playButtonHugeiOS.pdf b/iOS/Assets.xcassets/playButtonHugeiOS.imageset/playButtonHugeiOS.pdf new file mode 100644 index 0000000..81115af Binary files /dev/null and b/iOS/Assets.xcassets/playButtonHugeiOS.imageset/playButtonHugeiOS.pdf differ diff --git a/iOS/Assets.xcassets/prevTrackButtonHugeiOS.imageset/Contents.json b/iOS/Assets.xcassets/prevTrackButtonHugeiOS.imageset/Contents.json new file mode 100644 index 0000000..57d239b --- /dev/null +++ b/iOS/Assets.xcassets/prevTrackButtonHugeiOS.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "prevTrackButtonHugeiOS.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "template" + } +} diff --git a/iOS/Assets.xcassets/prevTrackButtonHugeiOS.imageset/prevTrackButtonHugeiOS.pdf b/iOS/Assets.xcassets/prevTrackButtonHugeiOS.imageset/prevTrackButtonHugeiOS.pdf new file mode 100644 index 0000000..d4eb770 Binary files /dev/null and b/iOS/Assets.xcassets/prevTrackButtonHugeiOS.imageset/prevTrackButtonHugeiOS.pdf differ diff --git a/iOS/Assets.xcassets/speakerHigh.imageset/Contents.json b/iOS/Assets.xcassets/speakerHigh.imageset/Contents.json new file mode 100644 index 0000000..8a644e7 --- /dev/null +++ b/iOS/Assets.xcassets/speakerHigh.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "speakerHigh.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "template" + } +} diff --git a/iOS/Assets.xcassets/speakerHigh.imageset/speakerHigh.pdf b/iOS/Assets.xcassets/speakerHigh.imageset/speakerHigh.pdf new file mode 100644 index 0000000..08ac5f1 Binary files /dev/null and b/iOS/Assets.xcassets/speakerHigh.imageset/speakerHigh.pdf differ diff --git a/iOS/Assets.xcassets/speakerOff.imageset/Contents.json b/iOS/Assets.xcassets/speakerOff.imageset/Contents.json new file mode 100644 index 0000000..5e29376 --- /dev/null +++ b/iOS/Assets.xcassets/speakerOff.imageset/Contents.json @@ -0,0 +1,16 @@ +{ + "images" : [ + { + "filename" : "speakerOff.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true, + "template-rendering-intent" : "template" + } +} diff --git a/iOS/Assets.xcassets/speakerOff.imageset/speakerOff.pdf b/iOS/Assets.xcassets/speakerOff.imageset/speakerOff.pdf new file mode 100644 index 0000000..a258eea Binary files /dev/null and b/iOS/Assets.xcassets/speakerOff.imageset/speakerOff.pdf differ diff --git a/iOS/Components/Browser/Album Browser/AlbumViewController.swift b/iOS/Components/Browser/Album Browser/AlbumViewController.swift index a17a4ac..5480a89 100644 --- a/iOS/Components/Browser/Album Browser/AlbumViewController.swift +++ b/iOS/Components/Browser/Album Browser/AlbumViewController.swift @@ -34,6 +34,7 @@ class AlbumViewController: UICollectionViewController { } @objc func didConnect() { + print("Album view controller - Connected!") App.mpdClient.fetchAllAlbums() } diff --git a/iOS/Components/Now Playing/NowPlayingBarViewController.swift b/iOS/Components/Now Playing/NowPlayingBarViewController.swift new file mode 100644 index 0000000..b41a81b --- /dev/null +++ b/iOS/Components/Now Playing/NowPlayingBarViewController.swift @@ -0,0 +1,134 @@ +// +// NowPlayingViewController.swift +// Persephone-iOS +// +// Created by Dan Barber on 2020-5-15. +// Copyright © 2020 Dan Barber. All rights reserved. +// + +import UIKit +import ReSwift +import Kingfisher + +class NowPlayingBarViewController: UIViewController { + @IBOutlet var separatorHeight: NSLayoutConstraint! + @IBOutlet var playPauseButton: UIButton! + @IBOutlet var nextButton: UIButton! + @IBOutlet var songTitle: UILabel! + @IBOutlet var albumCoverView: UIImageView! + + override func viewDidLoad() { + super.viewDidLoad() + + separatorHeight.constant = 1 / traitCollection.displayScale + + App.store.subscribe(self) { + $0.select { + ($0.playerState, $0.queueState) + } + } + + NotificationCenter.default.addObserver(self, selector: #selector(didConnect), name: .didConnect, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(willDisconnect), name: .willDisconnect, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(didReloadAlbumArt), name: .didReloadAlbumArt, object: nil) + + albumCoverView.layer.backgroundColor = UIColor.black.cgColor + albumCoverView.layer.cornerRadius = 4 + albumCoverView.layer.borderWidth = 1 / traitCollection.displayScale + albumCoverView.layer.masksToBounds = true + + setAppearance() + } + + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + separatorHeight.constant = 1 / traitCollection.displayScale + + if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) { + setAppearance() + } + } + + func setAppearance() { + let darkMode = traitCollection.userInterfaceStyle == .dark + + albumCoverView.layer.borderColor = darkMode ? CGColor.albumBorderColorDark : CGColor.albumBorderColorLight + } + + @objc func didConnect() { + App.mpdClient.fetchQueue() + } + + @objc func willDisconnect() { + DispatchQueue.main.async { + App.store.dispatch(UpdateQueuePosAction(queuePos: -1)) + App.store.dispatch(UpdateQueueAction(queue: [])) + } + } + + @objc func didReloadAlbumArt() { + // NO-OP + } + + func setTransportControlState(_ state: PlayerState) { + guard let state = state.state else { return } + + playPauseButton.isEnabled = state.isOneOf([.playing, .paused, .stopped]) + nextButton.isEnabled = state.isOneOf([.playing, .paused]) + + if state.isOneOf([.paused, .stopped, .unknown]) { + playPauseButton.setImage(.playIconLarge, for: .normal) + } else { + playPauseButton.setImage(.pauseIconLarge, for: .normal) + } + } + + func setSong(_ song: Song?) { + guard let song = song else { + self.songTitle.text = "Not Playing" + self.albumCoverView.image = .defaultCoverArt + return + } + + songTitle.text = song.title + + let provider = MPDAlbumArtImageDataProvider( + songUri: song.mpdSong.uriString, + cacheKey: song.album.hash + ) + + albumCoverView.kf.setImage( + with: .provider(provider), + placeholder: UIImage.defaultCoverArt, + options: [ + .processor(DownsamplingImageProcessor(size: .queueSongCoverSize)), + .scaleFactor(traitCollection.displayScale), + ] + ) + } + + @IBAction func playPauseButtonAction(_ sender: Any) { + App.mpdClient.playPause() + } + + @IBAction func nextButtonAction(_ sender: Any) { + App.mpdClient.nextTrack() + } + + @IBAction func expandNowPlaying(_ sender: Any) { + } +} + +extension NowPlayingBarViewController: StoreSubscriber { + typealias StoreSubscriberStateType = ( + playerState: PlayerState, queueState: QueueState + ) + + func newState(state: StoreSubscriberStateType) { + DispatchQueue.main.async { + self.setTransportControlState(state.playerState) + self.setSong(state.playerState.currentSong) + } + } +} diff --git a/iOS/Components/Now Playing/NowPlayingBarViewController.xib b/iOS/Components/Now Playing/NowPlayingBarViewController.xib new file mode 100644 index 0000000..3078075 --- /dev/null +++ b/iOS/Components/Now Playing/NowPlayingBarViewController.xib @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iOS/Components/Now Playing/NowPlayingTabBarController.swift b/iOS/Components/Now Playing/NowPlayingTabBarController.swift index b26baa3..c446de8 100644 --- a/iOS/Components/Now Playing/NowPlayingTabBarController.swift +++ b/iOS/Components/Now Playing/NowPlayingTabBarController.swift @@ -9,32 +9,22 @@ import UIKit class NowPlayingTabBarController: UITabBarController { - private var barHeight: NSLayoutConstraint! - let nowPlayingViewController = NowPlayingViewController() + let nowPlayingViewController = NowPlayingBarViewController() override func viewDidLoad() { super.viewDidLoad() - addChild(nowPlayingViewController) let subview = nowPlayingViewController.view! - tabBar.superview?.addSubview(subview) - tabBar.clipsToBounds = false + view.addSubview(subview) subview.translatesAutoresizingMaskIntoConstraints = false - barHeight = subview.heightAnchor.constraint(equalToConstant: 0) + NSLayoutConstraint.activate([ subview.leadingAnchor.constraint(equalTo: view.leadingAnchor), subview.trailingAnchor.constraint(equalTo: view.trailingAnchor), subview.topAnchor.constraint(equalTo: tabBar.topAnchor), - barHeight, + subview.heightAnchor.constraint(equalToConstant: NowPlayingTabBar.barHeight), ]) - nowPlayingViewController.didMove(toParent: self) - + additionalSafeAreaInsets.bottom = NowPlayingTabBar.barHeight } - - override func preferredContentSizeDidChange(forChildContentContainer container: UIContentContainer) { - super.preferredContentSizeDidChange(forChildContentContainer: container) - - barHeight.constant = container.preferredContentSize.height - } } diff --git a/iOS/Components/Now Playing/NowPlayingViewController.swift b/iOS/Components/Now Playing/NowPlayingViewController.swift index 6f2e386..d1ff710 100644 --- a/iOS/Components/Now Playing/NowPlayingViewController.swift +++ b/iOS/Components/Now Playing/NowPlayingViewController.swift @@ -2,132 +2,29 @@ // NowPlayingViewController.swift // Persephone-iOS // -// Created by Dan Barber on 2020-5-15. +// Created by Dan Barber on 2020-12-01. // Copyright © 2020 Dan Barber. All rights reserved. // import UIKit -import ReSwift -import Kingfisher class NowPlayingViewController: UIViewController { - @IBOutlet var separatorHeight: NSLayoutConstraint! - @IBOutlet var playPauseButton: UIButton! - @IBOutlet var nextButton: UIButton! - @IBOutlet var songTitle: UILabel! - @IBOutlet var albumCoverView: UIImageView! - - override func viewDidLoad() { - super.viewDidLoad() - - separatorHeight.constant = 1 / traitCollection.displayScale - - App.store.subscribe(self) { - $0.select { $0.playerState } + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. } - - NotificationCenter.default.addObserver(self, selector: #selector(didConnect), name: .didConnect, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(willDisconnect), name: .willDisconnect, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(didReloadAlbumArt), name: .didReloadAlbumArt, object: nil) - albumCoverView.layer.backgroundColor = UIColor.black.cgColor - albumCoverView.layer.cornerRadius = 4 - albumCoverView.layer.borderWidth = 1 / traitCollection.displayScale - albumCoverView.layer.masksToBounds = true - setAppearance() - } - - override func didMove(toParent parent: UIViewController?) { - super.didMove(toParent: parent) + /* + // MARK: - Navigation - preferredContentSize.height = NowPlayingTabBar.barHeight - } - - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - - separatorHeight.constant = 1 / traitCollection.displayScale - - if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) { - setAppearance() + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. } - } - - func setAppearance() { - let darkMode = traitCollection.userInterfaceStyle == .dark + */ - albumCoverView.layer.borderColor = darkMode ? CGColor.albumBorderColorDark : CGColor.albumBorderColorLight - } - - @objc func didConnect() { - App.mpdClient.fetchQueue() - } - - @objc func willDisconnect() { - DispatchQueue.main.async { - App.store.dispatch(UpdateQueuePosAction(queuePos: -1)) - App.store.dispatch(UpdateQueueAction(queue: [])) - } - } - - @objc func didReloadAlbumArt() { - // NO-OP - } - - func setTransportControlState(_ state: PlayerState) { - guard let state = state.state else { return } - - playPauseButton.isEnabled = state.isOneOf([.playing, .paused, .stopped]) - nextButton.isEnabled = state.isOneOf([.playing, .paused]) - - if state.isOneOf([.paused, .stopped, .unknown]) { - playPauseButton.setImage(.playIconLarge, for: .normal) - } else { - playPauseButton.setImage(.pauseIconLarge, for: .normal) - } - } - - func setSong(_ song: Song?) { - guard let song = song else { - self.songTitle.text = "Not Playing" - self.albumCoverView.image = .defaultCoverArt - return - } - - songTitle.text = song.title - - let provider = MPDAlbumArtImageDataProvider( - songUri: song.mpdSong.uriString, - cacheKey: song.album.hash - ) - - albumCoverView.kf.setImage( - with: .provider(provider), - placeholder: UIImage.defaultCoverArt, - options: [ - .processor(DownsamplingImageProcessor(size: .queueSongCoverSize)), - .scaleFactor(traitCollection.displayScale), - ] - ) - } - - @IBAction func playPauseButtonAction(_ sender: Any) { - App.mpdClient.playPause() - } - - @IBAction func nextButtonAction(_ sender: Any) { - App.mpdClient.nextTrack() - } -} - -extension NowPlayingViewController: StoreSubscriber { - typealias StoreSubscriberStateType = PlayerState - - func newState(state: PlayerState) { - DispatchQueue.main.async { - self.setTransportControlState(state) - self.setSong(state.currentSong) - } - } } diff --git a/iOS/Components/Now Playing/NowPlayingViewController.xib b/iOS/Components/Now Playing/NowPlayingViewController.xib index 57666fb..68fb285 100644 --- a/iOS/Components/Now Playing/NowPlayingViewController.xib +++ b/iOS/Components/Now Playing/NowPlayingViewController.xib @@ -1,105 +1,74 @@ - - + + - + + - + - - - - - - + - - - + + + - - + + + + + + + + - - - - - - - - - - - - - - - - + - - - - - - - - - + + - - - - - - - + + + + + - - - + - - - + + + + + + + + + + + diff --git a/iOS/SceneDelegate.swift b/iOS/SceneDelegate.swift index 3a6c218..a601459 100644 --- a/iOS/SceneDelegate.swift +++ b/iOS/SceneDelegate.swift @@ -21,7 +21,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { _ = App.mpdServerController - App.store.dispatch(UpdateServerHost(host: "192.168.1.42")) + App.store.dispatch(UpdateServerHost(host: "192.168.4.31")) } func sceneDidDisconnect(_ scene: UIScene) {