Skip to content

Commit 720835f

Browse files
committed
Fix spamming save button bug
1 parent 8630711 commit 720835f

File tree

1 file changed

+9
-0
lines changed
  • feature/metis/conversation/src/main/kotlin/de/tum/informatics/www1/artemis/native_app/feature/metis/conversation/ui

1 file changed

+9
-0
lines changed

feature/metis/conversation/src/main/kotlin/de/tum/informatics/www1/artemis/native_app/feature/metis/conversation/ui/ConversationViewModel.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@ internal open class ConversationViewModel(
126126
coroutineContext
127127
), InitialReplyTextProvider, ReplyAutoCompleteHintProvider {
128128

129+
private var currentlySavingPost = false
130+
129131
private val onRequestSoftReload = onReloadRequestAndWebsocketReconnect
130132

131133
val metisContext = MetisContext.Conversation(courseId, conversationId)
@@ -455,6 +457,11 @@ internal open class ConversationViewModel(
455457
}
456458

457459
fun toggleSavePost(post: IBasePost): Deferred<MetisModificationFailure?> {
460+
// TODO: this is a quick fix to prevent multiple save requests.
461+
// https://github.com/ls1intum/artemis-android/issues/307
462+
if (currentlySavingPost) return CompletableDeferred(null)
463+
currentlySavingPost = true
464+
458465
return viewModelScope.async(coroutineContext) {
459466
val response = if (post.isSaved == true) {
460467
savedPostService.deleteSavedPost(
@@ -470,8 +477,10 @@ internal open class ConversationViewModel(
470477
)
471478
}
472479

480+
currentlySavingPost = false
473481
response.bind { requestReload() } // Currently changing save status does not trigger a websocket update
474482
.asMetisModificationFailure(MetisModificationFailure.UPDATE_POST)
483+
475484
}
476485
}
477486

0 commit comments

Comments
 (0)