feat: 优化“已订阅主题列表”,自动对数据进行按主题名称升序排序
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user