12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <script>
- import { v4 as uuidv4 } from 'uuid';
- import { toast } from 'svelte-sonner';
- import { goto } from '$app/navigation';
- import { models } from '$lib/stores';
- import { onMount, tick, getContext } from 'svelte';
- import { createNewModel, getModelById } from '$lib/apis/models';
- import { getModels } from '$lib/apis';
- import ModelEditor from '$lib/components/workspace/Models/ModelEditor.svelte';
- const i18n = getContext('i18n');
- const onSubmit = async (modelInfo) => {
- if ($models.find((m) => m.id === modelInfo.id)) {
- toast.error(
- `Error: A model with the ID '${modelInfo.id}' already exists. Please select a different ID to proceed.`
- );
- return;
- }
- if (modelInfo) {
- const res = await createNewModel(localStorage.token, {
- ...modelInfo,
- meta: {
- ...modelInfo.meta,
- profile_image_url: modelInfo.meta.profile_image_url ?? '/static/favicon.png',
- suggestion_prompts: modelInfo.meta.suggestion_prompts
- ? modelInfo.meta.suggestion_prompts.filter((prompt) => prompt.content !== '')
- : null
- },
- params: { ...modelInfo.params }
- });
- if (res) {
- await models.set(await getModels(localStorage.token));
- toast.success($i18n.t('Model created successfully!'));
- await goto('/workspace/models');
- }
- }
- };
- let model = null;
- onMount(async () => {
- window.addEventListener('message', async (event) => {
- if (
- !['https://openwebui.com', 'https://www.openwebui.com', 'http://localhost:5173'].includes(
- event.origin
- )
- )
- return;
- model = JSON.parse(event.data);
- });
- if (window.opener ?? false) {
- window.opener.postMessage('loaded', '*');
- }
- if (sessionStorage.model) {
- model = JSON.parse(sessionStorage.model);
- sessionStorage.removeItem('model');
- }
- });
- </script>
- {#key model}
- <ModelEditor {model} {onSubmit} />
- {/key}
|