Insert SyncButton on bilibili bangumi detail page to update progress

插入一个手动同步的按钮,以提交追番进度到服务器
This commit is contained in:
2024-04-21 23:34:23 +08:00
parent 11f1ed2875
commit ef26533127
7 changed files with 199 additions and 14 deletions
+46
View File
@@ -0,0 +1,46 @@
// 发送一条消息(二次封装类型)
export const postPageMessage = (data: PageMessage.Messages) => {
return window.postMessage(data);
};
// 接收一条消息
export const receivePageMessage = (
fn: (data: PageMessage.Messages) => void,
eventName?: PageMessage.Messages["type"]
) => {
const eventFn = (ev: MessageEvent<PageMessage.Messages>) => {
if (!ev.data) {
return;
}
if (eventName && ev.data.type === eventName) {
fn(ev.data);
} else if (!eventName && ev.data.type?.includes("toolbox::")) {
fn(ev.data);
}
};
window.addEventListener("message", eventFn);
return () => {
window.removeEventListener("message", eventFn);
};
};
// 等待一条消息的推送
export const waitPageMessage = (eventName: PageMessage.Messages["type"]) => {
return new Promise<PageMessage.Messages>((resolve) => {
const eventFn = (ev: MessageEvent<PageMessage.Messages>) => {
if (!ev.data) {
return;
}
if (eventName && ev.data.type === eventName) {
window.removeEventListener("message", eventFn);
resolve(ev.data);
}
};
window.addEventListener("message", eventFn);
});
};