This commit is contained in:
Julia Gru
2023-05-31 08:55:56 +02:00
parent 44c83a5a5c
commit 2c00878c72
3 changed files with 18 additions and 6 deletions

View File

@@ -1,5 +1,6 @@
import type {
UmbDetailRepository,
UmbItemRepository,
UmbTreeDataSource,
UmbTreeRepository,
} from '@umbraco-cms/backoffice/repository';
@@ -9,6 +10,8 @@ import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-ap
import {
CreateTemplateRequestModel,
EntityTreeItemResponseModel,
ItemResponseModelBaseModel,
TemplateItemResponseModel,
TemplateResponseModel,
UpdateTemplateRequestModel,
} from '@umbraco-cms/backoffice/backend-api';
@@ -16,11 +19,13 @@ import { UmbTemplateTreeStore, UMB_TEMPLATE_TREE_STORE_CONTEXT_TOKEN } from './t
import { UmbTemplateStore, UMB_TEMPLATE_STORE_CONTEXT_TOKEN } from './template.store.js';
import { UmbTemplateTreeServerDataSource } from './sources/template.tree.server.data.js';
import { UmbTemplateDetailServerDataSource } from './sources/template.detail.server.data.js';
import { Observable } from 'rxjs';
export class UmbTemplateRepository
implements
UmbTreeRepository<EntityTreeItemResponseModel>,
UmbDetailRepository<CreateTemplateRequestModel, string, UpdateTemplateRequestModel, TemplateResponseModel>
UmbDetailRepository<CreateTemplateRequestModel, string, UpdateTemplateRequestModel, TemplateResponseModel>,
UmbItemRepository<TemplateItemResponseModel>
{
#init;
#host: UmbControllerHostElement;
@@ -146,7 +151,7 @@ export class UmbTemplateRepository
return { data, error };
}
async requestItem(id: string[]) {
async requestItems(id: string[]) {
await this.#init;
if (!id) {
@@ -156,6 +161,11 @@ export class UmbTemplateRepository
return { data, error };
}
async items(uniques: string[]) {
await this.#init;
return this.#store?.items(uniques);
}
async byId(id: string) {
if (!id) throw new Error('Key is missing');
await this.#init;

View File

@@ -38,6 +38,10 @@ export class UmbTemplateStore extends UmbStoreBase {
return this._data.getObservablePart((x) => x.find((y) => y.id === id));
}
items(uniques: string[]) {
return this._data.getObservablePart((x) => x.filter((y) => uniques.includes(y.id)));
}
/**
* Removes templates in the store with the given uniques
* @param {string[]} uniques

View File

@@ -93,7 +93,7 @@ export class UmbTemplateWorkspaceContext extends UmbWorkspaceContext<UmbTemplate
return null;
}
const { data } = await this.repository.requestItem([id]);
const { data } = await this.repository.requestItems([id]);
if (data) {
this.#masterTemplate.next(data[0]);
return data[0];
@@ -102,8 +102,6 @@ export class UmbTemplateWorkspaceContext extends UmbWorkspaceContext<UmbTemplate
}
public async save() {
console.log('save');
const template = this.#data.getValue();
const isNew = this.getIsNew();
@@ -115,7 +113,7 @@ export class UmbTemplateWorkspaceContext extends UmbWorkspaceContext<UmbTemplate
});
}
if (isNew && template?.id) {
if (template?.id) {
await this.repository.save(template.id, {
name: template.name,
content: template.content,