feat: add realm sharing

This commit is contained in:
kwaroran
2024-05-30 13:36:14 +09:00
parent 221cac2dc4
commit 7e9433008a
3 changed files with 37 additions and 10 deletions

View File

@@ -393,10 +393,12 @@
</h1>
<span class="text-textcolor mt-4">{language.type}</span>
{#if cardExportType === ''}
{#if $alertStore.submsg !== 'preset'}
<span class="text-textcolor2 text-sm">{language.ccv3Desc}</span>
{:else}
{#if $alertStore.submsg === 'module'}
<span class="text-textcolor2 text-sm">{language.jsonDesc}</span>
{:else if $alertStore.submsg === 'preset'}
<span class="text-textcolor2 text-sm">{language.risupresetDesc}</span>
{:else}
<span class="text-textcolor2 text-sm">{language.ccv3Desc}</span>
{/if}
{:else if cardExportType === 'json'}
<span class="text-textcolor2 text-sm">{language.jsonDesc}</span>
@@ -410,8 +412,11 @@
<button class="bg-bgcolor px-2 py-4 rounded-lg flex-1" class:ring-1={cardExportType === ''} on:click={() => {cardExportType = ''}}>Risupreset</button>
<button class="bg-bgcolor px-2 py-4 rounded-lg ml-2 flex-1" class:ring-1={cardExportType === 'json'} on:click={() => {cardExportType = 'json'}}>JSON</button>
<button class="bg-bgcolor px-2 py-4 rounded-lg ml-2 flex-1" class:ring-1={cardExportType === 'realm'} on:click={() => {cardExportType = 'realm'}}>RisuRealm</button>
{:else if $alertStore.submsg === 'module'}
<button class="bg-bgcolor px-2 py-4 rounded-lg flex-1" class:ring-1={cardExportType === ''} on:click={() => {cardExportType = ''}}>JSON</button>
<button class="bg-bgcolor px-2 py-4 rounded-lg ml-2 flex-1" class:ring-1={cardExportType === 'realm'} on:click={() => {cardExportType = 'realm'}}>RisuRealm</button>
{:else}
<button class="bg-bgcolor px-2 py-4 rounded-lg flex-1" class:ring-1={cardExportType === ''} on:click={() => {cardExportType = ''}}>Character Card V3</button>
<button class="bg-bgcolor px-2 py-4 rounded-lg flex-1" class:ring-1={cardExportType === ''} on:click={() => {cardExportType = ''}}>Character Card V3</button>
<button class="bg-bgcolor px-2 py-4 rounded-lg flex-1 ml-2" class:ring-1={cardExportType === 'ccv2'} on:click={() => {cardExportType = 'ccv2'}}>Character Card V2</button>
{/if}
</div>

View File

@@ -4,11 +4,12 @@
import Button from "src/lib/UI/GUI/Button.svelte";
import ModuleMenu from "src/lib/Setting/Pages/Module/ModuleMenu.svelte";
import { exportModule, importModule, type RisuModule } from "src/ts/process/modules";
import { DownloadIcon, Edit, TrashIcon, Globe } from "lucide-svelte";
import { DownloadIcon, Edit, TrashIcon, Globe, Share2Icon } from "lucide-svelte";
import { v4 } from "uuid";
import { tooltip } from "src/ts/gui/tooltip";
import { alertConfirm } from "src/ts/alert";
import { alertCardExport, alertConfirm, alertError } from "src/ts/alert";
import TextInput from "src/lib/UI/GUI/TextInput.svelte";
import { ShowRealmFrameStore } from "src/ts/stores";
let tempModule:RisuModule = {
name: '',
description: '',
@@ -72,9 +73,19 @@
</button>
<button class="text-textcolor2 hover:text-green-500 mr-2 cursor-pointer" use:tooltip={language.download} on:click={async (e) => {
e.stopPropagation()
exportModule(rmodule)
const data = await alertCardExport('module')
if(data.type === ''){
exportModule(rmodule)
}
if(data.type === 'realm'){
if(!$DataBase.account){
alertError(language.notLoggedIn)
return
}
$ShowRealmFrameStore = `module:${i}`
}
}}>
<DownloadIcon size={18}/>
<Share2Icon size={18}/>
</button>
<button class="text-textcolor2 hover:text-green-500 mr-2 cursor-pointer" use:tooltip={language.edit} on:click={async (e) => {
e.stopPropagation()

View File

@@ -27,7 +27,7 @@
}
if(e.data.type === 'success'){
alertMd(`## Upload Success\n\nYour character has been uploaded to Realm successfully.\n\n${"```\nhttps://realm.risuai.net/character/" + e.data.id + "\n```"}`)
if($ShowRealmFrameStore.startsWith('preset')){
if($ShowRealmFrameStore.startsWith('preset') || $ShowRealmFrameStore.startsWith('module')){
//TODO, add preset edit
}
else if($CurrentCharacter.type === 'character'){
@@ -66,6 +66,17 @@
name: encodedPredataName.buffer
}
}
else if($ShowRealmFrameStore.startsWith('module')){
const predata = $DataBase.modules[Number($ShowRealmFrameStore.split(':')[1])]
//@ts-ignore
predata.type = 'risuModule'
const encodedPredata = new TextEncoder().encode(JSON.stringify(predata))
const encodedPredataName = new TextEncoder().encode(predata.name + '.json')
data = {
data: encodedPredata.buffer,
name: encodedPredataName.buffer
}
}
else{
data = await shareRealmCardData()
}
@@ -82,7 +93,7 @@
const getUrl = () => {
let url = `https://realm.risuai.net/upload?token=${tk}&token_id=${id}`
if($ShowRealmFrameStore.startsWith('preset')){
if($ShowRealmFrameStore.startsWith('preset') || $ShowRealmFrameStore.startsWith('module')){
//TODO, add preset edit
}
else if($CurrentCharacter.type === 'character' && $CurrentCharacter.realmId){