83 lines
2.5 KiB
JavaScript
83 lines
2.5 KiB
JavaScript
"use strict";
|
|
const common_vendor = require("../common/vendor.js");
|
|
const DRAFT_NS = {
|
|
ASSIGN: "draft_assign",
|
|
ACCEPT: "draft_accept",
|
|
ACCEPT_APPROVAL: "draft_accept_approval",
|
|
RECTIFY: "draft_rectify",
|
|
INSPECTION_RESULT: "draft_inspection_result",
|
|
INSPECTION_SHEET: "draft_inspection_sheet",
|
|
HAZARD_ADD: "draft_hazard_add"
|
|
};
|
|
function buildDraftKey(namespace, ...parts) {
|
|
return [namespace, ...parts.map((p) => String(p ?? ""))].join("_");
|
|
}
|
|
function buildDraftKeyCompact(namespace, ...parts) {
|
|
return [namespace, ...parts.map((p) => String(p ?? "")).filter(Boolean)].join("_");
|
|
}
|
|
function loadDraftWithFallback(primaryKey, fallbackKeys = []) {
|
|
const primary = loadDraft(primaryKey);
|
|
if (primary) {
|
|
return { data: primary, key: primaryKey, fromFallback: false };
|
|
}
|
|
for (const fallbackKey of fallbackKeys) {
|
|
if (!fallbackKey || fallbackKey === primaryKey)
|
|
continue;
|
|
const fallback = loadDraft(fallbackKey);
|
|
if (fallback) {
|
|
return { data: fallback, key: primaryKey, fromFallback: true, fallbackKey };
|
|
}
|
|
}
|
|
return { data: null, key: primaryKey, fromFallback: false };
|
|
}
|
|
function loadDraft(key) {
|
|
if (!key)
|
|
return null;
|
|
const raw = common_vendor.index.getStorageSync(key);
|
|
if (!raw)
|
|
return null;
|
|
try {
|
|
return typeof raw === "string" ? JSON.parse(raw) : raw;
|
|
} catch (error) {
|
|
common_vendor.index.__f__("error", "at utils/draftCache.js:63", "[draftCache] 解析草稿失败:", key, error);
|
|
return null;
|
|
}
|
|
}
|
|
function saveDraftToStorage(key, data) {
|
|
if (!key)
|
|
return;
|
|
common_vendor.index.setStorageSync(
|
|
key,
|
|
JSON.stringify({
|
|
...data,
|
|
updatedAt: Date.now()
|
|
})
|
|
);
|
|
}
|
|
function removeDraft(key) {
|
|
if (!key)
|
|
return;
|
|
common_vendor.index.removeStorageSync(key);
|
|
}
|
|
function defaultHasContent(payload) {
|
|
if (!payload || typeof payload !== "object")
|
|
return false;
|
|
return Object.entries(payload).some(([key, value]) => {
|
|
if (key === "updatedAt")
|
|
return false;
|
|
if (Array.isArray(value))
|
|
return value.length > 0;
|
|
if (value && typeof value === "object")
|
|
return Object.keys(value).length > 0;
|
|
return value !== "" && value != null;
|
|
});
|
|
}
|
|
exports.DRAFT_NS = DRAFT_NS;
|
|
exports.buildDraftKey = buildDraftKey;
|
|
exports.buildDraftKeyCompact = buildDraftKeyCompact;
|
|
exports.defaultHasContent = defaultHasContent;
|
|
exports.loadDraftWithFallback = loadDraftWithFallback;
|
|
exports.removeDraft = removeDraft;
|
|
exports.saveDraftToStorage = saveDraftToStorage;
|
|
//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/draftCache.js.map
|