Skip to content
Snippets Groups Projects
Verified Commit 8cddd459 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Uses yet another, more reliable solution for restoring selected buffer state

parent 07550497
No related branches found
No related tags found
No related merge requests found
......@@ -55,6 +55,7 @@ import de.kuschku.libquassel.protocol.Message_Type
import de.kuschku.libquassel.protocol.NetworkId
import de.kuschku.libquassel.protocol.message.HandshakeMessage
import de.kuschku.libquassel.session.Error
import de.kuschku.libquassel.session.ISession
import de.kuschku.libquassel.util.Optional
import de.kuschku.libquassel.util.flag.and
import de.kuschku.libquassel.util.flag.hasFlag
......@@ -140,7 +141,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
if (intent != null && (intent.flags and Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) {
if (intent != null) {
when {
intent.type == "text/plain" -> {
chatlineFragment?.replaceText(intent.getStringExtra(Intent.EXTRA_TEXT))
......@@ -172,7 +173,8 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
val networkId = intent.getIntExtra(KEY_NETWORK_ID, -1)
val channel = intent.getStringExtra(KEY_CHANNEL)
viewModel.session.value?.orNull()?.also { session ->
viewModel.session.filter(Optional<ISession>::isPresent).firstElement().subscribe {
it.orNull()?.also { session ->
val info = session.bufferSyncer?.find(
bufferName = channel,
networkId = networkId,
......@@ -180,8 +182,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
)
if (info != null) {
viewModel.buffer.onNext(info.bufferId)
viewModel.bufferOpened.onNext(Unit)
ChatActivity.launch(this, bufferId = info.bufferId)
} else {
viewModel.allBuffers.map {
listOfNotNull(it.find {
......@@ -191,12 +192,11 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
})
}.filter {
it.isNotEmpty()
}.firstElement().toLiveData().observe(this, Observer {
}.firstElement().subscribe {
it?.firstOrNull()?.let { info ->
viewModel.buffer.onNext(info.bufferId)
viewModel.bufferOpened.onNext(Unit)
ChatActivity.launch(this, bufferId = info.bufferId)
}
}
})
session.bufferSyncer?.find(
networkId = networkId,
......@@ -212,6 +212,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
}
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
......@@ -281,7 +282,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
})
}.toLiveData().observe(this, Observer { info ->
info?.orNull()?.let {
viewModel.buffer.onNext(it.bufferId)
ChatActivity.launch(this, bufferId = it.bufferId)
}
})
......@@ -926,6 +927,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
startedSelection = true
connectedAccount = -1L
restoredDrawerState = false
ChatActivity.launch(this, bufferId = Int.MAX_VALUE)
viewModel.resetAccount()
}
......
......@@ -44,6 +44,7 @@ import de.kuschku.quasseldroid.persistence.AccountDatabase
import de.kuschku.quasseldroid.persistence.QuasselDatabase
import de.kuschku.quasseldroid.settings.AppearanceSettings
import de.kuschku.quasseldroid.settings.MessageSettings
import de.kuschku.quasseldroid.ui.chat.ChatActivity
import de.kuschku.quasseldroid.ui.coresettings.network.NetworkEditActivity
import de.kuschku.quasseldroid.util.ColorContext
import de.kuschku.quasseldroid.util.avatars.AvatarHelper
......@@ -457,12 +458,13 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
outState.putParcelable(KEY_STATE_LIST, chatList.layoutManager.onSaveInstanceState())
}
private fun clickListener(it: BufferId) {
private fun clickListener(bufferId: BufferId) {
if (actionMode != null) {
longClickListener(it)
longClickListener(bufferId)
} else {
viewModel.buffer.onNext(it)
viewModel.bufferOpened.onNext(Unit)
context?.let {
ChatActivity.launch(it, bufferId = bufferId)
}
}
}
......
......@@ -44,7 +44,6 @@ import java.util.concurrent.TimeUnit
class QuasselViewModel : ViewModel() {
fun resetAccount() {
buffer.onNext(Int.MAX_VALUE)
bufferViewConfigId.onNext(-1)
selectedMessages.onNext(emptyMap())
expandedMessages.onNext(emptySet())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment