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

Autocomplete now behaves exactly as in Quassel for matching

parent 704dcd02
No related branches found
No related tags found
No related merge requests found
...@@ -21,12 +21,8 @@ import de.kuschku.quasseldroid_ng.ui.chat.NickListAdapter ...@@ -21,12 +21,8 @@ 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.ui.chat.buffers.BufferListAdapter import de.kuschku.quasseldroid_ng.ui.chat.buffers.BufferListAdapter
import de.kuschku.quasseldroid_ng.ui.chat.buffers.BufferViewConfigFragment import de.kuschku.quasseldroid_ng.ui.chat.buffers.BufferViewConfigFragment
import de.kuschku.quasseldroid_ng.util.helper.map import de.kuschku.quasseldroid_ng.util.helper.*
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.Function
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
class QuasselViewModel : ViewModel() { class QuasselViewModel : ViewModel() {
...@@ -155,7 +151,7 @@ class QuasselViewModel : ViewModel() { ...@@ -155,7 +151,7 @@ class QuasselViewModel : ViewModel() {
val ircChannel = network?.ircChannel(bufferInfo.bufferName) val ircChannel = network?.ircChannel(bufferInfo.bufferName)
if (ircChannel != null) { if (ircChannel != null) {
ircChannel.liveIrcUsers().switchMap { users -> ircChannel.liveIrcUsers().switchMap { users ->
Observable.combineLatest( combineLatest<NickListAdapter.IrcUserItem>(
users.map<IrcUser, Observable<NickListAdapter.IrcUserItem>?> { user -> users.map<IrcUser, Observable<NickListAdapter.IrcUserItem>?> { user ->
user.liveNick().switchMap { nick -> user.liveNick().switchMap { nick ->
user.liveRealName().switchMap { realName -> user.liveRealName().switchMap { realName ->
...@@ -178,10 +174,6 @@ class QuasselViewModel : ViewModel() { ...@@ -178,10 +174,6 @@ class QuasselViewModel : ViewModel() {
} }
} }
} }
},
object : Function<Array<Any>, List<NickListAdapter.IrcUserItem>> {
override fun apply(array: Array<Any>) =
array.toList() as List<NickListAdapter.IrcUserItem>
} }
) )
} }
...@@ -269,19 +261,16 @@ class QuasselViewModel : ViewModel() { ...@@ -269,19 +261,16 @@ class QuasselViewModel : ViewModel() {
} }
} }
Observable.combineLatest( combineLatest<AutoCompleteAdapter.AutoCompleteItem>(nicks + buffers)
nicks + buffers, .map { list ->
object : val ignoredStartingCharacters = charArrayOf(
Function<Array<Any>, List<AutoCompleteAdapter.AutoCompleteItem>> { '-', '_', '[', ']', '{', '}', '|', '`', '^', '.', '\\'
override fun apply( )
objects: Array<Any>): List<AutoCompleteAdapter.AutoCompleteItem> {
return objects.toList() as List<AutoCompleteAdapter.AutoCompleteItem>
}
}).map { list ->
list list
.filter { .filter {
it.name.contains( it.name.trimStart(*ignoredStartingCharacters)
lastWord, .startsWith(
lastWord.trimStart(*ignoredStartingCharacters),
ignoreCase = true ignoreCase = true
) )
}.sorted() }.sorted()
...@@ -371,17 +360,12 @@ class QuasselViewModel : ViewModel() { ...@@ -371,17 +360,12 @@ class QuasselViewModel : ViewModel() {
val showHidden = showHiddenRaw ?: false val showHidden = showHiddenRaw ?: false
if (bufferSyncer != null && config != null) { if (bufferSyncer != null && config != null) {
config.live_config.debounce(16, TimeUnit.MILLISECONDS).switchMap { currentConfig -> config.live_config.debounce(16, TimeUnit.MILLISECONDS).switchMap { currentConfig ->
Observable.combineLatest( combineLatest<Collection<BufferId>>(
listOf( listOf(
config.live_buffers, config.live_buffers,
config.live_temporarilyRemovedBuffers, config.live_temporarilyRemovedBuffers,
config.live_removedBuffers config.live_removedBuffers
), )
object : Function<Array<Any>, List<Collection<BufferId>>> {
override fun apply(objects: Array<Any>): List<Collection<BufferId>> {
return objects.toList() as List<Collection<BufferId>>
}
}
).switchMap { (ids, temp, perm) -> ).switchMap { (ids, temp, perm) ->
fun transformIds(ids: Collection<BufferId>, state: BufferListAdapter.HiddenState) = fun transformIds(ids: Collection<BufferId>, state: BufferListAdapter.HiddenState) =
ids.mapNotNull { id -> ids.mapNotNull { id ->
...@@ -483,14 +467,7 @@ class QuasselViewModel : ViewModel() { ...@@ -483,14 +467,7 @@ class QuasselViewModel : ViewModel() {
transformIds(ids, BufferListAdapter.HiddenState.VISIBLE) transformIds(ids, BufferListAdapter.HiddenState.VISIBLE)
} }
Observable.combineLatest( combineLatest<BufferListAdapter.BufferProps>(buffers).map { list ->
buffers,
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 ->
Pair<BufferViewConfig?, List<BufferListAdapter.BufferProps>>( Pair<BufferViewConfig?, List<BufferListAdapter.BufferProps>>(
config, config,
list.filter { list.filter {
......
...@@ -4,7 +4,11 @@ import android.arch.lifecycle.LiveData ...@@ -4,7 +4,11 @@ import android.arch.lifecycle.LiveData
import android.arch.lifecycle.LiveDataReactiveStreams import android.arch.lifecycle.LiveDataReactiveStreams
import io.reactivex.BackpressureStrategy import io.reactivex.BackpressureStrategy
import io.reactivex.Observable import io.reactivex.Observable
import io.reactivex.ObservableSource
inline fun <T> Observable<T>.toLiveData( inline fun <T> Observable<T>.toLiveData(
strategy: BackpressureStrategy = BackpressureStrategy.LATEST strategy: BackpressureStrategy = BackpressureStrategy.LATEST
): LiveData<T> = LiveDataReactiveStreams.fromPublisher(toFlowable(strategy)) ): LiveData<T> = LiveDataReactiveStreams.fromPublisher(toFlowable(strategy))
inline fun <reified T> combineLatest(sources: Iterable<ObservableSource<out T>?>) =
Observable.combineLatest(sources) { t -> t.toList() as List<T> }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment