feat: 优化“已订阅主题列表”,自动对数据进行按主题名称升序排序

This commit is contained in:
2026-07-20 00:38:09 +08:00
parent a1106d4ce6
commit 515fc2158b

View File

@@ -108,6 +108,17 @@ const loading = ref(false);
*/
let cleanupFns = [];
/**
* 对指定服务器的主题列表按主题名称升序排序
* @param {MqttServer} server - 服务器对象
* @returns {void}
*/
function sortTopics(server) {
if (server && server.topics) {
server.topics.sort((a, b) => a.topic.localeCompare(b.topic));
}
}
/**
* 设置主进程事件监听器
* 包括状态变化、消息接收、订阅变化等事件
@@ -172,6 +183,7 @@ function setupListeners() {
t.subscribed = data.subscribed;
if (data.topic && data.topic !== t.topic) {
t.topic = data.topic;
sortTopics(srv);
}
}
@@ -252,6 +264,7 @@ export function useMqttStore() {
servers.value = data;
sortServers();
servers.value.forEach((srv) => sortTopics(srv));
setupListeners();
} catch (e) {
@@ -355,6 +368,7 @@ export function useMqttStore() {
let data = await window.api.importServers(serverList);
servers.value = data;
sortServers();
servers.value.forEach((srv) => sortTopics(srv));
if (servers.value.length > 0 && !activeServerId.value) {
activeServerId.value = servers.value[0].id;
}
@@ -396,6 +410,7 @@ export function useMqttStore() {
let srv = servers.value.find((s) => s.id === serverId);
if (srv) {
srv.topics.push(result);
sortTopics(srv);
}
}
@@ -417,6 +432,7 @@ export function useMqttStore() {
if (srv) {
srv.topics = srv.topics.filter((t) => t.topic !== topic);
sortTopics(srv);
}
}