mirror of
https://github.com/nextcloud/talk-android
synced 2025-03-07 06:39:45 +00:00
WIP
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
This commit is contained in:
parent
3369e71a21
commit
8eeca17d86
@ -727,4 +727,12 @@ public interface NcApi {
|
||||
@DELETE
|
||||
Observable<GenericOverall> unbanActor(@Header("Authorization") String authorization,
|
||||
@Url String url);
|
||||
|
||||
@POST
|
||||
Observable<GenericOverall> archiveConversation(@Header("Authorization") String authorization,
|
||||
@Url String url);
|
||||
|
||||
@DELETE
|
||||
Observable<GenericOverall> unarchiveConversation(@Header("Authorization") String authorization,
|
||||
@Url String url);
|
||||
}
|
@ -179,17 +179,36 @@ class ConversationInfoActivity :
|
||||
databaseStorageModule = DatabaseStorageModule(conversationUser, conversationToken)
|
||||
}
|
||||
|
||||
if (!spreedCapabilities.features!!.contains(ARCHIVED_CONVERSATIONS)) {
|
||||
binding.archiveConversationBtn.visibility = GONE
|
||||
}
|
||||
|
||||
binding.deleteConversationAction.setOnClickListener { showDeleteConversationDialog() }
|
||||
binding.leaveConversationAction.setOnClickListener { leaveConversation() }
|
||||
binding.clearConversationHistory.setOnClickListener { showClearHistoryDialog() }
|
||||
binding.addParticipantsAction.setOnClickListener { addParticipants() }
|
||||
binding.listBansButton.setOnClickListener { listBans() }
|
||||
binding.archiveConversationBtn.setOnClickListener {
|
||||
if (conversation!!.isArchived) {
|
||||
viewModel.unarchiveConversation(conversationUser, conversationToken)
|
||||
} else {
|
||||
viewModel.archiveConversation(conversationUser, conversationToken)
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.getRoom(conversationUser, conversationToken)
|
||||
|
||||
themeTextViews()
|
||||
themeSwitchPreferences()
|
||||
|
||||
if (conversation!!.isArchived) {
|
||||
binding.archiveConversationIcon.setImageDrawable(resources.getDrawable(R.drawable.ic_eye))
|
||||
binding.archiveConversationText.text = resources.getString(R.string.unarchive_conversation)
|
||||
} else {
|
||||
binding.archiveConversationIcon.setImageDrawable(resources.getDrawable(R.drawable.outline_archive_24))
|
||||
binding.archiveConversationText.text = resources.getString(R.string.archive_conversation)
|
||||
}
|
||||
|
||||
binding.addParticipantsAction.visibility = GONE
|
||||
|
||||
binding.progressBar.let { viewThemeUtils.platform.colorCircularProgressBar(it, ColorRole.PRIMARY) }
|
||||
@ -1445,6 +1464,7 @@ class ConversationInfoActivity :
|
||||
private const val DEMOTE_OR_PROMOTE = 1
|
||||
private const val REMOVE_FROM_CONVERSATION = 2
|
||||
private const val BAN_FROM_CONVERSATION = 3
|
||||
private const val ARCHIVED_CONVERSATIONS = "archived-conversations"
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -18,6 +18,7 @@ import com.nextcloud.talk.models.domain.ConversationModel
|
||||
import com.nextcloud.talk.models.json.capabilities.SpreedCapability
|
||||
import com.nextcloud.talk.models.json.generic.GenericOverall
|
||||
import com.nextcloud.talk.models.json.participants.TalkBan
|
||||
import com.nextcloud.talk.repositories.conversations.ConversationsRepository
|
||||
import com.nextcloud.talk.utils.ApiUtils
|
||||
import io.reactivex.Observer
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
@ -26,7 +27,8 @@ import io.reactivex.schedulers.Schedulers
|
||||
import javax.inject.Inject
|
||||
|
||||
class ConversationInfoViewModel @Inject constructor(
|
||||
private val chatNetworkDataSource: ChatNetworkDataSource
|
||||
private val chatNetworkDataSource: ChatNetworkDataSource,
|
||||
private val conversationsRepository: ConversationsRepository
|
||||
) : ViewModel() {
|
||||
|
||||
object LifeCycleObserver : DefaultLifecycleObserver {
|
||||
@ -200,6 +202,14 @@ class ConversationInfoViewModel @Inject constructor(
|
||||
})
|
||||
}
|
||||
|
||||
fun archiveConversation(user: User, token: String) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
fun unarchiveConversation(user: User, token: String) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
inner class GetRoomObserver : Observer<ConversationModel> {
|
||||
override fun onSubscribe(d: Disposable) {
|
||||
// unused atm
|
||||
|
@ -59,6 +59,7 @@ class ConversationModel(
|
||||
var recordingConsentRequired: Int = 0,
|
||||
var remoteServer: String? = null,
|
||||
var remoteToken: String? = null,
|
||||
var isArchived: Boolean = false,
|
||||
|
||||
// attributes that don't come from API. This should be changed?!
|
||||
var password: String? = null
|
||||
@ -120,7 +121,8 @@ class ConversationModel(
|
||||
callStartTime = conversation.callStartTime,
|
||||
recordingConsentRequired = conversation.recordingConsentRequired,
|
||||
remoteServer = conversation.remoteServer,
|
||||
remoteToken = conversation.remoteToken
|
||||
remoteToken = conversation.remoteToken,
|
||||
isArchived = conversation.isArchived
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -159,5 +159,8 @@ data class Conversation(
|
||||
var remoteServer: String? = "",
|
||||
|
||||
@JsonField(name = ["remoteToken"])
|
||||
var remoteToken: String? = ""
|
||||
var remoteToken: String? = "",
|
||||
|
||||
@JsonField(name = ["isArchived"])
|
||||
var isArchived: Boolean
|
||||
) : Parcelable
|
||||
|
@ -7,6 +7,7 @@
|
||||
*/
|
||||
package com.nextcloud.talk.repositories.conversations
|
||||
|
||||
import com.nextcloud.talk.models.json.generic.GenericOverall
|
||||
import io.reactivex.Observable
|
||||
|
||||
interface ConversationsRepository {
|
||||
@ -29,4 +30,8 @@ interface ConversationsRepository {
|
||||
val successful: Boolean
|
||||
)
|
||||
fun resendInvitations(token: String): Observable<ResendInvitationsResult>
|
||||
|
||||
fun archiveConversation(credentials: String, url: String): Observable<GenericOverall>
|
||||
|
||||
fun unarchiveConversation(credentials: String, url: String): Observable<GenericOverall>
|
||||
}
|
||||
|
@ -11,6 +11,7 @@ import com.bluelinelabs.logansquare.LoganSquare
|
||||
import com.nextcloud.talk.api.NcApi
|
||||
import com.nextcloud.talk.data.user.model.User
|
||||
import com.nextcloud.talk.models.json.conversations.password.PasswordOverall
|
||||
import com.nextcloud.talk.models.json.generic.GenericOverall
|
||||
import com.nextcloud.talk.repositories.conversations.ConversationsRepository.AllowGuestsResult
|
||||
import com.nextcloud.talk.repositories.conversations.ConversationsRepository.PasswordResult
|
||||
import com.nextcloud.talk.repositories.conversations.ConversationsRepository.ResendInvitationsResult
|
||||
@ -89,6 +90,14 @@ class ConversationsRepositoryImpl(
|
||||
}
|
||||
}
|
||||
|
||||
override fun archiveConversation(credentials: String, url: String): Observable<GenericOverall> {
|
||||
return api.archiveConversation(credentials, url)
|
||||
}
|
||||
|
||||
override fun unarchiveConversation(credentials: String, url: String): Observable<GenericOverall> {
|
||||
return api.unarchiveConversation(credentials, url)
|
||||
}
|
||||
|
||||
private fun apiVersion(): Int {
|
||||
return ApiUtils.getConversationApiVersion(user, intArrayOf(ApiUtils.API_V4))
|
||||
}
|
||||
|
18
app/src/main/res/drawable/outline_archive_24.xml
Normal file
18
app/src/main/res/drawable/outline_archive_24.xml
Normal file
@ -0,0 +1,18 @@
|
||||
<!--
|
||||
~ Nextcloud Talk - Android Client
|
||||
~
|
||||
~ SPDX-FileCopyrightText: 2024 Google LLC
|
||||
~ SPDX-License-Identifier: Apache-2.0
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:height="24dp"
|
||||
android:tint="#000000"
|
||||
android:viewportHeight="960"
|
||||
android:viewportWidth="960"
|
||||
android:width="24dp">
|
||||
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M480,720L640,560L584,504L520,568L520,400L440,400L440,568L376,504L320,560L480,720ZM200,320L200,760Q200,760 200,760Q200,760 200,760L760,760Q760,760 760,760Q760,760 760,760L760,320L200,320ZM200,840Q167,840 143.5,816.5Q120,793 120,760L120,261Q120,247 124.5,234Q129,221 138,210L188,149Q199,135 215.5,127.5Q232,120 250,120L710,120Q728,120 744.5,127.5Q761,135 772,149L822,210Q831,221 835.5,234Q840,247 840,261L840,760Q840,793 816.5,816.5Q793,840 760,840L200,840ZM216,240L744,240L710,200Q710,200 710,200Q710,200 710,200L250,200Q250,200 250,200Q250,200 250,200L216,240ZM480,540L480,540L480,540Q480,540 480,540Q480,540 480,540L480,540Q480,540 480,540Q480,540 480,540Z" />
|
||||
|
||||
</vector>
|
@ -383,6 +383,37 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/archive_conversation_btn"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="@dimen/standard_margin"
|
||||
android:paddingTop="@dimen/standard_half_margin"
|
||||
android:paddingEnd="@dimen/standard_margin"
|
||||
android:paddingBottom="@dimen/standard_half_margin"
|
||||
android:orientation="horizontal"
|
||||
android:background="?android:attr/selectableItemBackground">
|
||||
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/archive_conversation_icon"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginEnd="@dimen/standard_margin"
|
||||
android:contentDescription="@null"
|
||||
tools:src="@drawable/outline_archive_24"
|
||||
app:tint="@color/grey_600" />
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/archive_conversation_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_vertical"
|
||||
tools:text="@string/unarchive_conversation"
|
||||
android:textSize="@dimen/headline_text_size" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/danger_zone_options"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -815,4 +815,6 @@ How to translate with transifex:
|
||||
<string name="show_ban_reason">Show ban reason</string>
|
||||
<string name="error_unbanning">Error occurred when unbanning participant</string>
|
||||
<string name="connection_lost">Connection lost</string>
|
||||
<string name="archive_conversation">Archive Conversation</string>
|
||||
<string name="unarchive_conversation">Unarchive Conversation</string>
|
||||
</resources>
|
||||
|
Loading…
Reference in New Issue
Block a user