modify repo, repo implementation and viewModel

Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
sowjanyakch 2025-05-20 12:57:58 +02:00 committed by Marcel Hibbe
parent d899824ebc
commit 98d5b3da72
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
4 changed files with 69 additions and 0 deletions

View File

@ -134,6 +134,14 @@ class ConversationInfoViewModel @Inject constructor(
val getProfileViewState: LiveData<ViewState>
get() = _getProfileViewState
private val _markConversationAsSensitiveResult = MutableLiveData<MarkConversationAsSensitiveViewState>(MarkConversationAsSensitiveViewState.None)
val markAsSensitiveResult: LiveData<MarkConversationAsSensitiveViewState>
get() = _markConversationAsSensitiveResult
private val _markConversationAsInsensitiveResult = MutableLiveData<MarkConversationAsInsensitiveViewState>(MarkConversationAsInsensitiveViewState.None)
val markAsInsensitiveResult: LiveData<MarkConversationAsInsensitiveViewState>
get() = _markConversationAsInsensitiveResult
fun getRoom(user: User, token: String) {
_viewState.value = GetRoomStartState
chatNetworkDataSource.getRoom(user, token)
@ -356,6 +364,29 @@ class ConversationInfoViewModel @Inject constructor(
}
}
fun markConversationAsSensitive(credentials: String, baseUrl: String, roomToken: String) {
viewModelScope.launch {
try {
val response = conversationsRepository.markConversationAsSensitive(credentials, baseUrl, roomToken)
_markConversationAsSensitiveResult.value = MarkConversationAsSensitiveViewState.Success(response.ocs?.meta?.statusCode!!)
} catch (exception: Exception) {
_markConversationAsSensitiveResult.value = MarkConversationAsSensitiveViewState.Error(exception.message.toString())
}
}
}
fun markConversationAsInsensitive(credentials: String, baseUrl: String, roomToken:String){
viewModelScope.launch {
try {
val response = conversationsRepository.markConversationAsInsensitive(credentials, baseUrl, roomToken)
_markConversationAsInsensitiveResult.value = MarkConversationAsInsensitiveViewState.Success(response.ocs?.meta?.statusCode!!)
} catch (exception: Exception) {
_markConversationAsInsensitiveResult.value = MarkConversationAsInsensitiveViewState.Error(exception.message.toString())
}
}
}
inner class GetRoomObserver : Observer<ConversationModel> {
override fun onSubscribe(d: Disposable) {
// unused atm
@ -405,6 +436,18 @@ class ConversationInfoViewModel @Inject constructor(
data class Error(val exception: Exception) : ClearChatHistoryViewState()
}
sealed class MarkConversationAsSensitiveViewState{
data object None: MarkConversationAsSensitiveViewState()
data class Success (val statusCode: Int): MarkConversationAsSensitiveViewState()
data class Error (val message:String): MarkConversationAsSensitiveViewState()
}
sealed class MarkConversationAsInsensitiveViewState{
data object None: MarkConversationAsInsensitiveViewState()
data class Success (val statusCode: Int): MarkConversationAsInsensitiveViewState()
data class Error (val message:String): MarkConversationAsInsensitiveViewState()
}
sealed class SetConversationReadOnlyViewState {
data object None : SetConversationReadOnlyViewState()
data object Success : SetConversationReadOnlyViewState()

View File

@ -49,4 +49,8 @@ interface ConversationsRepository {
suspend fun createRoom(credentials: String, url: String, body: CreateRoomRequest): RoomOverall
suspend fun getProfile(credentials: String, url: String): Profile?
suspend fun markConversationAsSensitive(credentials:String, baseUrl:String, roomToken:String) : GenericOverall
suspend fun markConversationAsInsensitive(credentials: String, baseUrl:String, roomToken:String): GenericOverall
}

View File

@ -121,6 +121,24 @@ class ConversationsRepositoryImpl(
return coroutineApi.getProfile(credentials, url).ocs?.data
}
override suspend fun markConversationAsSensitive(
credentials: String,
baseUrl: String,
roomToken: String
):GenericOverall {
val url = ApiUtils.getUrlForSensitiveConversation(baseUrl, roomToken)
return coroutineApi.markConversationAsSensitive(credentials,url)
}
override suspend fun markConversationAsInsensitive(
credentials: String,
baseUrl: String,
roomToken: String
): GenericOverall {
val url = ApiUtils.getUrlForSensitiveConversation(baseUrl, roomToken)
return coroutineApi.markConversationAsInsensitive(credentials,url)
}
override suspend fun banActor(
credentials: String,
url: String,

View File

@ -477,6 +477,10 @@ object ApiUtils {
return "$baseUrl$OCS_API_VERSION/apps/spreed/temp-user-avatar"
}
fun getUrlForSensitiveConversation(baseUrl:String, roomToken: String): String{
return "$baseUrl$OCS_API_VERSION/apps/spreed/api/v4/room/$roomToken/sensitive"
}
fun getUrlForUserFields(baseUrl: String): String {
return "$baseUrl$OCS_API_VERSION/cloud/user/fields"
}