Skip to content

Commit

Permalink
#154 fix liking and liked by after liking
Browse files Browse the repository at this point in the history
  • Loading branch information
Hiebeler committed Jan 29, 2025
1 parent 04ef1fc commit 400f13d
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,10 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.VolumeOff
import androidx.compose.material.icons.automirrored.outlined.VolumeUp
import androidx.compose.material.icons.filled.Bookmark
import androidx.compose.material.icons.filled.Favorite
import androidx.compose.material.icons.outlined.BookmarkBorder
import androidx.compose.material.icons.outlined.Cached
import androidx.compose.material.icons.outlined.ChatBubbleOutline
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material.icons.outlined.Description
import androidx.compose.material.icons.outlined.FavoriteBorder
import androidx.compose.material.icons.outlined.LocationOn
import androidx.compose.material.icons.outlined.MoreHoriz
import androidx.compose.material3.AlertDialog
Expand Down Expand Up @@ -549,22 +545,22 @@ fun PostComposable(
}

Row {
if (post.likedBy?.username?.isNotBlank() == true) {
if (viewModel.post!!.likedBy?.username?.isNotBlank() == true) {
Text(text = stringResource(id = R.string.liked_by) + " ", fontSize = 14.sp)
Text(text = post.likedBy.username,
Text(text = viewModel.post!!.likedBy!!.username!!,
fontSize = 14.sp,
fontWeight = FontWeight.Bold,
modifier = Modifier.clickable {
Navigate.navigate(
"profile_screen/" + post.likedBy.id, navController
"profile_screen/" + viewModel.post!!.likedBy!!.id, navController
)
})
if (post.favouritesCount > 1) {
Text(
text = " " + stringResource(id = R.string.and) + " ",
fontSize = 14.sp
)
Text(text = (post.favouritesCount - 1).toString() + " " + stringResource(
Text(text = (viewModel.post!!.favouritesCount - 1).toString() + " " + stringResource(
id = R.string.others
),
fontWeight = FontWeight.Bold,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import coil.ImageLoader
import coil.request.ImageRequest
import coil.request.SuccessResult
import com.daniebeler.pfpixelix.common.Resource
import com.daniebeler.pfpixelix.domain.model.LikedBy
import com.daniebeler.pfpixelix.domain.model.Post
import com.daniebeler.pfpixelix.domain.usecase.BookmarkPostUseCase
import com.daniebeler.pfpixelix.domain.usecase.CreateReplyUseCase
Expand Down Expand Up @@ -85,6 +86,8 @@ class PostViewModel @Inject constructor(
var showPost: Boolean by mutableStateOf(false)

var myAccountId: String? = null
var myUsername: String? = null


var isAltTextButtonHidden by mutableStateOf(false)

Expand All @@ -93,6 +96,7 @@ class PostViewModel @Inject constructor(
init {
CoroutineScope(Dispatchers.Default).launch {
myAccountId = currentLoginDataUseCase()!!.accountId
myUsername = currentLoginDataUseCase()!!.username
}

viewModelScope.launch {
Expand Down Expand Up @@ -230,21 +234,31 @@ class PostViewModel @Inject constructor(
fun likePost(postId: String) {
if (post?.favourited == false) {
post = post?.copy(
favourited = true, favouritesCount = post?.favouritesCount?.plus(
1
) ?: 0
favourited = true,
favouritesCount = post!!.favouritesCount + 1,
likedBy = post!!.likedBy?.copy(
totalCount = post!!.likedBy!!.totalCount + 1,
others = true,
username = post!!.likedBy!!.username ?: myUsername
) ?: LikedBy(
totalCount = 1, others = true, username = myUsername, id = myAccountId
)
)
CoroutineScope(Dispatchers.Default).launch {
likePostUseCase(postId).onEach { result ->
when (result) {
is Resource.Success -> {
post = post?.copy(
favourited = result.data?.favourited ?: true, favouritesCount = result.data?.favouritesCount ?: 0
favourited = result.data?.favourited ?: true,
favouritesCount = result.data?.favouritesCount ?: 0,
)
}

is Resource.Error -> {
post = post?.copy(favourited = false, favouritesCount = result.data?.favouritesCount?.minus(1) ?: 0)
post = post?.copy(
favourited = false,
favouritesCount = result.data?.favouritesCount?.minus(1) ?: 0
)
}

is Resource.Loading -> {
Expand All @@ -256,23 +270,33 @@ class PostViewModel @Inject constructor(
}

fun unlikePost(postId: String) {
if (post?.favourited == true) {
CoroutineScope(Dispatchers.Default).launch {
unlikePostUseCase(postId).onEach { result ->
when (result) {
is Resource.Success -> {
post = post?.copy(favourited = result.data?.favourited ?: false)
}
if (!post!!.favourited) {
return
}
post = post?.copy(
favourited = false, favouritesCount = post?.favouritesCount?.minus(
1
) ?: 0
)

is Resource.Error -> {
post = post?.copy(favourited = true)
}
CoroutineScope(Dispatchers.Default).launch {
unlikePostUseCase(postId).onEach { result ->
when (result) {
is Resource.Success -> {
post = post?.copy(favourited = result.data?.favourited ?: false)
}

is Resource.Loading -> {
}
is Resource.Error -> {
post = post?.copy(
favourited = true,
favouritesCount = result.data?.favouritesCount?.plus(1) ?: 0
)
}
}.launchIn(viewModelScope)
}

is Resource.Loading -> {
}
}
}.launchIn(viewModelScope)
}
}

Expand Down

0 comments on commit 400f13d

Please sign in to comment.