From 3b878e73203895463f43074ddcec033a34f72569 Mon Sep 17 00:00:00 2001 From: Janne Mareike Koschinski <janne@kuschku.de> Date: Mon, 14 Jun 2021 11:12:47 +0200 Subject: [PATCH] =?UTF-8?q?Fixed=20issue=20where=20connecting=20to=20a=20d?= =?UTF-8?q?isconnected=20network=20isn=E2=80=99t=20possible?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chat/buffers/BufferViewConfigFragment.kt | 24 +-- .../ui/presenter/BufferContextPresenter.kt | 192 ++++++++++-------- 2 files changed, 118 insertions(+), 98 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt index 258134408..be0694344 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt @@ -133,20 +133,16 @@ class BufferViewConfigFragment : ServiceBoundFragment() { val network = session?.networks?.get(networkId) val bufferViewConfig = modelHelper.bufferViewConfig.value?.orNull() - return if (info != null) { - BufferContextPresenter.handleAction( - requireContext(), - mode, - item, - info, - session, - bufferSyncer, - bufferViewConfig, - network - ) - } else { - false - } + return BufferContextPresenter.handleAction( + requireContext(), + mode, + item, + info, + session, + bufferSyncer, + bufferViewConfig, + network + ) } override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean { diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/presenter/BufferContextPresenter.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/presenter/BufferContextPresenter.kt index cb69524c0..025ac858a 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/presenter/BufferContextPresenter.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/presenter/BufferContextPresenter.kt @@ -55,7 +55,7 @@ object BufferContextPresenter { ) val visibilityActions = when (buffer.hiddenState) { - BufferHiddenState.VISIBLE -> setOf( + BufferHiddenState.VISIBLE -> setOf( R.id.action_archive ) BufferHiddenState.HIDDEN_TEMPORARY -> setOf( @@ -67,15 +67,15 @@ object BufferContextPresenter { } val availableActions = when (buffer.info?.type?.enabledValues()?.firstOrNull()) { - Buffer_Type.StatusBuffer -> { + Buffer_Type.StatusBuffer -> { when (buffer.connectionState) { INetwork.ConnectionState.Disconnected -> setOf( R.id.action_configure, R.id.action_connect ) - INetwork.ConnectionState.Initialized -> setOf( + INetwork.ConnectionState.Initialized -> setOf( R.id.action_channellist, R.id.action_configure, R.id.action_disconnect ) - else -> setOf( + else -> setOf( R.id.action_configure, R.id.action_connect, R.id.action_disconnect ) } @@ -87,10 +87,10 @@ object BufferContextPresenter { setOf(R.id.action_join, R.id.action_delete) } + visibilityActions } - Buffer_Type.QueryBuffer -> { + Buffer_Type.QueryBuffer -> { setOf(R.id.action_delete, R.id.action_rename) + visibilityActions } - else -> visibilityActions + else -> visibilityActions } val unavailableActions = allActions - availableActions @@ -111,9 +111,9 @@ object BufferContextPresenter { context: Context, actionMode: ActionMode, item: MenuItem, - info: BufferInfo, - session: ISession, - bufferSyncer: BufferSyncer, + info: BufferInfo?, + session: ISession?, + bufferSyncer: BufferSyncer?, bufferViewConfig: BufferViewConfig?, network: Network? ) = when (item.itemId) { @@ -124,101 +124,125 @@ object BufferContextPresenter { actionMode.finish() true } - R.id.action_configure -> { + R.id.action_configure -> { network?.let { NetworkEditActivity.launch(context, network = it.networkId()) } actionMode.finish() true } - R.id.action_connect -> { + R.id.action_connect -> { network?.requestConnect() actionMode.finish() true } - R.id.action_disconnect -> { + R.id.action_disconnect -> { network?.requestDisconnect() actionMode.finish() true } - R.id.action_join -> { - session.rpcHandler.sendInput(info, "/join ${info.bufferName}") - actionMode.finish() - true + R.id.action_join -> { + if (info != null) { + session?.rpcHandler?.sendInput(info, "/join ${info.bufferName}") + actionMode.finish() + true + } else { + false + } } - R.id.action_part -> { - session.rpcHandler.sendInput(info, "/part ${info.bufferName}") - actionMode.finish() - true + R.id.action_part -> { + if (info != null) { + session?.rpcHandler?.sendInput(info, "/part ${info.bufferName}") + actionMode.finish() + true + } else { + false + } } - R.id.action_delete -> { - MaterialDialog.Builder(context) - .content(R.string.buffer_delete_confirmation) - .positiveText(R.string.label_yes) - .negativeText(R.string.label_no) - .negativeColorAttr(R.attr.colorTextPrimary) - .backgroundColorAttr(R.attr.colorBackgroundCard) - .contentColorAttr(R.attr.colorTextPrimary) - .onPositive { _, _ -> - session.bufferSyncer.requestRemoveBuffer(info.bufferId) - } - .onAny { _, _ -> - actionMode.finish() - } - .build() - .show() - true + R.id.action_delete -> { + if (info != null) { + MaterialDialog.Builder(context) + .content(R.string.buffer_delete_confirmation) + .positiveText(R.string.label_yes) + .negativeText(R.string.label_no) + .negativeColorAttr(R.attr.colorTextPrimary) + .backgroundColorAttr(R.attr.colorBackgroundCard) + .contentColorAttr(R.attr.colorTextPrimary) + .onPositive { _, _ -> + session?.bufferSyncer?.requestRemoveBuffer(info.bufferId) + } + .onAny { _, _ -> + actionMode.finish() + } + .build() + .show() + true + } else { + false + } } - R.id.action_rename -> { - MaterialDialog.Builder(context) - .input( - context.getString(R.string.label_buffer_name), - info.bufferName, - false - ) { _, input -> - session.bufferSyncer.requestRenameBuffer(info.bufferId, input.toString()) - } - .positiveText(R.string.label_save) - .negativeText(R.string.label_cancel) - .negativeColorAttr(R.attr.colorTextPrimary) - .backgroundColorAttr(R.attr.colorBackgroundCard) - .contentColorAttr(R.attr.colorTextPrimary) - .onAny { _, _ -> - actionMode.finish() - } - .build() - .show() - true + R.id.action_rename -> { + if (info != null && bufferSyncer != null) { + MaterialDialog.Builder(context) + .input( + context.getString(R.string.label_buffer_name), + info.bufferName, + false + ) { _, input -> + session?.bufferSyncer?.requestRenameBuffer(info.bufferId, input.toString()) + } + .positiveText(R.string.label_save) + .negativeText(R.string.label_cancel) + .negativeColorAttr(R.attr.colorTextPrimary) + .backgroundColorAttr(R.attr.colorBackgroundCard) + .contentColorAttr(R.attr.colorTextPrimary) + .onAny { _, _ -> + actionMode.finish() + } + .build() + .show() + true + } else { + false + } } - R.id.action_unhide -> { - bufferViewConfig?.insertBufferSorted(info, bufferSyncer) - actionMode.finish() - true + R.id.action_unhide -> { + if (info != null && bufferSyncer != null) { + bufferViewConfig?.insertBufferSorted(info, bufferSyncer) + actionMode.finish() + true + } else { + false + } } - R.id.action_archive -> { - MaterialDialog.Builder(context) - .title(R.string.label_archive_chat) - .content(R.string.buffer_archive_confirmation) - .checkBoxPromptRes(R.string.buffer_archive_temporarily, true, null) - .positiveText(R.string.label_archive) - .negativeText(R.string.label_cancel) - .negativeColorAttr(R.attr.colorTextPrimary) - .backgroundColorAttr(R.attr.colorBackgroundCard) - .contentColorAttr(R.attr.colorTextPrimary) - .onAny { _, _ -> - actionMode.finish() - } - .onPositive { dialog, _ -> - if (dialog.isPromptCheckBoxChecked) { - bufferViewConfig?.requestRemoveBuffer(info.bufferId) - } else { - bufferViewConfig?.requestRemoveBufferPermanently(info.bufferId) + R.id.action_archive -> { + if (info != null) { + MaterialDialog.Builder(context) + .title(R.string.label_archive_chat) + .content(R.string.buffer_archive_confirmation) + .checkBoxPromptRes(R.string.buffer_archive_temporarily, true, null) + .positiveText(R.string.label_archive) + .negativeText(R.string.label_cancel) + .negativeColorAttr(R.attr.colorTextPrimary) + .backgroundColorAttr(R.attr.colorBackgroundCard) + .contentColorAttr(R.attr.colorTextPrimary) + .onAny { _, _ -> + actionMode.finish() } - } - .build() - .show() - true + .onPositive { dialog, _ -> + if (dialog.isPromptCheckBoxChecked) { + bufferViewConfig?.requestRemoveBuffer(info.bufferId) + } else { + bufferViewConfig?.requestRemoveBufferPermanently(info.bufferId) + } + } + .build() + .show() + true + } else { + false + } } - else -> false + else -> false } } -- GitLab