first commit
This commit is contained in:
85
src/hook/useStore.tsx
Normal file
85
src/hook/useStore.tsx
Normal 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);
|
||||
}
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user