Modify Follow and Unfollow buttons to only change looks when in profile actions.

This commit is contained in:
KotlinGeekDev
2025-09-11 15:01:27 +01:00
parent 31328089cb
commit e8d04a2205
2 changed files with 12 additions and 6 deletions
@@ -29,18 +29,21 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.stringRes
import com.vitorpamplona.amethyst.ui.theme.ButtonBorder
import com.vitorpamplona.amethyst.ui.theme.ButtonPadding import com.vitorpamplona.amethyst.ui.theme.ButtonPadding
import com.vitorpamplona.amethyst.ui.theme.LeftHalfCircleButtonBorder import com.vitorpamplona.amethyst.ui.theme.LeftHalfCircleButtonBorder
@Composable @Composable
fun FollowButton( fun FollowButton(
text: Int = R.string.follow, text: Int = R.string.follow,
// Needed for when browsing a user's profile, for list functionality.
isInProfileActions: Boolean = false,
onClick: () -> Unit, onClick: () -> Unit,
) { ) {
FilledTonalButton( FilledTonalButton(
modifier = Modifier.padding(start = 3.dp), modifier = Modifier.padding(start = 3.dp),
onClick = onClick, onClick = onClick,
shape = LeftHalfCircleButtonBorder, shape = if (isInProfileActions) LeftHalfCircleButtonBorder else ButtonBorder,
contentPadding = ButtonPadding, contentPadding = ButtonPadding,
) { ) {
Text(text = stringRes(text), textAlign = TextAlign.Center) Text(text = stringRes(text), textAlign = TextAlign.Center)
@@ -48,11 +51,14 @@ fun FollowButton(
} }
@Composable @Composable
fun UnfollowButton(onClick: () -> Unit) { fun UnfollowButton(
isInProfileActions: Boolean = false,
onClick: () -> Unit,
) {
FilledTonalButton( FilledTonalButton(
modifier = Modifier.padding(horizontal = 3.dp), modifier = Modifier.padding(horizontal = 3.dp),
onClick = onClick, onClick = onClick,
shape = LeftHalfCircleButtonBorder, shape = if (isInProfileActions) LeftHalfCircleButtonBorder else ButtonBorder,
contentPadding = ButtonPadding, contentPadding = ButtonPadding,
) { ) {
Text(text = stringRes(R.string.unfollow)) Text(text = stringRes(R.string.unfollow))
@@ -38,7 +38,7 @@ fun DisplayFollowUnfollowButton(
val isUserFollowingLoggedIn by observeUserIsFollowing(baseUser, accountViewModel.account.userProfile(), accountViewModel) val isUserFollowingLoggedIn by observeUserIsFollowing(baseUser, accountViewModel.account.userProfile(), accountViewModel)
if (isLoggedInFollowingUser) { if (isLoggedInFollowingUser) {
UnfollowButton { UnfollowButton(isInProfileActions = true) {
if (!accountViewModel.isWriteable()) { if (!accountViewModel.isWriteable()) {
accountViewModel.toastManager.toast( accountViewModel.toastManager.toast(
R.string.read_only_user, R.string.read_only_user,
@@ -50,7 +50,7 @@ fun DisplayFollowUnfollowButton(
} }
} else { } else {
if (isUserFollowingLoggedIn) { if (isUserFollowingLoggedIn) {
FollowButton(R.string.follow_back) { FollowButton(R.string.follow_back, isInProfileActions = true) {
if (!accountViewModel.isWriteable()) { if (!accountViewModel.isWriteable()) {
accountViewModel.toastManager.toast( accountViewModel.toastManager.toast(
R.string.read_only_user, R.string.read_only_user,
@@ -61,7 +61,7 @@ fun DisplayFollowUnfollowButton(
} }
} }
} else { } else {
FollowButton(R.string.follow) { FollowButton(R.string.follow, true) {
if (!accountViewModel.isWriteable()) { if (!accountViewModel.isWriteable()) {
accountViewModel.toastManager.toast( accountViewModel.toastManager.toast(
R.string.read_only_user, R.string.read_only_user,