From 9d6bbaaab5181313c0209d04bad9065026b7b450 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Sat, 24 Mar 2018 12:11:33 +0100 Subject: [PATCH] Minor bugfixes and performance improvements --- .../quasseldroid/dagger/SettingsModule.kt | 11 +++++++---- .../quasseldroid/service/QuasselService.kt | 3 +++ .../quasseldroid/settings/BacklogSettings.kt | 3 ++- .../kuschku/quasseldroid/settings/Settings.kt | 6 +++--- .../quasseldroid/ui/chat/ChatActivity.kt | 8 +++++--- .../ui/chat/messages/MessageListFragment.kt | 18 +++++++++--------- .../main/res/values/strings_preferences.xml | 4 ++++ app/src/main/res/xml/preferences.xml | 6 ++++++ 8 files changed, 39 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/dagger/SettingsModule.kt b/app/src/main/java/de/kuschku/quasseldroid/dagger/SettingsModule.kt index 4afd1747e..0441232d6 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/dagger/SettingsModule.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/dagger/SettingsModule.kt @@ -76,11 +76,14 @@ class SettingsModule { @Provides fun provideBacklogSettings(context: Context) = context.sharedPreferences { BacklogSettings( - dynamicAmount = getString( + pageSize = getString( context.getString(R.string.preference_page_size_key), - BacklogSettings.DEFAULT.dynamicAmount.toString() - ).toIntOrNull() - ?: BacklogSettings.DEFAULT.dynamicAmount + BacklogSettings.DEFAULT.pageSize.toString() + ).toIntOrNull() ?: BacklogSettings.DEFAULT.pageSize, + initialAmount = getString( + context.getString(R.string.preference_initial_amount_key), + BacklogSettings.DEFAULT.initialAmount.toString() + ).toIntOrNull() ?: BacklogSettings.DEFAULT.initialAmount ) } diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt index 63c754f1c..436f1d708 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt @@ -7,6 +7,8 @@ import android.net.ConnectivityManager import android.os.Binder import de.kuschku.libquassel.protocol.* import de.kuschku.libquassel.session.* +import de.kuschku.libquassel.util.compatibility.LoggingHandler +import de.kuschku.libquassel.util.compatibility.LoggingHandler.Companion.log import de.kuschku.quasseldroid.BuildConfig import de.kuschku.quasseldroid.Keys import de.kuschku.quasseldroid.R @@ -257,6 +259,7 @@ class QuasselService : DaggerLifecycleService(), } } this.progress = it ?: Triple(ConnectionState.DISCONNECTED, 0, 0) + log(LoggingHandler.LogLevel.ERROR, "DEBUG", "progress: $it") val handle = this.notificationHandle if (handle != null) { updateNotification(handle) diff --git a/app/src/main/java/de/kuschku/quasseldroid/settings/BacklogSettings.kt b/app/src/main/java/de/kuschku/quasseldroid/settings/BacklogSettings.kt index 69d7c4b75..55a128e44 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/settings/BacklogSettings.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/settings/BacklogSettings.kt @@ -1,7 +1,8 @@ package de.kuschku.quasseldroid.settings data class BacklogSettings( - val dynamicAmount: Int = 150 + val pageSize: Int = 150, + val initialAmount: Int = 20 ) { companion object { val DEFAULT = BacklogSettings() diff --git a/app/src/main/java/de/kuschku/quasseldroid/settings/Settings.kt b/app/src/main/java/de/kuschku/quasseldroid/settings/Settings.kt index 9158a8b51..926e270e3 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/settings/Settings.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/settings/Settings.kt @@ -69,10 +69,10 @@ object Settings { fun backlog(context: Context) = context.sharedPreferences { BacklogSettings( - dynamicAmount = getString( + pageSize = getString( context.getString(R.string.preference_page_size_key), - BacklogSettings.DEFAULT.dynamicAmount.toString() - ).toIntOrNull() ?: BacklogSettings.DEFAULT.dynamicAmount + BacklogSettings.DEFAULT.pageSize.toString() + ).toIntOrNull() ?: BacklogSettings.DEFAULT.pageSize ) } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt index e1cb63af9..fd9408159 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt @@ -20,6 +20,7 @@ import android.view.Gravity import android.view.Menu import android.view.MenuItem import android.view.View +import android.widget.Toast import butterknife.BindView import butterknife.ButterKnife import com.afollestad.materialdialogs.MaterialDialog @@ -203,18 +204,19 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc ConnectionState.CONNECTED, ConnectionState.DISCONNECTED, ConnectionState.CLOSED -> { - progressBar.hide() + progressBar.visibility = View.INVISIBLE } ConnectionState.INIT -> { - progressBar.show() + progressBar.visibility = View.VISIBLE // Show indeterminate when no progress has been made yet progressBar.isIndeterminate = progress == 0 || max == 0 progressBar.progress = progress progressBar.max = max } else -> { - progressBar.show() + progressBar.visibility = View.VISIBLE progressBar.isIndeterminate = true + Toast.makeText(this, state.toString(), Toast.LENGTH_SHORT).show() } } }) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt index 66662eeea..6c824e981 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt @@ -98,9 +98,9 @@ class MessageListFragment : ServiceBoundFragment() { LivePagedListBuilder( database.message().findByBufferIdPaged(buffer, filtered), PagedList.Config.Builder() - .setPageSize(backlogSettings.dynamicAmount) - .setPrefetchDistance(backlogSettings.dynamicAmount) - .setInitialLoadSizeHint(backlogSettings.dynamicAmount) + .setPageSize(backlogSettings.pageSize) + .setPrefetchDistance(backlogSettings.pageSize) + .setInitialLoadSizeHint(backlogSettings.pageSize) .setEnablePlaceholders(true) .build() ).setBoundaryCallback(boundaryCallback).build() @@ -136,7 +136,7 @@ class MessageListFragment : ServiceBoundFragment() { val firstVisibleItemPosition = linearLayoutManager.findFirstVisibleItemPosition() val firstVisibleMessageId = adapter[firstVisibleItemPosition]?.messageId runInBackground { - adapter.submitList(list) + list?.let(adapter::submitList) if (firstVisibleItemPosition < 2) { activity?.runOnUiThread { messageList.scrollToPosition(0) } @@ -149,11 +149,11 @@ class MessageListFragment : ServiceBoundFragment() { val buffer = viewModel.buffer.value ?: -1 if (buffer != lastBuffer) { - backend.value.orNull()?.sessionManager()?.bufferSyncer?.let { bufferSyncer -> + adapter.clearCache() + viewModel.session.value?.orNull()?.bufferSyncer?.let { bufferSyncer -> onBufferChange(lastBuffer, buffer, firstVisibleMessageId, bufferSyncer) } lastBuffer = buffer - adapter.clearCache() } } }) @@ -177,7 +177,7 @@ class MessageListFragment : ServiceBoundFragment() { } // Try loading messages when switching to isEmpty buffer if (database.message().bufferSize(current) == 0) { - loadMore() + loadMore(initial = true) } activity?.runOnUiThread { messageList.scrollToPosition(0) } } @@ -193,7 +193,7 @@ class MessageListFragment : ServiceBoundFragment() { super.onPause() } - private fun loadMore() { + private fun loadMore(initial: Boolean = false) { runInBackground { viewModel.buffer { bufferId -> viewModel.session { @@ -202,7 +202,7 @@ class MessageListFragment : ServiceBoundFragment() { last = database.message().findFirstByBufferId( bufferId )?.messageId ?: -1, - limit = backlogSettings.dynamicAmount + limit = if (initial) backlogSettings.initialAmount else backlogSettings.pageSize ) } } diff --git a/app/src/main/res/values/strings_preferences.xml b/app/src/main/res/values/strings_preferences.xml index a7f17a7cf..0621b192a 100644 --- a/app/src/main/res/values/strings_preferences.xml +++ b/app/src/main/res/values/strings_preferences.xml @@ -110,6 +110,10 @@ <string name="preference_page_size_title">Page Size</string> <string name="preference_page_size_summary">The number of messages loaded and kept in memory at a time</string> + <string name="preference_initial_amount_key" translatable="false">initial_amount</string> + <string name="preference_initial_amount_title">Initial Amount</string> + <string name="preference_initial_amount_summary">Number of messages to load initially</string> + <string name="preference_connection_title">Connection</string> diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index ab9de7180..bb1902278 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -84,6 +84,12 @@ android:key="@string/preference_page_size_key" android:summary="@string/preference_page_size_summary" android:title="@string/preference_page_size_title" /> + <EditTextPreference + android:defaultValue="20" + android:inputType="number" + android:key="@string/preference_initial_amount_key" + android:summary="@string/preference_initial_amount_summary" + android:title="@string/preference_initial_amount_title" /> </PreferenceCategory> <PreferenceCategory android:title="@string/preference_connection_title"> -- GitLab