Skip to content

Commit

Permalink
review fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Garzas committed Nov 25, 2024
1 parent 963fa13 commit 8630eb2
Show file tree
Hide file tree
Showing 11 changed files with 41 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -131,18 +131,13 @@ internal class ConversationFolderDataSource internal constructor(
return wrapStorageRequest {
conversationFolderDAO.addConversationToFolder(conversationId.toDao(), folderId)
}
.flatMap {
syncConversationFoldersFromLocal()
}
}

override suspend fun removeConversationFromFolder(conversationId: QualifiedID, folderId: String): Either<CoreFailure, Unit> {
kaliumLogger.withFeatureId(CONVERSATIONS_FOLDERS)
.v("Removing conversation ${conversationId.toLogString()} from folder ${folderId.obfuscateId()}")
return wrapStorageRequest {
conversationFolderDAO.removeConversationFromFolder(conversationId.toDao(), folderId)
}.flatMap {
syncConversationFoldersFromLocal()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ package com.wire.kalium.logic.feature.conversation.folder
import com.wire.kalium.logic.CoreFailure
import com.wire.kalium.logic.data.conversation.folders.ConversationFolderRepository
import com.wire.kalium.logic.data.id.ConversationId
import com.wire.kalium.logic.functional.flatMap
import com.wire.kalium.logic.functional.fold
import com.wire.kalium.util.KaliumDispatcher
import com.wire.kalium.util.KaliumDispatcherImpl
Expand Down Expand Up @@ -56,6 +57,9 @@ internal class AddConversationToFavoritesUseCaseImpl(
conversationId,
folder.id
)
.flatMap {
conversationFolderRepository.syncConversationFoldersFromLocal()
}
.fold({
AddConversationToFavoritesUseCase.Result.Failure(it)
}, {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ package com.wire.kalium.logic.feature.conversation.folder
import com.wire.kalium.logic.CoreFailure
import com.wire.kalium.logic.data.conversation.folders.ConversationFolderRepository
import com.wire.kalium.logic.data.id.ConversationId
import com.wire.kalium.logic.functional.flatMap
import com.wire.kalium.logic.functional.fold
import com.wire.kalium.util.KaliumDispatcher
import com.wire.kalium.util.KaliumDispatcherImpl
Expand Down Expand Up @@ -53,6 +54,9 @@ internal class RemoveConversationFromFavoritesUseCaseImpl(
{ RemoveConversationFromFavoritesUseCase.Result.Failure(it) },
{ folder ->
conversationFolderRepository.removeConversationFromFolder(conversationId, folder.id)
.flatMap {
conversationFolderRepository.syncConversationFoldersFromLocal()
}
.fold({
RemoveConversationFromFavoritesUseCase.Result.Failure(it)
}, {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class AddConversationToFavoritesUseCaseTest {
val (arrangement, addConversationToFavoritesUseCase) = Arrangement()
.withFavoriteFolder(Either.Right(TestFolder.FAVORITE))
.withAddConversationToFolder(Either.Right(Unit))
.withSyncConversationFoldersFromLocal(Either.Right(Unit))
.arrange()

val result = addConversationToFavoritesUseCase(TestConversation.ID)
Expand All @@ -63,6 +64,7 @@ class AddConversationToFavoritesUseCaseTest {
fun givenValidConversation_WhenFavoriteFolderNotFound_ThenReturnFailure() = runTest {
val (arrangement, addConversationToFavoritesUseCase) = Arrangement()
.withFavoriteFolder(Either.Left(CoreFailure.Unknown(null)))
.withSyncConversationFoldersFromLocal(Either.Right(Unit))
.arrange()

val result = addConversationToFavoritesUseCase(TestConversation.ID)
Expand All @@ -79,6 +81,7 @@ class AddConversationToFavoritesUseCaseTest {
val (arrangement, addConversationToFavoritesUseCase) = Arrangement()
.withFavoriteFolder(Either.Right(TestFolder.FAVORITE))
.withAddConversationToFolder(Either.Left(CoreFailure.Unknown(null)))
.withSyncConversationFoldersFromLocal(Either.Right(Unit))
.arrange()

val result = addConversationToFavoritesUseCase(TestConversation.ID)
Expand Down Expand Up @@ -117,6 +120,12 @@ class AddConversationToFavoritesUseCaseTest {
}.returns(either)
}

suspend fun withSyncConversationFoldersFromLocal(either: Either<CoreFailure, Unit>) = apply {
coEvery {
conversationFolderRepository.syncConversationFoldersFromLocal()
}.returns(either)
}

fun arrange(block: Arrangement.() -> Unit = { }) = apply(block).let { this to addConversationToFavoritesUseCase }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ class RemoveConversationFromFavoritesUseCaseTest {
val (arrangement, removeConversationUseCase) = Arrangement()
.withFavoriteFolder(Either.Right(TestFolder.FAVORITE))
.withRemoveConversationFromFolder(testConversationId, TestFolder.FAVORITE.id, Either.Right(Unit))
.withSyncConversationFoldersFromLocal(Either.Right(Unit))
.arrange()

val result = removeConversationUseCase(testConversationId)
Expand All @@ -63,6 +64,7 @@ class RemoveConversationFromFavoritesUseCaseTest {

val (arrangement, removeConversationUseCase) = Arrangement()
.withFavoriteFolder(Either.Left(CoreFailure.Unknown(null)))
.withSyncConversationFoldersFromLocal(Either.Right(Unit))
.arrange()

val result = removeConversationUseCase(testConversationId)
Expand All @@ -81,6 +83,7 @@ class RemoveConversationFromFavoritesUseCaseTest {
val (arrangement, removeConversationUseCase) = Arrangement()
.withFavoriteFolder(Either.Right(TestFolder.FAVORITE))
.withRemoveConversationFromFolder(testConversationId, TestFolder.FAVORITE.id, Either.Left(CoreFailure.Unknown(null)))
.withSyncConversationFoldersFromLocal(Either.Right(Unit))
.arrange()

val result = removeConversationUseCase(testConversationId)
Expand Down Expand Up @@ -120,6 +123,12 @@ class RemoveConversationFromFavoritesUseCaseTest {
}.returns(either)
}

suspend fun withSyncConversationFoldersFromLocal(either: Either<CoreFailure, Unit>) = apply {
coEvery {
conversationFolderRepository.syncConversationFoldersFromLocal()
}.returns(either)
}

fun arrange(block: Arrangement.() -> Unit = { }) = apply(block).let { this to removeConversationUseCase }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -109,14 +109,7 @@ CASE
END
ELSE 0
END AS interactionEnabled,
CASE WHEN EXISTS (
SELECT 1
FROM LabeledConversation lc
JOIN ConversationFolder cf ON lc.folder_id = cf.id
WHERE lc.conversation_id = Conversation.qualified_id
AND cf.folder_type = 'FAVORITE'
)
THEN 1 ELSE 0 END AS isFavorite
LabeledConversation.folder_id IS NOT NULL AS isFavorite
FROM Conversation
LEFT JOIN SelfUser
LEFT JOIN Member ON Conversation.qualified_id = Member.conversation
Expand All @@ -131,7 +124,9 @@ LEFT JOIN Connection ON Connection.qualified_conversation = Conversation.qualifi
OR Connection.status = 'NOT_CONNECTED'
AND Conversation.type IS 'CONNECTION_PENDING')
LEFT JOIN User AS connection_user ON Connection.qualified_to = connection_user.qualified_id
LEFT JOIN Call ON Call.id IS (SELECT id FROM Call WHERE Call.conversation_id = Conversation.qualified_id AND Call.status IS 'STILL_ONGOING' ORDER BY created_at DESC LIMIT 1);
LEFT JOIN Call ON Call.id IS (SELECT id FROM Call WHERE Call.conversation_id = Conversation.qualified_id AND Call.status IS 'STILL_ONGOING' ORDER BY created_at DESC LIMIT 1)
LEFT JOIN ConversationFolder AS FavoriteFolder ON FavoriteFolder.folder_type = 'FAVORITE'
LEFT JOIN LabeledConversation ON LabeledConversation.conversation_id = Conversation.qualified_id AND LabeledConversation.folder_id = FavoriteFolder.id;

selectAllConversationDetails:
SELECT * FROM ConversationDetails
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ CREATE TABLE LabeledConversation (
PRIMARY KEY (folder_id, conversation_id)
);

getFolderWithConversations:
getAllFoldersWithConversations:
SELECT
conversationFolder.id AS label_id,
conversationFolder.name AS label_name,
Expand Down
13 changes: 4 additions & 9 deletions persistence/src/commonMain/db_user/migrations/92.sqm
Original file line number Diff line number Diff line change
Expand Up @@ -111,14 +111,7 @@ CASE
END
ELSE 0
END AS interactionEnabled,
CASE WHEN EXISTS (
SELECT 1
FROM LabeledConversation lc
JOIN ConversationFolder cf ON lc.folder_id = cf.id
WHERE lc.conversation_id = Conversation.qualified_id
AND cf.folder_type = 'FAVORITE'
)
THEN 1 ELSE 0 END AS isFavorite
LabeledConversation.folder_id IS NOT NULL AS isFavorite
FROM Conversation
LEFT JOIN SelfUser
LEFT JOIN Member ON Conversation.qualified_id = Member.conversation
Expand All @@ -133,4 +126,6 @@ LEFT JOIN Connection ON Connection.qualified_conversation = Conversation.qualifi
OR Connection.status = 'NOT_CONNECTED'
AND Conversation.type IS 'CONNECTION_PENDING')
LEFT JOIN User AS connection_user ON Connection.qualified_to = connection_user.qualified_id
LEFT JOIN Call ON Call.id IS (SELECT id FROM Call WHERE Call.conversation_id = Conversation.qualified_id AND Call.status IS 'STILL_ONGOING' ORDER BY created_at DESC LIMIT 1);
LEFT JOIN Call ON Call.id IS (SELECT id FROM Call WHERE Call.conversation_id = Conversation.qualified_id AND Call.status IS 'STILL_ONGOING' ORDER BY created_at DESC LIMIT 1)
LEFT JOIN ConversationFolder AS FavoriteFolder ON FavoriteFolder.folder_type = 'FAVORITE'
LEFT JOIN LabeledConversation ON LabeledConversation.conversation_id = Conversation.qualified_id AND LabeledConversation.folder_id = FavoriteFolder.id;
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ data object ConversationDetailsWithEventsMapper {
legalHoldStatus: ConversationEntity.LegalHoldStatus,
selfUserId: QualifiedIDEntity?,
interactionEnabled: Long,
isFavorite: Long,
isFavorite: Boolean,
unreadKnocksCount: Long?,
unreadMissedCallsCount: Long?,
unreadMentionsCount: Long?,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ data object ConversationMapper {
legalHoldStatus: ConversationEntity.LegalHoldStatus,
selfUserId: QualifiedIDEntity?,
interactionEnabled: Long,
isFavorite: Long,
isFavorite: Boolean,
): ConversationViewEntity = ConversationViewEntity(
id = qualifiedId,
name = name,
Expand Down Expand Up @@ -127,7 +127,7 @@ data object ConversationMapper {
proteusVerificationStatus = proteusVerificationStatus,
legalHoldStatus = legalHoldStatus,
accentId = accentId,
isFavorite = isFavorite == 1L
isFavorite = isFavorite
)

@Suppress("LongParameterList", "UnusedParameter")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ package com.wire.kalium.persistence.dao.conversation.folder

import app.cash.sqldelight.coroutines.asFlow
import com.wire.kalium.persistence.ConversationFoldersQueries
import com.wire.kalium.persistence.GetFolderWithConversations
import com.wire.kalium.persistence.GetAllFoldersWithConversations
import com.wire.kalium.persistence.dao.QualifiedIDEntity
import com.wire.kalium.persistence.dao.conversation.ConversationDetailsWithEventsEntity
import com.wire.kalium.persistence.dao.conversation.ConversationDetailsWithEventsMapper
Expand All @@ -36,7 +36,7 @@ class ConversationFolderDAOImpl internal constructor(
private val conversationDetailsWithEventsMapper = ConversationDetailsWithEventsMapper

override suspend fun getFoldersWithConversations(): List<FolderWithConversationsEntity> = withContext(coroutineContext) {
val labeledConversationList = conversationFoldersQueries.getFolderWithConversations().executeAsList().map(::toEntity)
val labeledConversationList = conversationFoldersQueries.getAllFoldersWithConversations().executeAsList().map(::toEntity)

val folderMap = labeledConversationList.groupBy { it.folderId }.mapValues { entry ->
val folderId = entry.key
Expand All @@ -52,7 +52,7 @@ class ConversationFolderDAOImpl internal constructor(
folderMap.values.toList()
}

private fun toEntity(row: GetFolderWithConversations) = LabeledConversationEntity(
private fun toEntity(row: GetAllFoldersWithConversations) = LabeledConversationEntity(
folderId = row.label_id,
folderName = row.label_name,
folderType = row.label_type,
Expand Down

0 comments on commit 8630eb2

Please sign in to comment.