Fixes remote audio source network issues (#35)
This commit is contained in:
@@ -9,7 +9,6 @@
|
||||
import UIKit
|
||||
|
||||
final class AppCoordinator {
|
||||
|
||||
enum Route {
|
||||
case equalizer
|
||||
}
|
||||
@@ -44,8 +43,8 @@ final class AppCoordinator {
|
||||
|
||||
private func routeTo(_ route: AppCoordinator.Route) {
|
||||
switch route {
|
||||
case .equalizer:
|
||||
showEqualizerControls()
|
||||
case .equalizer:
|
||||
showEqualizerControls()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
import UIKit
|
||||
|
||||
class EqualizerViewController: UIViewController {
|
||||
|
||||
private lazy var enableTextLabel = UILabel()
|
||||
private lazy var enableButton = UISwitch()
|
||||
|
||||
@@ -22,7 +21,8 @@ class EqualizerViewController: UIViewController {
|
||||
super.init(nibName: nil, bundle: nil)
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
@available(*, unavailable)
|
||||
required init?(coder _: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ class EqualizerViewController: UIViewController {
|
||||
stackView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
|
||||
stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
||||
stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
||||
stackView.heightAnchor.constraint(equalTo: view.safeAreaLayoutGuide.heightAnchor, multiplier: 0.8)
|
||||
stackView.heightAnchor.constraint(equalTo: view.safeAreaLayoutGuide.heightAnchor, multiplier: 0.8),
|
||||
]
|
||||
)
|
||||
}
|
||||
@@ -86,7 +86,7 @@ class EqualizerViewController: UIViewController {
|
||||
|
||||
private func buildSliders() -> [UIView] {
|
||||
var sliders = [UIView]()
|
||||
for index in 0..<viewModel.numberOfBands() {
|
||||
for index in 0 ..< viewModel.numberOfBands() {
|
||||
guard let item = viewModel.band(at: index) else { continue }
|
||||
let slider = buildSlider(item: item, index: index)
|
||||
sliders.append(slider)
|
||||
|
||||
@@ -16,7 +16,6 @@ struct EQBand {
|
||||
}
|
||||
|
||||
final class EqualzerViewModel {
|
||||
|
||||
private var bands: [EQBand] = []
|
||||
|
||||
private let equalizerService: EqualizerService
|
||||
@@ -31,7 +30,7 @@ final class EqualzerViewModel {
|
||||
bands = equalizerService.bands.map { item in
|
||||
var measurement = item.frequency
|
||||
var frequency = String(Int(measurement))
|
||||
if item.frequency >= 1_000 {
|
||||
if item.frequency >= 1000 {
|
||||
measurement = item.frequency / 1000
|
||||
frequency = "\(String(Int(measurement)))K"
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ class PlayerViewController: UIViewController {
|
||||
style: .plain,
|
||||
target: self,
|
||||
action: #selector(showEqualizer))
|
||||
|
||||
|
||||
tableView.translatesAutoresizingMaskIntoConstraints = false
|
||||
tableView.delegate = self
|
||||
tableView.dataSource = self
|
||||
@@ -92,12 +92,13 @@ class PlayerViewController: UIViewController {
|
||||
|
||||
@objc private func addNowPlaylistItem() {
|
||||
let controller = UIAlertController(title: "Add new item", message: "", preferredStyle: .alert)
|
||||
controller.addTextField { (textField) in
|
||||
controller.addTextField { textField in
|
||||
textField.placeholder = "Insert url here"
|
||||
}
|
||||
let saveAction = UIAlertAction(title: "Save", style: .default) { [viewModel] action in
|
||||
let saveAction = UIAlertAction(title: "Save", style: .default) { [viewModel] _ in
|
||||
if let textfield = controller.textFields?.first,
|
||||
let text = textfield.text {
|
||||
let text = textfield.text
|
||||
{
|
||||
viewModel.add(urlString: text)
|
||||
}
|
||||
}
|
||||
@@ -105,7 +106,7 @@ class PlayerViewController: UIViewController {
|
||||
|
||||
controller.addAction(saveAction)
|
||||
controller.addAction(cancelAction)
|
||||
self.present(controller, animated: true, completion: nil)
|
||||
present(controller, animated: true, completion: nil)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,14 +150,13 @@ extension PlayerViewController: UITableViewDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
final class PlaylistTableViewCell: UITableViewCell {
|
||||
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||
override init(style _: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||
super.init(style: .subtitle, reuseIdentifier: reuseIdentifier)
|
||||
}
|
||||
|
||||
@available(*, unavailable)
|
||||
required init?(coder: NSCoder) {
|
||||
required init?(coder _: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,14 +18,15 @@ final class PlayerViewModel {
|
||||
private let playerService: AudioPlayerService
|
||||
private let playlistItemsService: PlaylistItemsService
|
||||
|
||||
private let routeTo: ((AppCoordinator.Route) -> Void)
|
||||
private let routeTo: (AppCoordinator.Route) -> Void
|
||||
private var currentPlayingItemIndex: Int?
|
||||
|
||||
var reloadContent: ((ReloadAction) -> Void)?
|
||||
|
||||
init(playlistItemsService: PlaylistItemsService,
|
||||
playerService: AudioPlayerService,
|
||||
routeTo: @escaping (AppCoordinator.Route) -> Void) {
|
||||
routeTo: @escaping (AppCoordinator.Route) -> Void)
|
||||
{
|
||||
self.playlistItemsService = playlistItemsService
|
||||
self.playerService = playerService
|
||||
self.routeTo = routeTo
|
||||
|
||||
@@ -10,7 +10,7 @@ import AVFoundation
|
||||
|
||||
final class EqualizerService {
|
||||
private let playerService: AudioPlayerService
|
||||
private let _freqs = [32, 64, 128, 250, 500, 1_000, 2_000, 4_000, 8_000, 16_000]
|
||||
private let _freqs = [32, 64, 128, 250, 500, 1000, 2000, 4000, 8000, 16000]
|
||||
private let eqUnit: AVAudioUnitEQ
|
||||
|
||||
var bands: [AVAudioUnitEQFilterParameters] {
|
||||
@@ -23,7 +23,7 @@ final class EqualizerService {
|
||||
self.playerService = playerService
|
||||
|
||||
eqUnit = AVAudioUnitEQ(numberOfBands: _freqs.count)
|
||||
for i in 0..<_freqs.count {
|
||||
for i in 0 ..< _freqs.count {
|
||||
eqUnit.bands[i].bypass = false
|
||||
eqUnit.bands[i].filterType = .parametric
|
||||
eqUnit.bands[i].frequency = Float(_freqs[i])
|
||||
|
||||
@@ -9,10 +9,9 @@
|
||||
import MediaPlayer
|
||||
|
||||
final class NowPlayingCenter {
|
||||
|
||||
private let infoCenter: MPNowPlayingInfoCenter
|
||||
|
||||
init(infoCenter: MPNowPlayingInfoCenter = .default()){
|
||||
init(infoCenter: MPNowPlayingInfoCenter = .default()) {
|
||||
self.infoCenter = infoCenter
|
||||
}
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ final class PlaylistItemsService {
|
||||
func provideInitialPlaylistItems() -> [PlaylistItem] {
|
||||
let allCases = AudioContent.allCases
|
||||
let casesForQueueing: [AudioContent] = [.piano, .local, .khruangbin]
|
||||
let allItems = allCases.map { PlaylistItem.init(content: $0 , queues: false) }
|
||||
let casesForQueuingItems = casesForQueueing.map { PlaylistItem.init(content: $0 , queues: true) }
|
||||
let allItems = allCases.map { PlaylistItem(content: $0, queues: false) }
|
||||
let casesForQueuingItems = casesForQueueing.map { PlaylistItem(content: $0, queues: true) }
|
||||
return allItems + casesForQueuingItems
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user