2026-06-21 12:50:31 +00:00
|
|
|
const syncBtn = document.getElementById("sync");
|
|
|
|
|
const statusEl = document.getElementById("status");
|
|
|
|
|
|
|
|
|
|
function setStatus(text, isError = false) {
|
|
|
|
|
statusEl.textContent = text;
|
|
|
|
|
statusEl.style.color = isError ? "#b45309" : "#166534";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
syncBtn.addEventListener("click", async () => {
|
|
|
|
|
syncBtn.disabled = true;
|
|
|
|
|
setStatus("同步中…");
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
const { serverUrl } = await chrome.storage.sync.get(["serverUrl"]);
|
|
|
|
|
const response = await chrome.runtime.sendMessage({
|
|
|
|
|
action: "sync",
|
|
|
|
|
serverUrl,
|
2026-06-23 16:55:10 +00:00
|
|
|
apiVersion: "go-v1",
|
2026-06-21 12:50:31 +00:00
|
|
|
});
|
|
|
|
|
|
2026-06-23 16:55:10 +00:00
|
|
|
if (!response) {
|
|
|
|
|
throw new Error(
|
|
|
|
|
chrome.runtime.lastError?.message ??
|
|
|
|
|
"擴充背景程序無回應。請到 chrome://extensions 重新載入擴充"
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (response.success !== false && response.valid !== false) {
|
2026-06-21 12:50:31 +00:00
|
|
|
setStatus(
|
|
|
|
|
response.username
|
|
|
|
|
? `成功:@${response.username}\n${response.message ?? ""}`
|
|
|
|
|
: response.message ?? "同步成功"
|
|
|
|
|
);
|
|
|
|
|
} else {
|
2026-06-23 16:55:10 +00:00
|
|
|
setStatus(response.message ?? "同步失敗", true);
|
2026-06-21 12:50:31 +00:00
|
|
|
}
|
|
|
|
|
} catch (error) {
|
|
|
|
|
setStatus(error instanceof Error ? error.message : "同步失敗", true);
|
|
|
|
|
} finally {
|
|
|
|
|
syncBtn.disabled = false;
|
|
|
|
|
}
|
|
|
|
|
});
|