refac
This commit is contained in:
1 parent
883c7434fb
commit
ccbb3303f2
1 file changed
+28
-15
@@ -88,8 +88,8 @@
|
|||||||
let defaultModelIdSet = new Set<string>();
|
let defaultModelIdSet = new Set<string>();
|
||||||
let defaultPinnedModelIdSet = new Set<string>();
|
let defaultPinnedModelIdSet = new Set<string>();
|
||||||
|
|
||||||
let workspaceModels: ModelListItem[] = [];
|
|
||||||
let baseModels: ModelListItem[] = [];
|
let baseModels: ModelListItem[] = [];
|
||||||
|
let allModels: ModelListItem[] = [];
|
||||||
|
|
||||||
let filteredModels = [];
|
let filteredModels = [];
|
||||||
let selectedModelId = null;
|
let selectedModelId = null;
|
||||||
@@ -119,6 +119,9 @@
|
|||||||
|
|
||||||
const isSharedModel = (model) => (model?.access_grants ?? []).length > 0 && !isPublicModel(model);
|
const isSharedModel = (model) => (model?.access_grants ?? []).length > 0 && !isPublicModel(model);
|
||||||
|
|
||||||
|
const isPresetModel = (model: any) =>
|
||||||
|
!!(model?.preset || model?.base_model_id || model?.info?.base_model_id);
|
||||||
|
|
||||||
const modelAccessLabel = (model) => {
|
const modelAccessLabel = (model) => {
|
||||||
if (isPublicModel(model)) {
|
if (isPublicModel(model)) {
|
||||||
return $i18n.t('Public');
|
return $i18n.t('Public');
|
||||||
@@ -264,19 +267,19 @@
|
|||||||
selectedTag = '';
|
selectedTag = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
workspaceModels = await getBaseModels(localStorage.token, selectedTag);
|
baseModels = await getBaseModels(localStorage.token, selectedTag);
|
||||||
baseModels = await getModels(localStorage.token, null, true);
|
allModels = await getModels(localStorage.token);
|
||||||
const workspaceModelIds = new Set<string>(workspaceModels.map((wm: ModelListItem) => wm.id));
|
const baseModelIds = new Set<string>(baseModels.map((model: ModelListItem) => model.id));
|
||||||
|
|
||||||
models = baseModels
|
models = allModels
|
||||||
.filter((m: ModelListItem) => !selectedTag || workspaceModelIds.has(m.id))
|
.filter((m: ModelListItem) => !selectedTag || baseModelIds.has(m.id))
|
||||||
.map((m: ModelListItem) => {
|
.map((m: ModelListItem) => {
|
||||||
const workspaceModel = workspaceModels.find((wm: ModelListItem) => wm.id === m.id);
|
const baseModel = baseModels.find((model: ModelListItem) => model.id === m.id);
|
||||||
|
|
||||||
if (workspaceModel) {
|
if (baseModel) {
|
||||||
return {
|
return {
|
||||||
...m,
|
...m,
|
||||||
...workspaceModel
|
...baseModel
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
return {
|
return {
|
||||||
@@ -455,9 +458,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
const upsertModelHandler = async (model, overrides = {}, showToast = true) => {
|
const upsertModelHandler = async (model, overrides = {}, showToast = true) => {
|
||||||
model = { ...model, base_model_id: null, ...overrides };
|
model = { ...model, ...(isPresetModel(model) ? {} : { base_model_id: null }), ...overrides };
|
||||||
|
|
||||||
if (workspaceModels.find((m) => m.id === model.id)) {
|
if (baseModels.find((m: ModelListItem) => m.id === model.id) || isPresetModel(model)) {
|
||||||
const res = await updateModelById(localStorage.token, model.id, model).catch((error) => {
|
const res = await updateModelById(localStorage.token, model.id, model).catch((error) => {
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
@@ -486,7 +489,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
const toggleModelHandler = async (model) => {
|
const toggleModelHandler = async (model) => {
|
||||||
if (!Object.keys(model).includes('base_model_id')) {
|
if (!Object.keys(model).includes('base_model_id') && !isPresetModel(model)) {
|
||||||
await createNewModel(localStorage.token, {
|
await createNewModel(localStorage.token, {
|
||||||
id: model.id,
|
id: model.id,
|
||||||
name: model.name,
|
name: model.name,
|
||||||
@@ -589,10 +592,20 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
const getFullModel = async (model: any) =>
|
const getFullModel = async (model: any) =>
|
||||||
workspaceModels.some((workspaceModel) => workspaceModel.id === model.id)
|
baseModels.some((baseModel) => baseModel.id === model.id) || isPresetModel(model)
|
||||||
? ((await getModelById(localStorage.token, model.id).catch(() => null)) ?? model)
|
? ((await getModelById(localStorage.token, model.id).catch(() => null)) ?? model)
|
||||||
: model;
|
: model;
|
||||||
|
|
||||||
|
const openModelHandler = async (model: any) => {
|
||||||
|
if (isPresetModel(model)) {
|
||||||
|
showSettings.set(false);
|
||||||
|
await goto(`/workspace/models/edit?id=${encodeURIComponent(model.id)}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
selectedModelId = model.id;
|
||||||
|
};
|
||||||
|
|
||||||
const cloneHandler = async (model) => {
|
const cloneHandler = async (model) => {
|
||||||
model = await getFullModel(model);
|
model = await getFullModel(model);
|
||||||
sessionStorage.model = JSON.stringify({
|
sessionStorage.model = JSON.stringify({
|
||||||
@@ -933,7 +946,7 @@
|
|||||||
class="flex group/item gap-2.5 w-full min-w-0 flex-1 text-left cursor-pointer"
|
class="flex group/item gap-2.5 w-full min-w-0 flex-1 text-left cursor-pointer"
|
||||||
type="button"
|
type="button"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
selectedModelId = model.id;
|
openModelHandler(model);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<div class="self-center">
|
<div class="self-center">
|
||||||
@@ -1105,7 +1118,7 @@
|
|||||||
type="button"
|
type="button"
|
||||||
aria-label={$i18n.t('Edit')}
|
aria-label={$i18n.t('Edit')}
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
selectedModelId = model.id;
|
openModelHandler(model);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
|
|||||||
Reference in new issue
Block a user