Skip to content

Commit 3b70480

Browse files
committed
Adjust remote message show logic.
1 parent 7c25f1d commit 3b70480

File tree

8 files changed

+806
-30
lines changed

8 files changed

+806
-30
lines changed

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ dependencies {
5959
implementation 'androidx.appcompat:appcompat:1.2.0'
6060
implementation 'com.google.android.material:material:1.3.0'
6161
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
62-
implementation "androidx.fragment:fragment-ktx:1.3.0"
62+
implementation "androidx.fragment:fragment-ktx:1.3.2"
6363
implementation deps.view.swiperefresh
6464

6565
implementation deps.rxJava.runtime

app/src/main/java/com/tans/tfiletransporter/ui/activity/filetransport/MessageFragment.kt

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,8 @@ import net.yslibrary.android.keyboardvisibilityevent.KeyboardVisibilityEvent
2020
import net.yslibrary.android.keyboardvisibilityevent.KeyboardVisibilityEventListener
2121
import org.kodein.di.instance
2222

23-
data class Message(
24-
val isRemote: Boolean,
25-
val timeMilli: Long,
26-
val message: String
27-
)
2823

29-
class MessageFragment : BaseFragment<MessageFragmentBinding, List<Message>>(
24+
class MessageFragment : BaseFragment<MessageFragmentBinding, List<FileTransportScopeData.Companion.Message>>(
3025
R.layout.message_fragment,
3126
emptyList()
3227
) {
@@ -37,22 +32,16 @@ class MessageFragment : BaseFragment<MessageFragmentBinding, List<Message>>(
3732

3833
override fun initViews(binding: MessageFragmentBinding) {
3934

40-
binding.messageRv.adapter = SimpleAdapterSpec<Message, MessageItemLayoutBinding>(
35+
binding.messageRv.adapter = SimpleAdapterSpec<FileTransportScopeData.Companion.Message, MessageItemLayoutBinding>(
4136
layoutId = R.layout.message_item_layout,
4237
bindData = { _, data, lBinding -> lBinding.message = data },
4338
dataUpdater = bindState()
4439
).toAdapter { if (it.isNotEmpty()) { binding.messageRv.scrollToPosition(it.size - 1) } }
4540

46-
fileTransportScopeData.remoteMessageEvent
47-
.flatMapSingle { remoteMessage ->
48-
updateState { oldState ->
49-
val message = Message(
50-
isRemote = true,
51-
timeMilli = System.currentTimeMillis(),
52-
message = remoteMessage
53-
)
54-
val newState = oldState + message
55-
newState
41+
fileTransportScopeData.messagesEvent
42+
.flatMapSingle { messages ->
43+
updateState {
44+
messages
5645
}
5746
}
5847
.bindLife()
@@ -68,13 +57,14 @@ class MessageFragment : BaseFragment<MessageFragmentBinding, List<Message>>(
6857
newSendMessageShareWriterHandle(sendingMessage)
6958
)
7059
}
71-
updateState { oldState ->
72-
oldState + Message(
73-
isRemote = false,
74-
timeMilli = System.currentTimeMillis(),
75-
message = sendingMessage
76-
)
77-
}.await()
60+
61+
val messages = fileTransportScopeData.messagesEvent.firstOrError().await()
62+
val newMessage = FileTransportScopeData.Companion.Message(
63+
isRemote = false,
64+
timeMilli = System.currentTimeMillis(),
65+
message = sendingMessage
66+
)
67+
fileTransportScopeData.messagesEvent.onNext(messages + newMessage)
7868
withContext(Dispatchers.Main) {
7969
binding.editText.text?.clear()
8070
// dialog.cancel()

app/src/main/java/com/tans/tfiletransporter/ui/activity/filetransport/activity/FileTransportActivity.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import org.kodein.di.bind
3131
import org.kodein.di.instance
3232
import org.kodein.di.singleton
3333
import java.net.InetAddress
34-
import java.net.InetSocketAddress
3534
import java.util.*
3635
import kotlin.runCatching
3736

@@ -116,7 +115,13 @@ class FileTransportActivity : BaseActivity<FileTransportActivityBinding, FileTra
116115

117116
sendMessageChain { _, inputStream, limit, _ ->
118117
val message = inputStream.readString(limit)
119-
fileTransportScopeData.remoteMessageEvent.onNext(message)
118+
val newMessage = FileTransportScopeData.Companion.Message(
119+
isRemote = true,
120+
message = message,
121+
timeMilli = System.currentTimeMillis()
122+
)
123+
val messages: List<FileTransportScopeData.Companion.Message> = fileTransportScopeData.messagesEvent.firstOrError().await()
124+
fileTransportScopeData.messagesEvent.onNext(messages + newMessage)
120125
}
121126
}
122127
}

app/src/main/java/com/tans/tfiletransporter/ui/activity/filetransport/activity/FileTransportScopeData.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.tans.tfiletransporter.ui.activity.filetransport.activity
22

33
import com.tans.tfiletransporter.net.filetransporter.FileTransporter
44
import com.tans.tfiletransporter.net.model.ResponseFolderModel
5+
import io.reactivex.subjects.BehaviorSubject
56
import io.reactivex.subjects.PublishSubject
67
import io.reactivex.subjects.Subject
78

@@ -13,6 +14,15 @@ class FileTransportScopeData(
1314
// Floating Action Button in Activity clicks event, Activity To Event
1415
val floatBtnEvent: Subject<Unit> = PublishSubject.create<Unit>().toSerialized()
1516

16-
val remoteMessageEvent: Subject<String> = PublishSubject.create<String>().toSerialized()
17+
val messagesEvent: Subject<List<Message>> = BehaviorSubject.createDefault<List<Message>>(emptyList()).toSerialized()
1718
val remoteFolderModelEvent: Subject<ResponseFolderModel> = PublishSubject.create<ResponseFolderModel>().toSerialized()
19+
20+
companion object {
21+
data class Message(
22+
val isRemote: Boolean,
23+
val timeMilli: Long,
24+
val message: String
25+
)
26+
}
27+
1828
}

0 commit comments

Comments
 (0)