first commit

This commit is contained in:
liamzi
2025-01-21 10:57:59 +08:00
commit 83096f7c9e
22 changed files with 8799 additions and 0 deletions

85
src/hook/useStore.tsx Normal file
View File

@@ -0,0 +1,85 @@
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);
}
},
};