Files
mqttx/src/stores/useMessages.ts
T
Joe Allen 154fb15130 feat: initial MQTT v5 debugging tool
- Tauri v2 + Vue 3 + TypeScript + Element Plus
- Connection management (CRUD + enable/disable/test)
- Preset system with {{variable}} placeholders
- Dashboard with live message scrolling + topic tree
- Payload inspector (JSON/Hex/Base64/Plain)
- Protocol-level logging (file + UI dual channel)
- Global variable manager with localStorage persistence
- MQTT v5 property support (user properties, content type, etc.)
- SubAck result tracking with subscribe_tracked API
2026-08-18 14:32:57 +08:00

41 lines
1.0 KiB
TypeScript

import { ref, computed } from 'vue'
import type { MqttMessage } from '../types/mqtt'
const MAX_MESSAGES = 500
const messages = ref<MqttMessage[]>([])
export function useMessages() {
function push(msg: MqttMessage) {
messages.value.push(msg)
if (messages.value.length > MAX_MESSAGES) {
messages.value.splice(0, messages.value.length - MAX_MESSAGES)
}
}
function clear() {
messages.value = []
}
function filterByTopic(topicFilter: string): MqttMessage[] {
if (!topicFilter.trim()) return messages.value
const filter = topicFilter.trim().toLowerCase()
return messages.value.filter((m) => m.topic.toLowerCase().includes(filter))
}
function filterByConnection(connectionId: string): MqttMessage[] {
if (!connectionId) return messages.value
return messages.value.filter((m) => m.connectionId === connectionId)
}
const messageCount = computed(() => messages.value.length)
return {
messages,
push,
clear,
filterByTopic,
filterByConnection,
messageCount,
}
}