Insert SyncButton on bilibili bangumi detail page to update progress
插入一个手动同步的按钮,以提交追番进度到服务器
This commit is contained in:
@@ -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);
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user