From c0141c80cb92e0749d24475f3ec12128008ea1fd Mon Sep 17 00:00:00 2001 From: Hemang Mishra <132752204+hemang-mishra@users.noreply.github.com> Date: Tue, 10 Dec 2024 17:00:38 +0530 Subject: [PATCH 1/7] Light_theme_fix Fixed the compatibilty box width and the text color of "You have no common artists". --- .../android/ui/screens/profile/listens/ListensScreen.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/listens/ListensScreen.kt b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/listens/ListensScreen.kt index aefea4d6..85a0289c 100644 --- a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/listens/ListensScreen.kt +++ b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/listens/ListensScreen.kt @@ -279,6 +279,7 @@ fun ListensScreen( item { Box( modifier = Modifier + .fillMaxWidth() .padding(top = 30.dp) .background(ListenBrainzTheme.colorScheme.songsListenedToBG) ) { @@ -421,8 +422,8 @@ private fun BuildSimilarArtists(similarArtists: List, onArtistClick: (St similarArtists.isEmpty() -> { Text( "You have no common artists", - color = white, - modifier = Modifier.padding(horizontal = 16.dp), + color = MaterialTheme.colorScheme.onSurface, + modifier = Modifier.padding(start = 16.dp, bottom = 8.dp), style = MaterialTheme.typography.bodyMedium ) } From bbecdcde6bc862d9d45efab815f68f17927d6224 Mon Sep 17 00:00:00 2001 From: Hemang Mishra <132752204+hemang-mishra@users.noreply.github.com> Date: Tue, 10 Dec 2024 17:12:32 +0530 Subject: [PATCH 2/7] ProfileScreenTopBarUpdates Added 4.dp rounded corners to AddListenButton, MusicBrainzButton, followButton, unfollowButton. Also gave small 4.dp padding below the row of musicBrainzButton. --- .../android/ui/screens/profile/BaseProfileScreen.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt index 5fb0ef2e..bfdefc86 100644 --- a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt +++ b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt @@ -183,7 +183,7 @@ fun BaseProfileScreen( Row (modifier = Modifier .align(Alignment.End) - .padding(end = 20.dp)) { + .padding(end = 20.dp, bottom = 4.dp)) { if(currentTab.value == ProfileScreenTab.LISTENS){ when(isLoggedInUser) { true -> AddListensButton() @@ -258,6 +258,7 @@ private fun FollowButton(onFollowClick: (String) -> Unit, username: String?) { } }, modifier = Modifier + .clip(RoundedCornerShape(4.dp)) .background(lb_purple) .width(100.dp) .height(30.dp)) { @@ -279,6 +280,7 @@ private fun UnFollowButton(onUnFollowClick: (String) -> Unit, username: String?) } }, modifier = Modifier + .clip(RoundedCornerShape(4.dp)) .background(lb_purple) .width(100.dp) .height(30.dp)) { @@ -295,6 +297,7 @@ private fun UnFollowButton(onUnFollowClick: (String) -> Unit, username: String?) @Composable private fun AddListensButton() { IconButton(onClick = { /*TODO*/ }, modifier = Modifier + .clip(RoundedCornerShape(4.dp)) .background(Color(0xFF353070)) .width(110.dp) .height(30.dp)) { @@ -311,6 +314,7 @@ private fun AddListensButton() { @Composable private fun MusicBrainzButton(onClick: () -> Unit) { IconButton(onClick = onClick, modifier = Modifier + .clip(RoundedCornerShape(4.dp)) .background(Color(0xFF353070)) .width(140.dp) .height(30.dp)) { From 75ee3783eeb90c4e71cfbdd5c8838cfd946fea13 Mon Sep 17 00:00:00 2001 From: Hemang Mishra <132752204+hemang-mishra@users.noreply.github.com> Date: Tue, 10 Dec 2024 21:29:55 +0530 Subject: [PATCH 3/7] Using follow button component Added follow button component in the base profile screen --- .../ui/screens/profile/BaseProfileScreen.kt | 22 ++++++++++++------- .../android/viewmodel/UserViewModel.kt | 4 ++++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt index bfdefc86..19ffb62a 100644 --- a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt +++ b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt @@ -187,14 +187,20 @@ fun BaseProfileScreen( if(currentTab.value == ProfileScreenTab.LISTENS){ when(isLoggedInUser) { true -> AddListensButton() - false -> when(uiState.listensTabUiState.isFollowing){ - true -> UnFollowButton(username = username, onUnFollowClick = { - onUnfollowClick(it) - }) - false -> FollowButton(username = username, onFollowClick = { - onFollowClick(it) - }) - } + false-> + Box() { + org.listenbrainz.android.ui.components.FollowButton( + modifier = Modifier, + isFollowedState = uiState.listensTabUiState.isFollowing, + onClick = { + if (uiState.listensTabUiState.isFollowing) { + onUnfollowClick(username ?: "") + } else { + onFollowClick(username ?: "") + } + } + ) + } } Spacer(modifier = Modifier.width(10.dp)) MusicBrainzButton{ diff --git a/app/src/main/java/org/listenbrainz/android/viewmodel/UserViewModel.kt b/app/src/main/java/org/listenbrainz/android/viewmodel/UserViewModel.kt index 019c52a0..db2b195c 100644 --- a/app/src/main/java/org/listenbrainz/android/viewmodel/UserViewModel.kt +++ b/app/src/main/java/org/listenbrainz/android/viewmodel/UserViewModel.kt @@ -71,6 +71,8 @@ class UserViewModel @Inject constructor( if(username.isNullOrEmpty()) return viewModelScope.launch (ioDispatcher) { socialRepository.followUser(username) + //Updating the state of the screen after user is successfully followed + listenStateFlow.value = listenStateFlow.value.copy(isFollowing = true) } } @@ -78,6 +80,8 @@ class UserViewModel @Inject constructor( if(username.isNullOrEmpty()) return viewModelScope.launch(ioDispatcher) { socialRepository.unfollowUser(username) + //Updating the state of the screen after user is successfully unfollowed + listenStateFlow.value = listenStateFlow.value.copy(isFollowing = false) } } From 4f6238e7c8f58448fa79855e677f4c65c83a6d7d Mon Sep 17 00:00:00 2001 From: Hemang Mishra <132752204+hemang-mishra@users.noreply.github.com> Date: Tue, 10 Dec 2024 21:54:51 +0530 Subject: [PATCH 4/7] updated color Updated color of button --- .../listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt index 19ffb62a..e1641f6a 100644 --- a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt +++ b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt @@ -192,6 +192,7 @@ fun BaseProfileScreen( org.listenbrainz.android.ui.components.FollowButton( modifier = Modifier, isFollowedState = uiState.listensTabUiState.isFollowing, + buttonColor = Color(0xFF353070), onClick = { if (uiState.listensTabUiState.isFollowing) { onUnfollowClick(username ?: "") From 6df6408a9eaa75ec73e1e29c37cabf5299e1ce73 Mon Sep 17 00:00:00 2001 From: Hemang Mishra <132752204+hemang-mishra@users.noreply.github.com> Date: Tue, 10 Dec 2024 22:59:52 +0530 Subject: [PATCH 5/7] updated commits Updated commits and removed the unused composables. --- .../ui/screens/profile/BaseProfileScreen.kt | 46 +------------------ .../screens/profile/listens/ListensScreen.kt | 2 +- .../android/viewmodel/UserViewModel.kt | 13 ++++-- 3 files changed, 12 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt index e1641f6a..674bfe04 100644 --- a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt +++ b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt @@ -45,6 +45,7 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import org.listenbrainz.android.R +import org.listenbrainz.android.ui.components.FollowButton import org.listenbrainz.android.ui.components.LoadingAnimation import org.listenbrainz.android.ui.screens.brainzplayer.PlaylistScreen import org.listenbrainz.android.ui.screens.profile.listens.ListensScreen @@ -189,7 +190,7 @@ fun BaseProfileScreen( true -> AddListensButton() false-> Box() { - org.listenbrainz.android.ui.components.FollowButton( + FollowButton( modifier = Modifier, isFollowedState = uiState.listensTabUiState.isFollowing, buttonColor = Color(0xFF353070), @@ -257,49 +258,6 @@ fun BaseProfileScreen( } -@Composable -private fun FollowButton(onFollowClick: (String) -> Unit, username: String?) { - IconButton(onClick = { - if(!username.isNullOrEmpty()){ - onFollowClick(username) - } - - }, modifier = Modifier - .clip(RoundedCornerShape(4.dp)) - .background(lb_purple) - .width(100.dp) - .height(30.dp)) { - Row(modifier = Modifier.padding(horizontal = 8.dp)) { - Icon(painter = painterResource(id = R.drawable.follow_icon), contentDescription = "", tint = app_bg_light, modifier = Modifier - .width(20.dp) - .height(20.dp)) - Spacer(modifier = Modifier.width(5.dp)) - Text("Follow", color = new_app_bg_light, style = MaterialTheme.typography.bodyMedium) - } - } -} - -@Composable -private fun UnFollowButton(onUnFollowClick: (String) -> Unit, username: String?) { - IconButton(onClick = { - if(!username.isNullOrEmpty()){ - onUnFollowClick(username) - } - - }, modifier = Modifier - .clip(RoundedCornerShape(4.dp)) - .background(lb_purple) - .width(100.dp) - .height(30.dp)) { - Row(modifier = Modifier.padding(horizontal = 8.dp)) { - Icon(painter = painterResource(id = R.drawable.follow_icon), contentDescription = "", tint = new_app_bg_light, modifier = Modifier - .width(20.dp) - .height(20.dp)) - Spacer(modifier = Modifier.width(5.dp)) - Text("Unfollow", color = new_app_bg_light, style = MaterialTheme.typography.bodyMedium) - } - } -} @Composable private fun AddListensButton() { diff --git a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/listens/ListensScreen.kt b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/listens/ListensScreen.kt index 85a0289c..9c77045e 100644 --- a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/listens/ListensScreen.kt +++ b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/listens/ListensScreen.kt @@ -422,7 +422,7 @@ private fun BuildSimilarArtists(similarArtists: List, onArtistClick: (St similarArtists.isEmpty() -> { Text( "You have no common artists", - color = MaterialTheme.colorScheme.onSurface, + color = ListenBrainzTheme.colorScheme.text, modifier = Modifier.padding(start = 16.dp, bottom = 8.dp), style = MaterialTheme.typography.bodyMedium ) diff --git a/app/src/main/java/org/listenbrainz/android/viewmodel/UserViewModel.kt b/app/src/main/java/org/listenbrainz/android/viewmodel/UserViewModel.kt index db2b195c..af5261b5 100644 --- a/app/src/main/java/org/listenbrainz/android/viewmodel/UserViewModel.kt +++ b/app/src/main/java/org/listenbrainz/android/viewmodel/UserViewModel.kt @@ -26,6 +26,7 @@ import org.listenbrainz.android.ui.screens.profile.TasteTabUIState import org.listenbrainz.android.ui.screens.profile.stats.StatsRange import org.listenbrainz.android.ui.screens.profile.stats.UserGlobal import org.listenbrainz.android.util.Constants.Strings.STATUS_LOGGED_OUT +import org.listenbrainz.android.util.Resource import javax.inject.Inject @HiltViewModel @@ -70,18 +71,22 @@ class UserViewModel @Inject constructor( fun followUser(username: String?){ if(username.isNullOrEmpty()) return viewModelScope.launch (ioDispatcher) { - socialRepository.followUser(username) - //Updating the state of the screen after user is successfully followed listenStateFlow.value = listenStateFlow.value.copy(isFollowing = true) + val result = socialRepository.followUser(username) + if (result.status == Resource.Status.FAILED) { + listenStateFlow.value = listenStateFlow.value.copy(isFollowing = false) + } } } fun unfollowUser(username: String?){ if(username.isNullOrEmpty()) return viewModelScope.launch(ioDispatcher) { - socialRepository.unfollowUser(username) - //Updating the state of the screen after user is successfully unfollowed listenStateFlow.value = listenStateFlow.value.copy(isFollowing = false) + val result = socialRepository.unfollowUser(username) + if (result.status == Resource.Status.FAILED) { + listenStateFlow.value = listenStateFlow.value.copy(isFollowing = true) + } } } From 5e9ec0f51bcba5368464545bb57a11ff42e0474b Mon Sep 17 00:00:00 2001 From: Hemang Mishra <132752204+hemang-mishra@users.noreply.github.com> Date: Tue, 10 Dec 2024 23:11:52 +0530 Subject: [PATCH 6/7] imported button color --- .../android/ui/screens/profile/BaseProfileScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt index 674bfe04..4cc0f865 100644 --- a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt +++ b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt @@ -193,7 +193,7 @@ fun BaseProfileScreen( FollowButton( modifier = Modifier, isFollowedState = uiState.listensTabUiState.isFollowing, - buttonColor = Color(0xFF353070), + buttonColor = lb_purple, onClick = { if (uiState.listensTabUiState.isFollowing) { onUnfollowClick(username ?: "") From 71a4c3519e3c7467ec595fe68d0fed46f626752c Mon Sep 17 00:00:00 2001 From: Hemang Mishra <132752204+hemang-mishra@users.noreply.github.com> Date: Tue, 10 Dec 2024 23:49:28 +0530 Subject: [PATCH 7/7] Fixed the text color. Fixed text by changing the original --- .../org/listenbrainz/android/ui/components/FollowButton.kt | 4 +++- .../android/ui/screens/profile/BaseProfileScreen.kt | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/listenbrainz/android/ui/components/FollowButton.kt b/app/src/main/java/org/listenbrainz/android/ui/components/FollowButton.kt index ff6e5b39..192d5b54 100644 --- a/app/src/main/java/org/listenbrainz/android/ui/components/FollowButton.kt +++ b/app/src/main/java/org/listenbrainz/android/ui/components/FollowButton.kt @@ -45,6 +45,8 @@ fun FollowButton( fontSize: TextUnit = (height.value/2 - 1).sp, cornerRadius: Dp = 6.dp, buttonColor: Color = ListenBrainzTheme.colorScheme.lbSignature, + followedStateTextColor: Color = ListenBrainzTheme.colorScheme.lbSignature, + unfollowedStateTextColor: Color = ListenBrainzTheme.colorScheme.onLbSignature, onClick: () -> Unit, ) { @@ -78,7 +80,7 @@ fun FollowButton( Box(contentAlignment = Alignment.Center) { Text( text = if (isFollowedState) "Following" else "Follow", - color = if (isFollowedState) ListenBrainzTheme.colorScheme.lbSignature else ListenBrainzTheme.colorScheme.onLbSignature, + color = if (isFollowedState) followedStateTextColor else unfollowedStateTextColor, fontWeight = FontWeight.Medium, fontSize = fontSize ) diff --git a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt index 4cc0f865..d9821369 100644 --- a/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt +++ b/app/src/main/java/org/listenbrainz/android/ui/screens/profile/BaseProfileScreen.kt @@ -194,6 +194,8 @@ fun BaseProfileScreen( modifier = Modifier, isFollowedState = uiState.listensTabUiState.isFollowing, buttonColor = lb_purple, + followedStateTextColor = new_app_bg_light, + unfollowedStateTextColor = ListenBrainzTheme.colorScheme.text, onClick = { if (uiState.listensTabUiState.isFollowing) { onUnfollowClick(username ?: "")