Skip to content
Snippets Groups Projects
Commit 9ef8f1e2 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Bugfixes

parent b01cba18
No related branches found
No related tags found
No related merge requests found
...@@ -27,6 +27,16 @@ ...@@ -27,6 +27,16 @@
# The project is GPL anyway, obfuscation is useless. # The project is GPL anyway, obfuscation is useless.
-dontobfuscate -dontobfuscate
# Keep our invokers
-keep class * implements de.kuschku.libquassel.quassel.syncables.interfaces.invokers.Invoker { -keep class * implements de.kuschku.libquassel.quassel.syncables.interfaces.invokers.Invoker {
static ** INSTANCE; 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
...@@ -18,7 +18,7 @@ import de.kuschku.quasseldroid_ng.util.ui.RecyclerSpinnerAdapter ...@@ -18,7 +18,7 @@ import de.kuschku.quasseldroid_ng.util.ui.RecyclerSpinnerAdapter
class BufferViewConfigAdapter( class BufferViewConfigAdapter(
lifecycleOwner: LifecycleOwner, lifecycleOwner: LifecycleOwner,
liveData: LiveData<List<BufferViewConfig>> liveData: LiveData<List<BufferViewConfig>?>
) : RecyclerSpinnerAdapter<BufferViewConfigAdapter.BufferViewConfigViewHolder>(), ) : RecyclerSpinnerAdapter<BufferViewConfigAdapter.BufferViewConfigViewHolder>(),
ThemedSpinnerAdapter { ThemedSpinnerAdapter {
val data = mutableListOf<BufferViewConfig>() val data = mutableListOf<BufferViewConfig>()
......
package de.kuschku.quasseldroid_ng.ui.chat package de.kuschku.quasseldroid_ng.ui.chat
import android.arch.lifecycle.LiveData
import android.arch.paging.PagedListAdapter import android.arch.paging.PagedListAdapter
import android.content.Context import android.content.Context
import android.support.v7.recyclerview.extensions.DiffCallback import android.support.v7.recyclerview.extensions.DiffCallback
...@@ -16,7 +15,6 @@ import de.kuschku.quasseldroid_ng.util.helper.getOrPut ...@@ -16,7 +15,6 @@ import de.kuschku.quasseldroid_ng.util.helper.getOrPut
class MessageAdapter( class MessageAdapter(
context: Context, context: Context,
private val markerLine: LiveData<Pair<MsgId, MsgId>?>,
var markerLinePosition: Pair<MsgId, MsgId>? = null var markerLinePosition: Pair<MsgId, MsgId>? = null
) : PagedListAdapter<QuasselDatabase.DatabaseMessage, QuasselMessageViewHolder>( ) : PagedListAdapter<QuasselDatabase.DatabaseMessage, QuasselMessageViewHolder>(
object : DiffCallback<QuasselDatabase.DatabaseMessage>() { object : DiffCallback<QuasselDatabase.DatabaseMessage>() {
...@@ -51,13 +49,13 @@ class MessageAdapter( ...@@ -51,13 +49,13 @@ class MessageAdapter(
getItem(position)?.let { getItem(position)?.let {
messageRenderer.bind( messageRenderer.bind(
holder, holder,
if (it.messageId == markerLine.value?.second || it.messageId == markerLine.value?.first) { if (it.messageId == markerLinePosition?.second || it.messageId == markerLinePosition?.first) {
val value = messageRenderer.render(it, markerLine.value?.second ?: -1) val value = messageRenderer.render(it, markerLinePosition?.second ?: -1)
messageCache.put(it.messageId, value) messageCache.put(it.messageId, value)
value value
} else { } else {
messageCache.getOrPut(it.messageId) { messageCache.getOrPut(it.messageId) {
messageRenderer.render(it, markerLine.value?.second ?: -1) messageRenderer.render(it, markerLinePosition?.second ?: -1)
} }
} }
) )
......
...@@ -17,8 +17,6 @@ import butterknife.ButterKnife ...@@ -17,8 +17,6 @@ import butterknife.ButterKnife
import de.kuschku.libquassel.protocol.BufferId import de.kuschku.libquassel.protocol.BufferId
import de.kuschku.libquassel.session.Backend import de.kuschku.libquassel.session.Backend
import de.kuschku.libquassel.session.SessionManager 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.R
import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase import de.kuschku.quasseldroid_ng.persistence.QuasselDatabase
import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel import de.kuschku.quasseldroid_ng.ui.viewmodel.QuasselViewModel
...@@ -69,7 +67,7 @@ class MessageListFragment : ServiceBoundFragment() { ...@@ -69,7 +67,7 @@ class MessageListFragment : ServiceBoundFragment() {
val view = inflater.inflate(R.layout.fragment_messages, container, false) val view = inflater.inflate(R.layout.fragment_messages, container, false)
ButterKnife.bind(this, view) ButterKnife.bind(this, view)
adapter = MessageAdapter(context!!, viewModel.markerLine) adapter = MessageAdapter(context!!)
messageList.adapter = adapter messageList.adapter = adapter
linearLayoutManager = LinearLayoutManager(context) linearLayoutManager = LinearLayoutManager(context)
linearLayoutManager.reverseLayout = true linearLayoutManager.reverseLayout = true
...@@ -106,11 +104,11 @@ class MessageListFragment : ServiceBoundFragment() { ...@@ -106,11 +104,11 @@ class MessageListFragment : ServiceBoundFragment() {
handler.post { handler.post {
val database = QuasselDatabase.Creator.init(this.context!!) val database = QuasselDatabase.Creator.init(this.context!!)
sessionManager.zip(viewModel.getBuffer()).zip(data).observe( sessionManager.zip(viewModel.getBuffer(), data).observe(
this, Observer { this, Observer {
handler.post { handler.post {
val session = it?.first?.first val session = it?.first
val buffer = it?.first?.second val buffer = it?.second
val bufferSyncer = session?.bufferSyncer val bufferSyncer = session?.bufferSyncer
if (buffer != null && bufferSyncer != null) { if (buffer != null && bufferSyncer != null) {
...@@ -128,7 +126,6 @@ class MessageListFragment : ServiceBoundFragment() { ...@@ -128,7 +126,6 @@ class MessageListFragment : ServiceBoundFragment() {
viewModel.markerLine.observe( viewModel.markerLine.observe(
this, Observer { this, Observer {
log(LoggingHandler.LogLevel.ERROR, "DEBUG", "$it")
adapter.markerLinePosition = it adapter.markerLinePosition = it
adapter.notifyDataSetChanged() adapter.notifyDataSetChanged()
} }
...@@ -140,12 +137,12 @@ class MessageListFragment : ServiceBoundFragment() { ...@@ -140,12 +137,12 @@ class MessageListFragment : ServiceBoundFragment() {
adapter.setList(list) adapter.setList(list)
if (firstVisibleItemPosition < 2) { if (firstVisibleItemPosition < 2) {
activity?.runOnUiThread { activity?.runOnUiThread {
messageList.smoothScrollToPosition(0) messageList.scrollToPosition(0)
} }
handler.postDelayed( handler.postDelayed(
{ {
activity?.runOnUiThread { activity?.runOnUiThread {
messageList.smoothScrollToPosition(0) messageList.scrollToPosition(0)
} }
}, 16 }, 16
) )
......
...@@ -19,9 +19,13 @@ import de.kuschku.libquassel.util.hasFlag ...@@ -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.BufferListAdapter
import de.kuschku.quasseldroid_ng.ui.chat.NickListAdapter import de.kuschku.quasseldroid_ng.ui.chat.NickListAdapter
import de.kuschku.quasseldroid_ng.ui.chat.ToolbarFragment 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.Observable
import io.reactivex.functions.BiFunction import io.reactivex.functions.BiFunction
import io.reactivex.functions.Function
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
class QuasselViewModel : ViewModel() { class QuasselViewModel : ViewModel() {
...@@ -200,13 +204,9 @@ class QuasselViewModel : ViewModel() { ...@@ -200,13 +204,9 @@ class QuasselViewModel : ViewModel() {
manager.liveBufferViewConfigs().map { ids -> manager.liveBufferViewConfigs().map { ids ->
ids.mapNotNull { id -> ids.mapNotNull { id ->
manager.bufferViewConfig(id) manager.bufferViewConfig(id)
}.sortedWith( }.sortedWith(BufferViewConfig.NameComparator)
Comparator { a, b ->
(a?.bufferViewName() ?: "").compareTo((b?.bufferViewName() ?: ""), true)
} }
)
} }
}.or(emptyList())
val bufferList = session.zip(bufferViewConfig).switchMapRx { (session, config) -> val bufferList = session.zip(bufferViewConfig).switchMapRx { (session, config) ->
val bufferSyncer = session?.bufferSyncer val bufferSyncer = session?.bufferSyncer
...@@ -302,8 +302,10 @@ class QuasselViewModel : ViewModel() { ...@@ -302,8 +302,10 @@ class QuasselViewModel : ViewModel() {
) )
} }
} }
}, { array: Array<Any> -> }, object : Function<Array<Any>, List<BufferListAdapter.BufferProps>> {
array.toList() as List<BufferListAdapter.BufferProps> override fun apply(objects: Array<Any>): List<BufferListAdapter.BufferProps> {
return objects.toList() as List<BufferListAdapter.BufferProps>
}
} }
).map { list -> ).map { list ->
list.filter { list.filter {
......
...@@ -248,4 +248,9 @@ class BufferViewConfig constructor( ...@@ -248,4 +248,9 @@ class BufferViewConfig constructor(
val live_temporarilyRemovedBuffers: BehaviorSubject<Set<BufferId>> val live_temporarilyRemovedBuffers: BehaviorSubject<Set<BufferId>>
= BehaviorSubject.createDefault<Set<BufferId>>(emptySet()) = BehaviorSubject.createDefault<Set<BufferId>>(emptySet())
object NameComparator : Comparator<BufferViewConfig> {
override fun compare(a: BufferViewConfig?, b: BufferViewConfig?)
= (a?.bufferViewName() ?: "").compareTo((b?.bufferViewName() ?: ""), true)
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment