From 58a2d786297205ea461b04fe78734264fd4170df Mon Sep 17 00:00:00 2001 From: jinmo <9446650@qq.com> Date: Thu, 13 Aug 2026 19:25:07 +0800 Subject: [PATCH] feat(mqtt): persist publish panel visibility --- .../src/components/mqtt/MqttAdminConsole.vue | 24 ++++++++++++++++++- apps/desktop/src/i18n/locales/en.ts | 2 ++ apps/desktop/src/i18n/locales/es.ts | 2 ++ apps/desktop/src/i18n/locales/it.ts | 2 ++ apps/desktop/src/i18n/locales/ja.ts | 2 ++ apps/desktop/src/i18n/locales/pt-BR.ts | 2 ++ apps/desktop/src/i18n/locales/zh-CN.ts | 2 ++ apps/desktop/src/i18n/locales/zh-TW.ts | 2 ++ 8 files changed, 37 insertions(+), 1 deletion(-) diff --git a/apps/desktop/src/components/mqtt/MqttAdminConsole.vue b/apps/desktop/src/components/mqtt/MqttAdminConsole.vue index e484985888..9fd584ec6a 100644 --- a/apps/desktop/src/components/mqtt/MqttAdminConsole.vue +++ b/apps/desktop/src/components/mqtt/MqttAdminConsole.vue @@ -8,6 +8,8 @@ import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from " import TopicTreeNode from "./TopicTreeNode.vue"; import MqttPublishPanel from "./MqttPublishDialog.vue"; import { decodePayload, PAYLOAD_ENCODINGS, PAYLOAD_ENCODING_LABELS, type PayloadEncoding } from "@/lib/mqtt/mqttPayloadCodec"; +import { safeLocalStorageGet, safeLocalStorageSet } from "@/lib/backend/safeStorage"; +import { ChevronDown, ChevronUp } from "@lucide/vue"; interface Props { connectionId: string; @@ -34,6 +36,8 @@ const formQos = ref("atmostonce"); const formNoLocal = ref(false); const formEnabled = ref(true); const editingTopic = ref(null); +const MQTT_PUBLISH_PANEL_COLLAPSED_STORAGE_KEY = "dbx-mqtt-publish-panel-collapsed"; +const publishPanelCollapsed = ref(safeLocalStorageGet(MQTT_PUBLISH_PANEL_COLLAPSED_STORAGE_KEY) === "true"); const connected = computed(() => brokerInfo.value?.connected ?? false); const mqtt5 = computed(() => brokerInfo.value?.protocolVersion?.includes("5") ?? false); @@ -197,6 +201,11 @@ function handleMessagePublished() { void refreshData(); } +function togglePublishPanel() { + publishPanelCollapsed.value = !publishPanelCollapsed.value; + safeLocalStorageSet(MQTT_PUBLISH_PANEL_COLLAPSED_STORAGE_KEY, String(publishPanelCollapsed.value)); +} + async function handleClearMessages() { try { await mqttClearMessages(props.connectionId); @@ -317,6 +326,19 @@ onUnmounted(stopPolling); +
@@ -344,7 +366,7 @@ onUnmounted(stopPolling);
- + diff --git a/apps/desktop/src/i18n/locales/en.ts b/apps/desktop/src/i18n/locales/en.ts index 8e07205eed..47ab6356b5 100644 --- a/apps/desktop/src/i18n/locales/en.ts +++ b/apps/desktop/src/i18n/locales/en.ts @@ -803,6 +803,8 @@ export default { mqttRefresh: "Refresh", mqttPublishDialogTitle: "Publish MQTT Message", mqttClearMessages: "Clear messages", + mqttHidePublishPanel: "Hide publish panel", + mqttShowPublishPanel: "Show publish panel", mqttNoTopicsHint: "No subscriptions. Use the field below to subscribe to a topic.", mqttSubscribePlaceholder: "Enter a topic filter...", mqttMessagesForTopic: "Messages: {topic}", diff --git a/apps/desktop/src/i18n/locales/es.ts b/apps/desktop/src/i18n/locales/es.ts index b79ca9ae33..637291a09a 100644 --- a/apps/desktop/src/i18n/locales/es.ts +++ b/apps/desktop/src/i18n/locales/es.ts @@ -1037,6 +1037,8 @@ export default withEnglishFallback({ mqttRefresh: "Actualizar", mqttPublishDialogTitle: "Publicar mensaje MQTT", mqttClearMessages: "Borrar mensajes", + mqttHidePublishPanel: "Ocultar panel de publicación", + mqttShowPublishPanel: "Mostrar panel de publicación", mqttNoTopicsHint: "No hay suscripciones. Usa el campo inferior para suscribirte a un Topic.", mqttSubscribePlaceholder: "Introduce un filtro de Topic...", mqttMessagesForTopic: "Mensajes: {topic}", diff --git a/apps/desktop/src/i18n/locales/it.ts b/apps/desktop/src/i18n/locales/it.ts index c828f66a66..89010ffc94 100644 --- a/apps/desktop/src/i18n/locales/it.ts +++ b/apps/desktop/src/i18n/locales/it.ts @@ -1035,6 +1035,8 @@ export default withEnglishFallback({ mqttRefresh: "Aggiorna", mqttPublishDialogTitle: "Pubblica messaggio MQTT", mqttClearMessages: "Cancella messaggi", + mqttHidePublishPanel: "Nascondi pannello di pubblicazione", + mqttShowPublishPanel: "Mostra pannello di pubblicazione", mqttNoTopicsHint: "Nessuna sottoscrizione. Usa il campo sottostante per sottoscrivere un Topic.", mqttSubscribePlaceholder: "Inserisci un filtro Topic...", mqttMessagesForTopic: "Messaggi: {topic}", diff --git a/apps/desktop/src/i18n/locales/ja.ts b/apps/desktop/src/i18n/locales/ja.ts index 71603a24e4..76eb4acbb5 100644 --- a/apps/desktop/src/i18n/locales/ja.ts +++ b/apps/desktop/src/i18n/locales/ja.ts @@ -1035,6 +1035,8 @@ export default withEnglishFallback({ mqttRefresh: "更新", mqttPublishDialogTitle: "MQTT メッセージを公開", mqttClearMessages: "メッセージを消去", + mqttHidePublishPanel: "公開パネルを隠す", + mqttShowPublishPanel: "公開パネルを表示", mqttNoTopicsHint: "購読はありません。下の入力欄からトピックを購読してください。", mqttSubscribePlaceholder: "トピックフィルターを入力...", mqttMessagesForTopic: "メッセージ: {topic}", diff --git a/apps/desktop/src/i18n/locales/pt-BR.ts b/apps/desktop/src/i18n/locales/pt-BR.ts index 6d83812707..9c2d20d191 100644 --- a/apps/desktop/src/i18n/locales/pt-BR.ts +++ b/apps/desktop/src/i18n/locales/pt-BR.ts @@ -1036,6 +1036,8 @@ export default withEnglishFallback({ mqttRefresh: "Atualizar", mqttPublishDialogTitle: "Publicar mensagem MQTT", mqttClearMessages: "Limpar mensagens", + mqttHidePublishPanel: "Ocultar painel de publicação", + mqttShowPublishPanel: "Mostrar painel de publicação", mqttNoTopicsHint: "Nenhuma inscrição. Use o campo abaixo para assinar um Topic.", mqttSubscribePlaceholder: "Digite um filtro de Topic...", mqttMessagesForTopic: "Mensagens: {topic}", diff --git a/apps/desktop/src/i18n/locales/zh-CN.ts b/apps/desktop/src/i18n/locales/zh-CN.ts index dcd989eeb9..c2e1d52eb8 100644 --- a/apps/desktop/src/i18n/locales/zh-CN.ts +++ b/apps/desktop/src/i18n/locales/zh-CN.ts @@ -727,6 +727,8 @@ export default withEnglishFallback({ mqttRefresh: "刷新", mqttPublishDialogTitle: "发布 MQTT 消息", mqttClearMessages: "清空消息", + mqttHidePublishPanel: "隐藏发布区", + mqttShowPublishPanel: "显示发布区", mqttNoTopicsHint: "暂无订阅。使用下方输入框订阅 Topic。", mqttSubscribePlaceholder: "输入要订阅的 Topic...", mqttMessagesForTopic: "消息:{topic}", diff --git a/apps/desktop/src/i18n/locales/zh-TW.ts b/apps/desktop/src/i18n/locales/zh-TW.ts index 9884058f46..1c1449e511 100644 --- a/apps/desktop/src/i18n/locales/zh-TW.ts +++ b/apps/desktop/src/i18n/locales/zh-TW.ts @@ -1035,6 +1035,8 @@ export default withEnglishFallback({ mqttRefresh: "重新整理", mqttPublishDialogTitle: "發布 MQTT 訊息", mqttClearMessages: "清除訊息", + mqttHidePublishPanel: "隱藏發布區", + mqttShowPublishPanel: "顯示發布區", mqttNoTopicsHint: "目前沒有訂閱。請使用下方輸入框訂閱 Topic。", mqttSubscribePlaceholder: "輸入要訂閱的 Topic 篩選器...", mqttMessagesForTopic: "訊息:{topic}",