Skip to content

Commit

Permalink
feat: implement picture update
Browse files Browse the repository at this point in the history
in PictureOverlay
  • Loading branch information
armouldr committed Dec 17, 2024
1 parent d990ea4 commit 4a3531e
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 9 deletions.
23 changes: 19 additions & 4 deletions app/src/main/java/com/android/unio/model/event/EventViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,9 @@ constructor(
fun addEventUserPicture(
pictureInputStream: InputStream,
event: Event,
picture: EventUserPicture
picture: EventUserPicture,
onSuccess: () -> Unit,
onFailure: (Exception) -> Unit
) {
val picId = eventUserPictureRepository.getNewUid()
imageRepository.uploadImage(
Expand All @@ -290,12 +292,16 @@ constructor(
event.eventPictures.add(newEventPicture.uid)
updateEventWithoutImage(
event,
{ event.eventPictures.add(newEventPicture) },
{
event.eventPictures.add(newEventPicture)
onSuccess()
},
{ e ->
Log.e("EventViewModel", "An error occurred while updating an event: $e")
})
},
{ e ->
onFailure(e)
Log.e("EventViewModel", "An error occurred while adding an event picture: $e")
})
},
Expand All @@ -308,7 +314,12 @@ constructor(
* @param event The event in question.
* @param picture The [EventUserPicture] to update
*/
fun updateEventUserPictureWithoutImage(event: Event, picture: EventUserPicture) {
fun updateEventUserPictureWithoutImage(
event: Event,
picture: EventUserPicture,
onSuccess: () -> Unit,
onFailure: (Exception) -> Unit
) {
eventUserPictureRepository.addEventUserPicture(
picture,
{
Expand All @@ -319,8 +330,12 @@ constructor(
{ event.eventPictures.add(picture) },
{ e -> Log.e("EventViewModel", "An error occurred while updating an event: $e") })
}
onSuccess()
},
{ e -> Log.e("EventViewModel", "An error occurred while adding an event picture: $e") })
{ e ->
onFailure(e)
Log.e("EventViewModel", "An error occurred while adding an event picture: $e")
})
}

/**
Expand Down
24 changes: 20 additions & 4 deletions app/src/main/java/com/android/unio/ui/event/EventDetails.kt
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,14 @@ fun EventScreenScaffold(
},
content = {
EventScreenContent(
navigationAction, mapViewModel, event, user!!, organisers, pagerState, tabList)
navigationAction,
mapViewModel,
eventViewModel,
event,
user!!,
organisers,
pagerState,
tabList)
})

NotificationSender(
Expand All @@ -252,6 +259,7 @@ fun EventScreenScaffold(
fun EventScreenContent(
navigationAction: NavigationAction,
mapViewModel: MapViewModel,
eventViewModel: EventViewModel,
event: Event,
user: User,
organisers: List<Association>,
Expand All @@ -278,7 +286,8 @@ fun EventScreenContent(
Modifier.fillMaxSize()
.padding(9.dp)
.testTag(EventDetailsTestTags.EVENT_DETAILS_PAGER)) { page ->
EventDetailsBody(navigationAction, mapViewModel, event, user, context, page)
EventDetailsBody(
navigationAction, mapViewModel, eventViewModel, event, user, context, page)
}
}
}
Expand Down Expand Up @@ -398,6 +407,7 @@ fun EventDate(event: Event) {
fun EventDetailsBody(
navigationAction: NavigationAction,
mapViewModel: MapViewModel,
eventViewModel: EventViewModel,
event: Event,
user: User,
context: Context,
Expand All @@ -406,7 +416,7 @@ fun EventDetailsBody(
if (page == 0) {
EventDetailsDescriptionTab(navigationAction, mapViewModel, event, context)
} else if (page == 1) {
EventDetailsPicturesTab(event, user, context)
EventDetailsPicturesTab(event, user, context, eventViewModel)
}
}

Expand All @@ -418,7 +428,12 @@ fun EventDetailsBody(
* @param context The local [Context]
*/
@Composable
fun EventDetailsPicturesTab(event: Event, user: User, context: Context) {
fun EventDetailsPicturesTab(
event: Event,
user: User,
context: Context,
eventViewModel: EventViewModel
) {
val eventPictures by event.eventPictures.list.collectAsState()
var showFullScreen by remember { mutableStateOf(false) }
var selectedPictureUri by remember { mutableStateOf(Uri.EMPTY) }
Expand Down Expand Up @@ -467,6 +482,7 @@ fun EventDetailsPicturesTab(event: Event, user: User, context: Context) {
},
pagerState,
eventPictures,
eventViewModel,
user)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.android.unio.ui.event.overlay

import android.util.Log
import android.widget.Toast
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row
Expand All @@ -18,6 +20,7 @@ import androidx.compose.material3.IconButton
import androidx.compose.material3.IconButtonDefaults
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
Expand Down Expand Up @@ -62,6 +65,13 @@ fun PictureOverlay(
val context = LocalContext.current
val iconSize = 40.dp
var enableButton by remember { mutableStateOf(true) }
val event by eventViewModel.selectedEvent.collectAsState()

if (event == null) {
Log.e("PictureOverlay", "Event is null")
Toast.makeText(LocalContext.current, "An error occurred.", Toast.LENGTH_SHORT).show()
return
}
val onClickArrow: (Boolean) -> Unit = { isRight: Boolean ->
if (isRight && pagerState.currentPage < eventPictures.size - 1) {
scope.launch { pagerState.animateScrollToPage(pagerState.currentPage + 1) }
Expand All @@ -78,8 +88,16 @@ fun PictureOverlay(
val onClickLike = {
enableButton = false
val picture = eventPictures[pagerState.currentPage]
picture.likes.add(user.uid)
if (isLiked == true) {
// unlike
picture.likes.remove(user.uid)
} else {

picture.likes.add(user.uid)
}
isLiked = !isLiked
eventViewModel.updateEventUserPictureWithoutImage(
event = event!!, picture = picture, { enableButton = true }, {})
}
Dialog(
onDismissRequest = onDismiss,
Expand Down

0 comments on commit 4a3531e

Please sign in to comment.