Skip to content

Commit e21d4e5

Browse files
committed
new chat architecture incl chat relay
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
1 parent 01d6300 commit e21d4e5

47 files changed

Lines changed: 3013 additions & 2201 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ configurations.configureEach {
185185
}
186186

187187
dependencies {
188-
188+
implementation 'androidx.lifecycle:lifecycle-runtime-compose:2.10.0'
189189
kapt "org.jetbrains.kotlin:kotlin-metadata-jvm:${kotlinVersion}"
190190
implementation "androidx.room:room-testing-android:${roomVersion}"
191191
implementation 'androidx.compose.foundation:foundation-layout:1.10.1'

app/src/main/java/com/nextcloud/talk/activities/BaseActivity.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import com.nextcloud.talk.utils.adjustUIForAPILevel35
4444
import com.nextcloud.talk.utils.bundle.BundleKeys
4545
import com.nextcloud.talk.utils.database.user.CurrentUserProvider
4646
import com.nextcloud.talk.utils.database.user.CurrentUserProviderOld
47+
import com.nextcloud.talk.utils.message.MessageUtils
4748
import com.nextcloud.talk.utils.preferences.AppPreferences
4849
import com.nextcloud.talk.utils.ssl.TrustManager
4950
import org.greenrobot.eventbus.EventBus
@@ -72,6 +73,9 @@ open class BaseActivity : AppCompatActivity() {
7273
@Inject
7374
lateinit var viewThemeUtils: ViewThemeUtils
7475

76+
@Inject
77+
lateinit var messageUtils: MessageUtils
78+
7579
@Inject
7680
lateinit var context: Context
7781

app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,10 @@ class CallActivity : CallBaseActivity() {
287287
private var isBreakoutRoom = false
288288
private val localParticipantMessageListener = LocalParticipantMessageListener { token ->
289289
switchToRoomToken = token
290-
hangup(true, false)
290+
hangup(
291+
shutDownView = true,
292+
endCallForAll = false
293+
)
291294
}
292295
private val offerMessageListener = OfferMessageListener { sessionId, roomType, sdp, nick ->
293296
getOrCreatePeerConnectionWrapperForSessionIdAndType(
@@ -1927,7 +1930,7 @@ class CallActivity : CallBaseActivity() {
19271930

19281931
when (messageType) {
19291932
"usersInRoom" ->
1930-
internalSignalingMessageReceiver.process(signaling.messageWrapper as List<Map<String?, Any?>?>?)
1933+
internalSignalingMessageReceiver.process(signaling.messageWrapper as List<Map<String?, Any?>>)
19311934

19321935
"message" -> {
19331936
val ncSignalingMessage = LoganSquare.parse(
@@ -2743,11 +2746,11 @@ class CallActivity : CallBaseActivity() {
27432746
* All listeners are called in the main thread.
27442747
*/
27452748
private class InternalSignalingMessageReceiver : SignalingMessageReceiver() {
2746-
fun process(users: List<Map<String?, Any?>?>?) {
2749+
fun process(users: List<Map<String?, Any?>>) {
27472750
processUsersInRoom(users)
27482751
}
27492752

2750-
fun process(message: NCSignalingMessage?) {
2753+
fun process(message: NCSignalingMessage) {
27512754
processSignalingMessage(message)
27522755
}
27532756
}

app/src/main/java/com/nextcloud/talk/activities/ParticipantHandler.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ class ParticipantHandler(
139139
_uiState.update { it.copy(raisedHand = state) }
140140
}
141141

142-
override fun onReaction(reaction: String?) {
142+
override fun onReaction(reaction: String) {
143143
Log.d(TAG, "onReaction")
144144
}
145145

app/src/main/java/com/nextcloud/talk/adapters/messages/IncomingTextMessageViewHolder.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
package com.nextcloud.talk.adapters.messages
1111

1212
import android.content.Context
13+
import android.text.SpannableStringBuilder
1314
import android.util.Log
1415
import android.util.TypedValue
1516
import android.view.View
@@ -150,10 +151,10 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :
150151
binding.messageAuthor.visibility = View.GONE
151152
}
152153
binding.messageText.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize)
153-
binding.messageText.text = processedMessageText
154+
// binding.messageText.text = processedMessageText
154155
// just for debugging:
155-
// binding.messageText.text =
156-
// SpannableStringBuilder(processedMessageText).append(" (" + message.jsonMessageId + ")")
156+
binding.messageText.text =
157+
SpannableStringBuilder(processedMessageText).append(" (" + message.jsonMessageId + ")")
157158
} else {
158159
binding.checkboxContainer.visibility = View.VISIBLE
159160
binding.messageText.visibility = View.GONE

app/src/main/java/com/nextcloud/talk/adapters/messages/OutcomingTextMessageViewHolder.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
package com.nextcloud.talk.adapters.messages
1111

1212
import android.content.Context
13+
import android.text.SpannableStringBuilder
1314
import android.util.Log
1415
import android.util.TypedValue
1516
import android.view.View
@@ -163,10 +164,10 @@ class OutcomingTextMessageViewHolder(itemView: View) :
163164

164165
binding.messageTime.layoutParams = layoutParams
165166
viewThemeUtils.platform.colorTextView(binding.messageText, ColorRole.ON_SURFACE_VARIANT)
166-
binding.messageText.text = processedMessageText
167+
// binding.messageText.text = processedMessageText
167168
// just for debugging:
168-
// binding.messageText.text =
169-
// SpannableStringBuilder(processedMessageText).append(" (" + message.jsonMessageId + ")")
169+
binding.messageText.text =
170+
SpannableStringBuilder(processedMessageText).append(" (" + message.jsonMessageId + ")")
170171
} else {
171172
binding.messageText.visibility = View.GONE
172173
binding.checkboxContainer.visibility = View.VISIBLE

app/src/main/java/com/nextcloud/talk/adapters/messages/PreviewMessageViewHolder.kt

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -112,35 +112,36 @@ abstract class PreviewMessageViewHolder(itemView: View?, payload: Any?) :
112112
clickView = image
113113
messageText.visibility = View.VISIBLE
114114
if (message.getCalculateMessageType() === ChatMessage.MessageType.SINGLE_NC_ATTACHMENT_MESSAGE) {
115-
fileViewerUtils = FileViewerUtils(context!!, message.activeUser!!)
116-
val fileName = message.selectedIndividualHashMap!![KEY_NAME]
117-
118-
messageText.text = fileName
119-
120-
if (message.activeUser != null &&
121-
message.activeUser!!.username != null &&
122-
message.activeUser!!.baseUrl != null
123-
) {
124-
clickView!!.setOnClickListener { v: View? ->
125-
fileViewerUtils!!.openFile(
126-
message,
127-
ProgressUi(progressBar, messageText, image)
128-
)
129-
}
130-
clickView!!.setOnLongClickListener {
131-
previewMessageInterface!!.onPreviewMessageLongClick(message)
132-
true
115+
message.activeUser?.let {
116+
fileViewerUtils = FileViewerUtils(context!!, it)
117+
val fileName = message.selectedIndividualHashMap!![KEY_NAME]
118+
messageText.text = fileName
119+
if (
120+
it.username != null &&
121+
it.baseUrl != null
122+
) {
123+
clickView!!.setOnClickListener { v: View? ->
124+
fileViewerUtils!!.openFile(
125+
message,
126+
ProgressUi(progressBar, messageText, image)
127+
)
128+
}
129+
clickView!!.setOnLongClickListener {
130+
previewMessageInterface!!.onPreviewMessageLongClick(message)
131+
true
132+
}
133133
}
134-
} else {
134+
135+
fileViewerUtils?.resumeToUpdateViewsByProgress(
136+
message.selectedIndividualHashMap!![KEY_NAME]!!,
137+
message.selectedIndividualHashMap!![KEY_ID]!!,
138+
message.selectedIndividualHashMap!![KEY_MIMETYPE],
139+
message.openWhenDownloaded,
140+
ProgressUi(progressBar, messageText, image)
141+
)
142+
} ?: {
135143
Log.e(TAG, "failed to set click listener because activeUser, username or baseUrl were null")
136144
}
137-
fileViewerUtils!!.resumeToUpdateViewsByProgress(
138-
message.selectedIndividualHashMap!![KEY_NAME]!!,
139-
message.selectedIndividualHashMap!![KEY_ID]!!,
140-
message.selectedIndividualHashMap!![KEY_MIMETYPE],
141-
message.openWhenDownloaded,
142-
ProgressUi(progressBar, messageText, image)
143-
)
144145
} else if (message.getCalculateMessageType() === ChatMessage.MessageType.SINGLE_LINK_GIPHY_MESSAGE) {
145146
messageText.text = "GIPHY"
146147
DisplayUtils.setClickableString("GIPHY", "https://giphy.com", messageText)

app/src/main/java/com/nextcloud/talk/api/NcApi.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -325,18 +325,6 @@ Observable<Response<GenericOverall>> setPassword2(@Header("Authorization") Strin
325325
Observable<RoomCapabilitiesOverall> getRoomCapabilities(@Header("Authorization") String authorization,
326326
@Url String url);
327327

328-
/*
329-
QueryMap items are as follows:
330-
- "lookIntoFuture": int (0 or 1),
331-
- "limit" : int, range 100-200,
332-
- "timeout": used with look into future, 30 default, 60 at most
333-
- "lastKnownMessageId", int, use one from X-Chat-Last-Given
334-
*/
335-
@GET
336-
Observable<Response<ChatOverall>> pullChatMessages(@Header("Authorization") String authorization,
337-
@Url String url,
338-
@QueryMap Map<String, Integer> fields);
339-
340328
/*
341329
Fieldmap items are as follows:
342330
- "message": ,

app/src/main/java/com/nextcloud/talk/api/NcApiCoroutines.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import com.nextcloud.talk.models.json.threads.ThreadsOverall
2727
import com.nextcloud.talk.models.json.userAbsence.UserAbsenceOverall
2828
import okhttp3.MultipartBody
2929
import okhttp3.RequestBody
30+
import retrofit2.Response
3031
import retrofit2.http.Body
3132
import retrofit2.http.DELETE
3233
import retrofit2.http.Field
@@ -373,4 +374,11 @@ interface NcApiCoroutines {
373374

374375
@GET
375376
suspend fun getScheduledMessage(@Header("Authorization") authorization: String, @Url url: String): ChatOverall
377+
378+
@GET
379+
suspend fun pullChatMessages(
380+
@Header("Authorization") authorization: String,
381+
@Url url: String,
382+
@QueryMap fields: Map<String, Int>
383+
): Response<ChatOverall>
376384
}

0 commit comments

Comments
 (0)