From 9ef8f1e2e35c18c6b059bf1f53d18d61b369694c Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Wed, 21 Feb 2018 16:30:39 +0100 Subject: [PATCH] Bugfixes --- app/proguard-rules.pro | 10 ++++++++++ .../ui/chat/BufferViewConfigAdapter.kt | 2 +- .../quasseldroid_ng/ui/chat/MessageAdapter.kt | 8 +++----- .../ui/chat/MessageListFragment.kt | 15 ++++++-------- .../ui/viewmodel/QuasselViewModel.kt | 20 ++++++++++--------- .../quassel/syncables/BufferViewConfig.kt | 5 +++++ 6 files changed, 36 insertions(+), 24 deletions(-) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 84b0ac774..10e5e5f1b 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -27,6 +27,16 @@ # The project is GPL anyway, obfuscation is useless. -dontobfuscate +# Keep our invokers -keep class * implements de.kuschku.libquassel.quassel.syncables.interfaces.invokers.Invoker { static ** INSTANCE; } + +# remove unnecessary warnings +# Android HTTP Libs +-dontnote android.net.http.** +-dontnote org.apache.http.** +# Kotlin stuff +-dontnote kotlin.** +# Gson +-dontnote com.google.gson.** \ No newline at end of file diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigAdapter.kt index afadc9b6d..33c4c36f1 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigAdapter.kt @@ -18,7 +18,7 @@ import de.kuschku.quasseldroid_ng.util.ui.RecyclerSpinnerAdapter class BufferViewConfigAdapter( lifecycleOwner: LifecycleOwner, - liveData: LiveData<List<BufferViewConfig>> + liveData: LiveData<List<BufferViewConfig>?> ) : RecyclerSpinnerAdapter<BufferViewConfigAdapter.BufferViewConfigViewHolder>(), ThemedSpinnerAdapter { val data = mutableListOf<BufferViewConfig>() diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageAdapter.kt index ab634fac3..8499aaf8b 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageAdapter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageAdapter.kt @@ -1,6 +1,5 @@ package de.kuschku.quasseldroid_ng.ui.chat -import android.arch.lifecycle.LiveData import android.arch.paging.PagedListAdapter import android.content.Context import android.support.v7.recyclerview.extensions.DiffCallback @@ -16,7 +15,6 @@ import de.kuschku.quasseldroid_ng.util.helper.getOrPut class MessageAdapter( context: Context, - private val markerLine: LiveData<Pair<MsgId, MsgId>?>, var markerLinePosition: Pair<MsgId, MsgId>? = null ) : PagedListAdapter<QuasselDatabase.DatabaseMessage, QuasselMessageViewHolder>( object : DiffCallback<QuasselDatabase.DatabaseMessage>() { @@ -51,13 +49,13 @@ class MessageAdapter( getItem(position)?.let { messageRenderer.bind( holder, - if (it.messageId == markerLine.value?.second || it.messageId == markerLine.value?.first) { - val value = messageRenderer.render(it, markerLine.value?.second ?: -1) + if (it.messageId == markerLinePosition?.second || it.messageId == markerLinePosition?.first) { + val value = messageRenderer.render(it, markerLinePosition?.second ?: -1) messageCache.put(it.messageId, value) value } else { messageCache.getOrPut(it.messageId) { - messageRenderer.render(it, markerLine.value?.second ?: -1) + messageRenderer.render(it, markerLinePosition?.second ?: -1) } } ) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt index 9177811e4..651d79a3d 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt @@ -17,8 +17,6 @@ import butterknife.ButterKnife import de.kuschku.libquassel.protocol.BufferId import de.kuschku.libquassel.session.Backend import de.kuschku.libquassel.session.SessionManager -import de.kuschku.libquassel.util.compatibility.LoggingHandler -import de.kuschku.libquassel.util.compatibility.log import de.kuschku.quasseldroid_ng.R import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel @@ -69,7 +67,7 @@ class MessageListFragment : ServiceBoundFragment() { val view = inflater.inflate(R.layout.fragment_messages, container, false) ButterKnife.bind(this, view) - adapter = MessageAdapter(context!!, viewModel.markerLine) + adapter = MessageAdapter(context!!) messageList.adapter = adapter linearLayoutManager = LinearLayoutManager(context) linearLayoutManager.reverseLayout = true @@ -106,11 +104,11 @@ class MessageListFragment : ServiceBoundFragment() { handler.post { val database = QuasselDatabase.Creator.init(this.context!!) - sessionManager.zip(viewModel.getBuffer()).zip(data).observe( + sessionManager.zip(viewModel.getBuffer(), data).observe( this, Observer { handler.post { - val session = it?.first?.first - val buffer = it?.first?.second + val session = it?.first + val buffer = it?.second val bufferSyncer = session?.bufferSyncer if (buffer != null && bufferSyncer != null) { @@ -128,7 +126,6 @@ class MessageListFragment : ServiceBoundFragment() { viewModel.markerLine.observe( this, Observer { - log(LoggingHandler.LogLevel.ERROR, "DEBUG", "$it") adapter.markerLinePosition = it adapter.notifyDataSetChanged() } @@ -140,12 +137,12 @@ class MessageListFragment : ServiceBoundFragment() { adapter.setList(list) if (firstVisibleItemPosition < 2) { activity?.runOnUiThread { - messageList.smoothScrollToPosition(0) + messageList.scrollToPosition(0) } handler.postDelayed( { activity?.runOnUiThread { - messageList.smoothScrollToPosition(0) + messageList.scrollToPosition(0) } }, 16 ) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/viewmodel/QuasselViewModel.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/viewmodel/QuasselViewModel.kt index e22fc8877..c75f9879a 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/viewmodel/QuasselViewModel.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/viewmodel/QuasselViewModel.kt @@ -19,9 +19,13 @@ import de.kuschku.libquassel.util.hasFlag import de.kuschku.quasseldroid_ng.ui.chat.BufferListAdapter import de.kuschku.quasseldroid_ng.ui.chat.NickListAdapter import de.kuschku.quasseldroid_ng.ui.chat.ToolbarFragment -import de.kuschku.quasseldroid_ng.util.helper.* +import de.kuschku.quasseldroid_ng.util.helper.map +import de.kuschku.quasseldroid_ng.util.helper.switchMap +import de.kuschku.quasseldroid_ng.util.helper.switchMapRx +import de.kuschku.quasseldroid_ng.util.helper.zip import io.reactivex.Observable import io.reactivex.functions.BiFunction +import io.reactivex.functions.Function import java.util.concurrent.TimeUnit class QuasselViewModel : ViewModel() { @@ -200,13 +204,9 @@ class QuasselViewModel : ViewModel() { manager.liveBufferViewConfigs().map { ids -> ids.mapNotNull { id -> manager.bufferViewConfig(id) - }.sortedWith( - Comparator { a, b -> - (a?.bufferViewName() ?: "").compareTo((b?.bufferViewName() ?: ""), true) - } - ) + }.sortedWith(BufferViewConfig.NameComparator) } - }.or(emptyList()) + } val bufferList = session.zip(bufferViewConfig).switchMapRx { (session, config) -> val bufferSyncer = session?.bufferSyncer @@ -302,9 +302,11 @@ class QuasselViewModel : ViewModel() { ) } } - }, { array: Array<Any> -> - array.toList() as List<BufferListAdapter.BufferProps> + }, object : Function<Array<Any>, List<BufferListAdapter.BufferProps>> { + override fun apply(objects: Array<Any>): List<BufferListAdapter.BufferProps> { + return objects.toList() as List<BufferListAdapter.BufferProps> } + } ).map { list -> list.filter { config.minimumActivity().value <= it.activity.bit || diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt index 82abb56e1..e93ce16b3 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt @@ -248,4 +248,9 @@ class BufferViewConfig constructor( val live_temporarilyRemovedBuffers: BehaviorSubject<Set<BufferId>> = BehaviorSubject.createDefault<Set<BufferId>>(emptySet()) + + object NameComparator : Comparator<BufferViewConfig> { + override fun compare(a: BufferViewConfig?, b: BufferViewConfig?) + = (a?.bufferViewName() ?: "").compareTo((b?.bufferViewName() ?: ""), true) + } } -- GitLab