85 lines
2.4 KiB
TypeScript
85 lines
2.4 KiB
TypeScript
interface StorageMessage {
|
|
type: "setStorage" | "getStorage" | "removeStorage";
|
|
key: string;
|
|
value?: any;
|
|
}
|
|
|
|
// 统一的发送消息函数
|
|
const sendMessageToFigma = (type: string, data?: any) => {
|
|
parent.postMessage({ pluginMessage: { type, ...data } }, '*');
|
|
};
|
|
|
|
export const storage = {
|
|
set: async (key: string, value: any) => {
|
|
try {
|
|
return new Promise((resolve, reject) => {
|
|
const messageHandler = (event: MessageEvent) => {
|
|
const msg = event.data.pluginMessage;
|
|
if (msg?.type === 'storageSet') {
|
|
window.removeEventListener('message', messageHandler);
|
|
if (msg.success) {
|
|
resolve(true);
|
|
} else {
|
|
reject(msg.error);
|
|
}
|
|
}
|
|
};
|
|
window.addEventListener('message', messageHandler);
|
|
|
|
// 发送设置存储的消息
|
|
sendMessageToFigma('setStorage', { key, value });
|
|
});
|
|
} catch (error) {
|
|
console.log(error, '222222');
|
|
}
|
|
},
|
|
|
|
get: async (key: string) => {
|
|
return new Promise((resolve, reject) => {
|
|
try {
|
|
const messageHandler = (event: MessageEvent) => {
|
|
const msg = event.data.pluginMessage;
|
|
if (msg?.type === 'storageGet') {
|
|
window.removeEventListener('message', messageHandler);
|
|
if (msg.value !== undefined) {
|
|
resolve(msg.value);
|
|
} else {
|
|
reject(msg.error);
|
|
}
|
|
}
|
|
};
|
|
window.addEventListener('message', messageHandler);
|
|
|
|
// 发送获取存储的消息
|
|
sendMessageToFigma('getStorage', { key });
|
|
} catch (error) {
|
|
reject(null);
|
|
console.log(error, 'getgetgetget4444');
|
|
}
|
|
});
|
|
},
|
|
|
|
remove: async (key: string) => {
|
|
try {
|
|
return new Promise((resolve, reject) => {
|
|
const messageHandler = (event: MessageEvent) => {
|
|
const msg = event.data.pluginMessage;
|
|
if (msg?.type === 'storageRemoved') {
|
|
window.removeEventListener('message', messageHandler);
|
|
if (msg.success) {
|
|
resolve(true);
|
|
} else {
|
|
reject(msg.error);
|
|
}
|
|
}
|
|
};
|
|
window.addEventListener('message', messageHandler);
|
|
|
|
// 发送删除存储的消息
|
|
sendMessageToFigma('removeStorage', { key });
|
|
});
|
|
} catch (error) {
|
|
console.error('Failed to remove storage:', error);
|
|
}
|
|
},
|
|
}; |