From 2d1fb23fc8d3b95b0ec7b2be92e7a4bea058368e Mon Sep 17 00:00:00 2001 From: kwaroran Date: Sun, 7 May 2023 22:16:16 +0900 Subject: [PATCH] [feat] added character api to plugin --- public/pluginApi.ts | 36 +++++++++++++++++++++++++++++++++++- src/ts/process/plugins.ts | 15 +++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/public/pluginApi.ts b/public/pluginApi.ts index cb83f9d3..2d44492f 100644 --- a/public/pluginApi.ts +++ b/public/pluginApi.ts @@ -24,6 +24,24 @@ frequency_penalty?: number bias?: {[key:string]:string} } + + async function transferDataAsync(type:string,body:any) { + const id = `${Date.now()}_${Math.random()}` + postMessage({ + type: 'fetch', + body: {id: id, ...body} + }) + while(true){ + await sleep(50) + for(let i=0;i<__risuPlugin__.fetchResponseQueue.length;i++){ + const q = __risuPlugin__.fetchResponseQueue[i] + if(q.id === id){ + __risuPlugin__.fetchResponseQueue.splice(i, 1) + return q.data + } + } + } + } async function risuFetch(url:string, arg:{body:any,headers?:{[key:string]:string}}){ const id = `${Date.now()}_${Math.random()}` @@ -89,6 +107,18 @@ body: data }) } + + + function getChar(){ + return transferDataAsync('getChar', '') + } + + function setChar(char:any){ + postMessage({ + type: 'setChar', + body: char + }) + } async function handleOnmessage(data:{type:string,body:any}) { if(!data.type){ @@ -143,5 +173,9 @@ const data:{type:string,body:any} = ev.data } - //{{placeholder}} + { + const __risuPlugin__ = null + const transferDataAsync = null + //{{placeholder}} + } })() \ No newline at end of file diff --git a/src/ts/process/plugins.ts b/src/ts/process/plugins.ts index 88604b1d..55c633d1 100644 --- a/src/ts/process/plugins.ts +++ b/src/ts/process/plugins.ts @@ -5,6 +5,7 @@ import { DataBase } from "../database"; import { checkNullish, selectSingleFile, sleep } from "../util"; import type { OpenAIChat } from "."; import { globalFetch } from "../globalApi"; +import { selectedCharID } from "../stores"; export const customProviderStore = writable([] as string[]) @@ -229,6 +230,20 @@ export async function loadPlugins() { } break } + case "getChar":{ + const db = get(DataBase) + const charid = get(selectedCharID) + const char = db.characters[charid] + postMsgPluginWorker('fetchData',{ + id: data.body.id, + data: char + }) + } + case "setChar":{ + const db = get(DataBase) + const charid = get(selectedCharID) + db.characters[charid] = data.body + } case "log":{ console.log(data.body) break