Skip to content

Commit

Permalink
Clean up SongDetailsView
Browse files Browse the repository at this point in the history
  • Loading branch information
jonathangarelick committed May 7, 2024
1 parent 5a9fe8a commit 9ad7c68
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 24 deletions.
42 changes: 39 additions & 3 deletions SoundSeer/SoundSeerViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,19 @@ class SoundSeerViewModel: ObservableObject {
}
}

func openCurrentSong() {
var songShort: String {
guard !currentSong.isEmpty else { return "Song unknown" }

return prefixLength > 0
? currentSong.truncate(length: Int(Double(prefixLength) * 1.5))
: currentSong.truncate(length: 60)
}

var canRevealSong: Bool {
player != nil
}

func revealSong() {
guard let player = player else { return }
switch player {
case .music:
Expand All @@ -96,7 +108,19 @@ class SoundSeerViewModel: ObservableObject {
}
}

func openCurrentArtist() {
var artistShort: String {
guard !currentArtist.isEmpty else { return "Artist unknown" }

return prefixLength > 0
? currentArtist.truncate(length: Int(Double(prefixLength) * 1.5))
: currentArtist.truncate(length: 60)
}

var canRevealArtist: Bool {
!currentSongId.isEmpty
}

func revealArtist() {
guard let player = player, !currentSongId.isEmpty else { return }
switch player {
case .music:
Expand All @@ -114,7 +138,19 @@ class SoundSeerViewModel: ObservableObject {
}
}

func openCurrentAlbum() {
var albumShort: String {
guard !currentAlbum.isEmpty else { return "Album unknown" }

return prefixLength > 0
? currentAlbum.truncate(length: Int(Double(prefixLength) * 1.5))
: currentAlbum.truncate(length: 60)
}

var canRevealAlbum: Bool {
!currentSongId.isEmpty
}

func revealAlbum() {
guard let player = player, !currentSongId.isEmpty else { return }
switch player {
case .music:
Expand Down
30 changes: 9 additions & 21 deletions SoundSeer/Views/SongDetailsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,16 @@ struct SongDetailsView: View {
@ObservedObject var viewModel: SoundSeerViewModel

var body: some View {
Button(!viewModel.currentSong.isEmpty
? (viewModel.prefixLength > 0
? viewModel.currentSong.truncate(length: Int(Double(viewModel.prefixLength) * 1.5))
: viewModel.currentSong.truncate(length: 60))
: "Song unknown", systemImage: "music.note", action: viewModel.openCurrentSong)
.labelStyle(.titleAndIcon)
.disabled(viewModel.currentSongId.isEmpty)
Button(viewModel.songShort, systemImage: "music.note", action: viewModel.revealSong)
.labelStyle(.titleAndIcon)
.disabled(!viewModel.canRevealSong)

Button(!viewModel.currentArtist.isEmpty
? (viewModel.prefixLength > 0
? viewModel.currentArtist.truncate(length: Int(Double(viewModel.prefixLength) * 1.5))
: viewModel.currentArtist.truncate(length: 60))
: "Artist unknown", systemImage: "person", action: viewModel.openCurrentArtist)
.labelStyle(.titleAndIcon)
.disabled(viewModel.currentSongId.isEmpty)
Button(viewModel.artistShort, systemImage: "person", action: viewModel.revealArtist)
.labelStyle(.titleAndIcon)
.disabled(!viewModel.canRevealArtist)

Button(!viewModel.currentAlbum.isEmpty
? (viewModel.prefixLength > 0
? viewModel.currentAlbum.truncate(length: Int(Double(viewModel.prefixLength) * 1.5))
: viewModel.currentAlbum.truncate(length: 60))
: "Album unknown", systemImage: "opticaldisc", action: viewModel.openCurrentAlbum)
.labelStyle(.titleAndIcon)
.disabled(viewModel.currentSongId.isEmpty)
Button(viewModel.albumShort, systemImage: "opticaldisc", action: viewModel.revealAlbum)
.labelStyle(.titleAndIcon)
.disabled(!viewModel.canRevealAlbum)
}
}

0 comments on commit 9ad7c68

Please sign in to comment.