From ad5e3db0ae0a9c3635b818757e5c7a184415b5a8 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Fri, 16 Jun 2023 13:34:02 +0900 Subject: [PATCH] [feat] realm enchanments --- src/lib/ChatScreens/ChatScreen.svelte | 5 +- src/lib/UI/Hub.svelte | 66 ++++++------------- src/lib/UI/MainMenu.svelte | 37 +++++++---- src/lib/UI/RisuHubIcon.svelte | 36 +++++++++++ src/ts/characterCards.ts | 93 +++++++++++++++------------ src/ts/parser.ts | 1 + 6 files changed, 139 insertions(+), 99 deletions(-) create mode 100644 src/lib/UI/RisuHubIcon.svelte diff --git a/src/lib/ChatScreens/ChatScreen.svelte b/src/lib/ChatScreens/ChatScreen.svelte index 360741ea..24dd4149 100644 --- a/src/lib/ChatScreens/ChatScreen.svelte +++ b/src/lib/ChatScreens/ChatScreen.svelte @@ -55,7 +55,7 @@ {:else if $DataBase.theme === 'waifuMobile'}
-
+
= 0}>
{#if $selectedCharID >= 0} @@ -78,4 +78,7 @@ .halfwp{ max-width: calc(50% - 5rem); } + .per33{ + height: 33.333333%; + } \ No newline at end of file diff --git a/src/lib/UI/Hub.svelte b/src/lib/UI/Hub.svelte index 09c8db45..be8a7b8e 100644 --- a/src/lib/UI/Hub.svelte +++ b/src/lib/UI/Hub.svelte @@ -1,27 +1,14 @@
@@ -34,18 +36,31 @@

Your Characters

Opens your character list. you can open with pressing arrow button in top left corner too. - {#if $DataBase.useExperimental} - - {:else} - - {/if} +
+ {#await getRisuHub({ + search: '', + page: -10, + nsfw: false, + sort: '' + }) then charas} +
+

Recent Characters from {language.hub}

+ {#if charas.length > 0} +
+ {#each charas as chara} + {openHub = true}} chara={chara} /> + {/each} +
+ {:else} +
Failed to load {language.hub}...
+ {/if} + {/await} {:else}
+ {/if} + {#if chara.hasLore} + + {/if} +
+
+
\ No newline at end of file diff --git a/src/ts/characterCards.ts b/src/ts/characterCards.ts index f282e8d1..f97f51e8 100644 --- a/src/ts/characterCards.ts +++ b/src/ts/characterCards.ts @@ -653,58 +653,67 @@ export async function shareRisuHub(char:character, arg:{ } -export async function getRisuHub(arg?:{ - search?:string, - page?:number, - nsfw?:boolean - sort?:string -}):Promise<{ +export type hubType = { name:string desc: string download: number, id: string, img: string - tags: string[] -}[]> { - const da = await fetch(hubURL + '/hub/list', { - method: "POST", - body: JSON.stringify(arg ?? {}) - }) - if(da.status !== 200){ - return [] + tags: string[], + viewScreen: "none" | "emotion" | "imggen" + hasLore:boolean +} + +export async function getRisuHub(arg?:{ + search?:string, + page?:number, + nsfw?:boolean + sort?:string +}):Promise { + try { + const da = await fetch(hubURL + '/hub/list', { + method: "POST", + body: JSON.stringify(arg ?? {}) + }) + if(da.status !== 200){ + return [] + } + console.log(da) + return da.json() + } catch (error) { + return[] } - console.log(da) - return da.json() } export async function downloadRisuHub(id:string) { - alertStore.set({ - type: "wait", - msg: "Downloading..." - }) - const res = await fetch(hubURL + '/hub/get', { - method: "POST", - body: JSON.stringify({ - id: id + try { + alertStore.set({ + type: "wait", + msg: "Downloading..." }) - }) - if(res.status !== 200){ - alertError(await res.text()) - } - - const result = await res.json() - const data:CharacterCardV2 = result.card - const img:string = result.img - - await importSpecv2(data, await getHubResources(img), 'hub') - checkCharOrder() - let db = get(DataBase) - if(db.characters[db.characters.length-1]){ - const index = db.characters.length-1 - characterFormatUpdate(index); - selectedCharID.set(index); - } - + const res = await fetch(hubURL + '/hub/get', { + method: "POST", + body: JSON.stringify({ + id: id + }) + }) + if(res.status !== 200){ + alertError(await res.text()) + } + + const result = await res.json() + const data:CharacterCardV2 = result.card + const img:string = result.img + + await importSpecv2(data, await getHubResources(img), 'hub') + checkCharOrder() + let db = get(DataBase) + if(db.characters[db.characters.length-1]){ + const index = db.characters.length-1 + characterFormatUpdate(index); + selectedCharID.set(index); + } + } catch (error) {alertError("Error while importing")} } export async function getHubResources(id:string) { diff --git a/src/ts/parser.ts b/src/ts/parser.ts index 3258e4a7..84d0a4d9 100644 --- a/src/ts/parser.ts +++ b/src/ts/parser.ts @@ -19,6 +19,7 @@ const safeConvertor = new showdown.Converter({ }) + DOMPurify.addHook("uponSanitizeElement", (node: HTMLElement, data) => { if (data.tagName === "iframe") { const src = node.getAttribute("src") || "";