Skip to content

Commit b0fcc90

Browse files
committed
update navigation and chartScreen
1 parent 235f270 commit b0fcc90

File tree

11 files changed

+393
-153
lines changed

11 files changed

+393
-153
lines changed

app/src/main/java/com/example/harmonyhub/HarmonyHubApp.kt

Lines changed: 82 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,12 @@ import com.example.harmonyhub.ui.account.NewPasswordScreen
5454
import com.example.harmonyhub.ui.account.RegisterScreen
5555
import com.example.harmonyhub.ui.account.VerificationScreen
5656
import com.example.harmonyhub.ui.components.Friend
57+
import com.example.harmonyhub.ui.components.Song
5758
import com.example.harmonyhub.ui.library.AddSongToPlaylistScreen
5859
import com.example.harmonyhub.ui.library.AddToPlaylistFromSongScreen
5960
import com.example.harmonyhub.ui.library.AlbumScreen
6061
import com.example.harmonyhub.ui.library.ArtistScreen
62+
import com.example.harmonyhub.ui.library.ChartsScreen
6163
import com.example.harmonyhub.ui.library.PlaylistSongListScreen
6264
import com.example.harmonyhub.ui.play.NowPlayingBar
6365
import com.example.harmonyhub.ui.play.PlayScreen
@@ -93,7 +95,16 @@ enum class HarmonyHubScreen(@StringRes val title: Int, val icon: ImageVector) {
9395
Friends(title = R.string.friends, icon = Icons.Default.AccountBox),
9496
Album(title = R.string.album, icon = Icons.Default.AccountBox)
9597
}
98+
object CurrentSong{
99+
var currentSong : Song? = null
100+
fun get(): Song? {
101+
return currentSong
102+
}
103+
fun set(tmp : Song?) {
104+
currentSong = tmp
105+
}
96106

107+
}
97108
private val gradientBackground = Brush.verticalGradient(
98109
colors = listOf(
99110
Color(0xFF252525),
@@ -128,16 +139,17 @@ fun HarmonyHubApp(
128139
)
129140
) {
130141
Column {
131-
if (currentScreen != HarmonyHubScreen.AddToPlaylistFromSong)
142+
// Kiểm tra nếu CurrentSong.currentSong không null
143+
CurrentSong.currentSong?.let { currentSong ->
132144
NowPlayingBar(
133-
songName = "Closer",
134-
artistName = "The Chainsmokers, Halsey",
145+
song = currentSong,
135146
isPlaying = true,
136147
onPlayPauseClick = { /* Handle play/pause logic */ },
137148
onNextClick = { /* Handle next song logic */ },
138149
onPreviousClick = { /* Handle previous song logic */ },
139-
onBarClick = { navController.navigate(HarmonyHubScreen.Play.name) }
150+
onBarClick = { /* Handle bar click logic */ }
140151
)
152+
}
141153
BottomNavigationBar(navController = navController)
142154
}
143155
}
@@ -213,17 +225,17 @@ fun HarmonyHubApp(
213225
)
214226
}
215227
composable(
216-
route = "Play?index={SongRepository.currentPLaylist.indexOf(song)}",
228+
route = "Play?index={SongRepository.currentPLaylist.indexOf(CurrentSong.currentSong)}",
217229
arguments = listOf(
218-
navArgument(name = "SongRepository.currentPLaylist.indexOf(song)") {
230+
navArgument(name = "SongRepository.currentPLaylist.indexOf(CurrentSong.currentSong)") {
219231
type = NavType.IntType
220232
defaultValue= 0
221233
}
222234
)
223235
) { backStackEntry ->
224236
PlayScreen(
225-
index = backStackEntry.arguments?.getInt("SongRepository.currentPLaylist.indexOf(song)"),
226-
onBackButtonClicked = { navController.popBackStack() }
237+
index = backStackEntry.arguments?.getInt("SongRepository.currentPLaylist.indexOf(CurrentSong.currentSong)"),
238+
onBackButtonClicked = { searchNavController.popBackStack() }
227239
)
228240
}
229241
}
@@ -275,16 +287,16 @@ fun HarmonyHubApp(
275287
)
276288
}
277289
composable(
278-
route = "Play?index={SongRepository.currentPLaylist.indexOf(song)}",
290+
route = "Play?index={SongRepository.currentPLaylist.indexOf(CurrentSong.currentSong)}",
279291
arguments = listOf(
280-
navArgument(name = "SongRepository.currentPLaylist.indexOf(song)") {
292+
navArgument(name = "SongRepository.currentPLaylist.indexOf(CurrentSong.currentSong)") {
281293
type = NavType.IntType
282294
defaultValue= 0
283295
}
284296
)
285297
) { backStackEntry ->
286298
PlayScreen(
287-
index = backStackEntry.arguments?.getInt("SongRepository.currentPLaylist.indexOf(song)"),
299+
index = backStackEntry.arguments?.getInt("SongRepository.currentPLaylist.indexOf(CurrentSong.currentSong)"),
288300
onBackButtonClicked = { navController.popBackStack() }
289301
)
290302
}
@@ -463,18 +475,19 @@ fun HarmonyHubApp(
463475
)
464476

465477
}
466-
composable(route = HarmonyHubScreen.Album.name) {
467-
AlbumScreen(
468-
onShareClicked = {},
469-
onDownloadClicked = {},
470-
onSongClick = {
471-
},
472-
onBackButtonClicked = {},
473-
onAddToPlaylistClicked = {},
474-
onAddToFavoriteClicked = {}
475-
)
476-
477-
}
478+
// composable(route = HarmonyHubScreen.Album.name) {
479+
// AlbumScreen(
480+
// idAlbum ="",
481+
// onShareClicked = {},
482+
// onDownloadClicked = {},
483+
// onSongClick = {
484+
// },
485+
// onBackButtonClicked = {},
486+
// onAddToPlaylistClicked = {},
487+
// onAddToFavoriteClicked = {}
488+
// )
489+
//
490+
// }
478491

479492

480493
}
@@ -619,16 +632,16 @@ fun Nav3(
619632
)
620633
}
621634
composable(
622-
route = "Artist?name={artist.name}",
635+
route = "Artist?name={artist.id}",
623636
arguments = listOf(
624-
navArgument(name = "artist.name") {
637+
navArgument(name = "artist.id") {
625638
type = NavType.StringType
626639
nullable = true
627640
}
628641
)
629642
) { backStackEntry ->
630643
ArtistScreen(
631-
myArtist = backStackEntry.arguments?.getString("artist.name"),
644+
myArtist = backStackEntry.arguments?.getString("artist.id"),
632645
onSongClick = {},
633646
onBackButtonClicked = {
634647
navController.popBackStack() // Quay lại ArtistsFollowing
@@ -650,71 +663,64 @@ fun Nav3(
650663
}
651664
)
652665
}
653-
}
654-
}
655-
@Composable
656-
fun Nav4(
657-
parentNavController: NavHostController,
658-
authenticationMainViewModel: AuthenticationViewModel = hiltViewModel()
659-
) {
660-
val navController = rememberNavController()
661-
NavHost(navController = navController, startDestination = "Library") {
662-
composable(route = "Library") {
663-
LibraryScreen(
664-
onProfileButtonClicked = {
665-
parentNavController.navigate(HarmonyHubScreen.Profile.name)
666-
},
667-
onViewAllRecentCLicked = {
668-
parentNavController.navigate(HarmonyHubScreen.History.name)
669-
},
670-
onFavoriteButtonClicked = {
671-
parentNavController.navigate(HarmonyHubScreen.Favorite.name)
672-
},
673-
onDownloadButtonClicked = {
674-
parentNavController.navigate(HarmonyHubScreen.Download.name)
675-
},
676-
onPlaylistButtonClicked = {
677-
parentNavController.navigate(HarmonyHubScreen.Playlist.name)
678-
},
679-
onArtistsFollowingButtonClicked = {
680-
parentNavController.navigate(HarmonyHubScreen.ArtistsFollowing.name)
681-
},
682-
onLogoutButtonClicked = {
683-
authenticationMainViewModel.signOut()
684-
parentNavController.navigate(HarmonyHubScreen.Login.name)
685-
},
686-
onSettingsButtonClicked = {
687-
parentNavController.navigate(HarmonyHubScreen.Settings.name)
688-
},
689-
onPlaySongClicked = {
690-
parentNavController.navigate(HarmonyHubScreen.Play.name)
691-
},
692-
onAddToPlaylistClicked = {
693-
parentNavController.navigate(HarmonyHubScreen.AddToPlaylistFromSong.name)
694-
},
695-
onAddToFavoriteClicked = { /* Handle add to favorite logic */ },
696-
onShareClicked = { /* Handle share logic */ },
697-
onDownloadClicked = { /* Handle download logic */ },
698-
onDeleteClicked = { /* Handle delete logic */ },
699-
navController = navController
666+
composable(
667+
route = "Album?name={album.id}",
668+
arguments = listOf(
669+
navArgument(name = "album.id") {
670+
type = NavType.StringType
671+
nullable = true
672+
}
673+
)
674+
) { backStackEntry ->
675+
AlbumScreen(
676+
idAlbum = backStackEntry.arguments?.getString("album.id"),
677+
onShareClicked = {},
678+
onDownloadClicked = {},
679+
onSongClick = {
680+
},
681+
onBackButtonClicked = {navController.popBackStack()},
682+
onAddToPlaylistClicked = {},
683+
onAddToFavoriteClicked = {}
700684
)
701685
}
702686
composable(
703-
route = "Play?index={SongRepository.currentPLaylist.indexOf(song)}&tmpPlaylist={SongRepository.currentPLaylist}",
687+
route = "Charts?name={chart.id}",
704688
arguments = listOf(
705-
navArgument(name = "SongRepository.currentPLaylist.indexOf(song)") {
689+
navArgument(name = "chart.id") {
690+
type = NavType.StringType
691+
nullable = true
692+
}
693+
)
694+
) { backStackEntry ->
695+
ChartsScreen(
696+
idCharts = backStackEntry.arguments?.getString("chart.id"),
697+
onShareClicked = {},
698+
onDownloadClicked = {},
699+
onSongClick = {
700+
},
701+
onBackButtonClicked = {navController.popBackStack()},
702+
onAddToPlaylistClicked = {},
703+
onAddToFavoriteClicked = {}
704+
)
705+
}
706+
707+
composable(
708+
route = "Play?index={SongRepository.currentPLaylist.indexOf(CurrentSong.currentSong)}",
709+
arguments = listOf(
710+
navArgument(name = "SongRepository.currentPLaylist.indexOf(CurrentSong.currentSong)") {
706711
type = NavType.IntType
707712
defaultValue= 0
708713
}
709714
)
710715
) { backStackEntry ->
711716
PlayScreen(
712-
index = backStackEntry.arguments?.getInt("SongRepository.currentPLaylist.indexOf(song)"),
717+
index = backStackEntry.arguments?.getInt("SongRepository.currentPLaylist.indexOf(CurrentSong.currentSong)"),
713718
onBackButtonClicked = { navController.popBackStack() }
714719
)
715720
}
716721
}
717722
}
723+
718724
//@OptIn(ExperimentalMaterial3Api::class)
719725
//@Composable
720726
//fun HarmonyHubAppbar(

app/src/main/java/com/example/harmonyhub/data/repository/DefaultHomeScreenRepo.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class DefaultHomeScreenRepo : HomeScreenRepo {
2626
val request = Request.Builder()
2727
.url("https://spotify-scraper.p.rapidapi.com/v1/home")
2828
.get()
29-
.addHeader("x-rapidapi-key", "89644839e0mshcae86286ffb46fcp1e2f10jsn5dacb407fc3b")
29+
.addHeader("x-rapidapi-key", "bc05c5534fmsh8fb5f0a628eb2c8p1262e2jsn9a210e841cc1")
3030
.addHeader("x-rapidapi-host", "spotify-scraper.p.rapidapi.com")
3131
.build()
3232

app/src/main/java/com/example/harmonyhub/ui/components/AlbumCard.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ import coil.request.ImageRequest
2929
import com.example.harmonyhub.ui.theme.NotoSans
3030

3131
@Composable
32-
fun AlbumCard(songName: String, albumImg: String, id : String, listArtist: List<String>) {
32+
fun AlbumCard(songName: String, albumImg: String, id : String, listArtist: List<String>, onAlbumCardClick: () -> Unit) {
3333
Surface(
3434
modifier = Modifier
3535
.size(width = 125.dp, height = 180.dp)
36-
.clickable { }
36+
.clickable {onAlbumCardClick() }
3737
.testTag("AlbumCard"),
3838
color = Color.Transparent
3939
) {

app/src/main/java/com/example/harmonyhub/ui/components/ChartCard.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ import coil.request.ImageRequest
2828
import com.example.harmonyhub.ui.theme.NotoSans
2929

3030
@Composable
31-
fun ChartCard(chartImg: String?, chartName: String, chartId: String) {
31+
fun ChartCard(chartImg: String?, chartName: String, chartId: String, onChartClicked : () -> Unit) {
3232
Surface(
3333
modifier = Modifier
3434
.size(width = 150.dp, height = 150.dp)
35-
.clickable { },
35+
.clickable {onChartClicked() },
3636
color = Color.Transparent
3737
) {
3838

app/src/main/java/com/example/harmonyhub/ui/components/SuggestionCard.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ import com.example.harmonyhub.R
3131
import com.example.harmonyhub.ui.theme.NotoSans
3232

3333
@Composable
34-
fun SuggestionCard(songName: String, artistName: String, songId: String, songImg: String) {
34+
fun SuggestionCard(songName: String, artistName: String, songId: String, songImg: String, onSongClicked: () ->Unit ) {
3535
Surface(
3636
modifier = Modifier
3737
.size(width = 125.dp, height = 180.dp)
38-
.clickable { },
38+
.clickable { onSongClicked() },
3939
color = Color.Transparent
4040
) {
4141
Column(modifier = Modifier.padding(4.dp))

0 commit comments

Comments
 (0)