From 8a294b16d5b67090179cbc86aa6496e5058f9d3f Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Sun, 20 May 2018 00:41:55 +0200 Subject: [PATCH] Cleaned up code --- .../quasseldroid/ui/chat/ChatActivity.kt | 53 +++-------------- .../util/missingfeatures/RequiredFeatures.kt | 58 +++++++++++++++++++ 2 files changed, 65 insertions(+), 46 deletions(-) create mode 100644 app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/RequiredFeatures.kt 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 dd2581c38..b77f6ae59 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 @@ -47,7 +47,6 @@ import de.kuschku.libquassel.protocol.Buffer_Type import de.kuschku.libquassel.protocol.Message import de.kuschku.libquassel.protocol.Message_Type import de.kuschku.libquassel.protocol.message.HandshakeMessage -import de.kuschku.libquassel.quassel.ExtendedFeature import de.kuschku.libquassel.session.Error import de.kuschku.libquassel.util.Optional import de.kuschku.libquassel.util.flag.and @@ -69,8 +68,8 @@ import de.kuschku.quasseldroid.ui.setup.accounts.selection.AccountSelectionActiv import de.kuschku.quasseldroid.ui.setup.user.UserSetupActivity import de.kuschku.quasseldroid.util.helper.* import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer -import de.kuschku.quasseldroid.util.missingfeatures.MissingFeature import de.kuschku.quasseldroid.util.missingfeatures.MissingFeaturesDialog +import de.kuschku.quasseldroid.util.missingfeatures.RequiredFeatures import de.kuschku.quasseldroid.util.service.ServiceBoundActivity import de.kuschku.quasseldroid.util.ui.DragInterceptBottomSheetBehavior import de.kuschku.quasseldroid.util.ui.MaterialContentLoadingProgressBar @@ -464,58 +463,20 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc drawerLayout.openDrawer(Gravity.START) } connectedAccount = accountId - viewModel.session.value?.orNull()?.let { - if (it.identities.isEmpty()) { + viewModel.session.value?.orNull()?.let { session -> + if (session.identities.isEmpty()) { UserSetupActivity.launch(this) } - val missingFeatures = listOf( - ExtendedFeature.SynchronizedMarkerLine, - ExtendedFeature.SaslAuthentication, - ExtendedFeature.SaslExternal, - ExtendedFeature.HideInactiveNetworks, - ExtendedFeature.PasswordChange, - ExtendedFeature.CapNegotiation, - ExtendedFeature.VerifyServerSSL, - ExtendedFeature.CustomRateLimits, - ExtendedFeature.AwayFormatTimestamp, - ExtendedFeature.BufferActivitySync, - ExtendedFeature.CoreSideHighlights, - ExtendedFeature.SenderPrefixes, - ExtendedFeature.RemoteDisconnect, - ExtendedFeature.RichMessages, - ExtendedFeature.BacklogFilterType - ) - it.features.core.enabledFeatures + val missingFeatures = RequiredFeatures.features.filter { + it.feature !in session.features.core.enabledFeatures + } if (missingFeatures.isNotEmpty()) { runInBackground { val accounts = accountDatabase.accounts() val account = accounts.findById(accountId) if (account?.acceptedMissingFeatures == false) { val dialog = MissingFeaturesDialog.Builder(this) - .missingFeatures(missingFeatures.mapNotNull { feature -> - when (feature) { - ExtendedFeature.SynchronizedMarkerLine -> R.string.label_feature_synchronizedmarkerline - ExtendedFeature.SaslAuthentication -> R.string.label_feature_saslauthentication - ExtendedFeature.SaslExternal -> R.string.label_feature_saslexternal - ExtendedFeature.HideInactiveNetworks -> R.string.label_feature_hideinactivenetworks - ExtendedFeature.PasswordChange -> R.string.label_feature_passwordchange - ExtendedFeature.CapNegotiation -> R.string.label_feature_capnegotiation - ExtendedFeature.VerifyServerSSL -> R.string.label_feature_verifyserverssl - ExtendedFeature.CustomRateLimits -> R.string.label_feature_customratelimits - ExtendedFeature.AwayFormatTimestamp -> R.string.label_feature_awayformattimestamp - ExtendedFeature.BufferActivitySync -> R.string.label_feature_bufferactivitysync - ExtendedFeature.CoreSideHighlights -> R.string.label_feature_coresidehighlights - ExtendedFeature.SenderPrefixes -> R.string.label_feature_senderprefixes - ExtendedFeature.RemoteDisconnect -> R.string.label_feature_remotedisconnect - ExtendedFeature.RichMessages -> R.string.label_feature_richmessages - ExtendedFeature.BacklogFilterType -> R.string.label_feature_backlogfiltertype - else -> null - }?.let { - MissingFeature( - feature = feature, - description = it - ) - } - }) + .missingFeatures(missingFeatures) .positiveListener(MaterialDialog.SingleButtonCallback { _, _ -> runInBackground { accounts.save(account.copy(acceptedMissingFeatures = true)) diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/RequiredFeatures.kt b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/RequiredFeatures.kt new file mode 100644 index 000000000..c1083b3fb --- /dev/null +++ b/app/src/main/java/de/kuschku/quasseldroid/util/missingfeatures/RequiredFeatures.kt @@ -0,0 +1,58 @@ +/* + * Quasseldroid - Quassel client for Android + * + * Copyright (c) 2018 Janne Koschinski + * Copyright (c) 2018 The Quassel Project + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3 as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +package de.kuschku.quasseldroid.util.missingfeatures + +import de.kuschku.libquassel.quassel.ExtendedFeature +import de.kuschku.quasseldroid.R + +object RequiredFeatures { + val features = listOf( + MissingFeature(ExtendedFeature.SynchronizedMarkerLine, + R.string.label_feature_synchronizedmarkerline), + MissingFeature(ExtendedFeature.SaslAuthentication, + R.string.label_feature_saslauthentication), + MissingFeature(ExtendedFeature.SaslExternal, + R.string.label_feature_saslexternal), + MissingFeature(ExtendedFeature.HideInactiveNetworks, + R.string.label_feature_hideinactivenetworks), + MissingFeature(ExtendedFeature.PasswordChange, + R.string.label_feature_passwordchange), + MissingFeature(ExtendedFeature.CapNegotiation, + R.string.label_feature_capnegotiation), + MissingFeature(ExtendedFeature.VerifyServerSSL, + R.string.label_feature_verifyserverssl), + MissingFeature(ExtendedFeature.CustomRateLimits, + R.string.label_feature_customratelimits), + MissingFeature(ExtendedFeature.AwayFormatTimestamp, + R.string.label_feature_awayformattimestamp), + MissingFeature(ExtendedFeature.BufferActivitySync, + R.string.label_feature_bufferactivitysync), + MissingFeature(ExtendedFeature.CoreSideHighlights, + R.string.label_feature_coresidehighlights), + MissingFeature(ExtendedFeature.SenderPrefixes, + R.string.label_feature_senderprefixes), + MissingFeature(ExtendedFeature.RemoteDisconnect, + R.string.label_feature_remotedisconnect), + MissingFeature(ExtendedFeature.RichMessages, + R.string.label_feature_richmessages), + MissingFeature(ExtendedFeature.BacklogFilterType, + R.string.label_feature_backlogfiltertype) + ) +} -- GitLab