update:优化ota
This commit is contained in:
@@ -13,6 +13,15 @@ const phaseTextMap = {
|
||||
installing: "正在安装固件",
|
||||
};
|
||||
|
||||
// 设备详情中的 latestVersion 是升级目标,version 是当前固件版本。
|
||||
export const getOtaInfoFromDetail = (detail) => ({
|
||||
versionNumber: String(detail?.latestVersion ?? "").trim(),
|
||||
currentVersion: String(detail?.version ?? "").trim(),
|
||||
versionInfo: String(detail?.versionInfo ?? "").trim(),
|
||||
needUpdate: detail?.needUpdate === true || Number(detail?.needUpdate) === 1,
|
||||
forceUpdate: detail?.forceUpdate === true || Number(detail?.forceUpdate) === 1,
|
||||
});
|
||||
|
||||
// OTA 状态由首页、WiFi 设置页和我的设备页共享,页面切换后仍可继续接收进度。
|
||||
const updating = ref(false);
|
||||
const progress = ref(0);
|
||||
@@ -115,6 +124,7 @@ function handleSocketMessage(message) {
|
||||
} else if (!isCurrentVersionMessage(message.data)) {
|
||||
return;
|
||||
}
|
||||
if (!targetVersion && messageVersion) targetVersion = messageVersion;
|
||||
|
||||
const nextProgress = Math.min(
|
||||
100,
|
||||
@@ -138,6 +148,7 @@ function handleSocketMessage(message) {
|
||||
} else if (!isCurrentVersionMessage(message.data)) {
|
||||
return;
|
||||
}
|
||||
if (!targetVersion && messageVersion) targetVersion = messageVersion;
|
||||
|
||||
if (message.data?.status === "success") {
|
||||
finishUpdate("success");
|
||||
@@ -160,16 +171,20 @@ export const useOtaUpdate = () => {
|
||||
|
||||
const startUpdate = async ({
|
||||
versionNumber,
|
||||
resourceUrl,
|
||||
wifiSsid = "",
|
||||
wifiPassword = "",
|
||||
onSuccess,
|
||||
}) => {
|
||||
if (updating.value) return false;
|
||||
const nextVersion = String(versionNumber || "").trim();
|
||||
if (!nextVersion) {
|
||||
uni.showToast({ title: "缺少固件目标版本", icon: "none" });
|
||||
return false;
|
||||
}
|
||||
|
||||
updateRunId += 1;
|
||||
const runId = updateRunId;
|
||||
targetVersion = String(versionNumber || "");
|
||||
targetVersion = nextVersion;
|
||||
lastFinishedVersion = "";
|
||||
successCallback = onSuccess || null;
|
||||
resultVisible.value = false;
|
||||
@@ -188,7 +203,6 @@ export const useOtaUpdate = () => {
|
||||
versionNumber: targetVersion,
|
||||
wifiSsid,
|
||||
wifiPassword,
|
||||
resourceUrl,
|
||||
});
|
||||
if (runId !== updateRunId || !updating.value) return false;
|
||||
if (!updateResult?.taskId) {
|
||||
|
||||
Reference in New Issue
Block a user