update workspace contexts

This commit is contained in:
Mads Rasmussen
2023-02-21 12:40:06 +01:00
parent c7d9b5afb7
commit dabfde508b
15 changed files with 38 additions and 49 deletions

View File

@@ -8,7 +8,6 @@ export class UmbWorkspaceDocumentTypeContext
extends UmbWorkspaceContext
implements UmbWorkspaceEntityContextInterface<DocumentTypeModel | undefined>
{
isNew = false;
#manager = new UmbEntityWorkspaceManager(this._host, 'document-type', UMB_DOCUMENT_TYPE_STORE_CONTEXT_TOKEN);
public readonly data = this.#manager.state.asObservable();

View File

@@ -19,7 +19,6 @@ export class UmbDocumentWorkspaceContext
extends UmbWorkspaceContext
implements UmbWorkspaceEntityContextInterface<EntityType | undefined>
{
isNew = false;
#host: UmbControllerHostInterface;
#documentRepository: UmbDocumentRepository;
#documentTypeRepository: UmbDocumentTypeRepository;
@@ -44,7 +43,7 @@ export class UmbDocumentWorkspaceContext
async load(entityKey: string) {
const { data } = await this.#documentRepository.requestByKey(entityKey);
if (data) {
this.isNew = false;
this.setIsNew(false);
this.#data.next(data);
}
}
@@ -52,7 +51,7 @@ export class UmbDocumentWorkspaceContext
async createScaffold(parentKey: string | null) {
const { data } = await this.#documentRepository.createScaffold(parentKey);
if (!data) return;
this.isNew = true;
this.setIsNew(true);
this.#data.next(data);
}
@@ -180,7 +179,7 @@ export class UmbDocumentWorkspaceContext
await this.#documentRepository.save(this.#data.value);
}
// If it went well, then its not new anymore?.
this.isNew = false;
this.setIsNew(false);
}
async delete(key: string) {

View File

@@ -10,7 +10,6 @@ export class UmbWorkspaceMediaTypeContext
extends UmbWorkspaceContext
implements UmbWorkspaceEntityContextInterface<EntityType | undefined>
{
isNew = false;
#host: UmbControllerHostInterface;
#repo: UmbMediaTypeRepository;
@@ -54,12 +53,14 @@ export class UmbWorkspaceMediaTypeContext
async createScaffold() {
const { data } = await this.#repo.createScaffold();
if (!data) return;
this.setIsNew(true);
this.#data.next(data);
}
async save() {
if (!this.#data.value) return;
this.#repo.save(this.#data.value);
await this.#repo.save(this.#data.value);
this.setIsNew(false);
}
public destroy(): void {

View File

@@ -10,7 +10,6 @@ export class UmbMediaWorkspaceContext
extends UmbWorkspaceContext
implements UmbWorkspaceEntityContextInterface<EntityType | undefined>
{
isNew = false;
#host: UmbControllerHostInterface;
#detailRepository: UmbMediaRepository;
@@ -54,7 +53,7 @@ export class UmbMediaWorkspaceContext
async load(entityKey: string) {
const { data } = await this.#detailRepository.requestByKey(entityKey);
if (data) {
this.isNew = false;
this.setIsNew(false);
this.#data.next(data);
}
}
@@ -62,7 +61,7 @@ export class UmbMediaWorkspaceContext
async createScaffold(parentKey: string | null) {
const { data } = await this.#detailRepository.createScaffold(parentKey);
if (!data) return;
this.isNew = true;
this.setIsNew(true);
this.#data.next(data);
}
@@ -74,7 +73,7 @@ export class UmbMediaWorkspaceContext
await this.#detailRepository.save(this.#data.value);
}
// If it went well, then its not new anymore?.
this.isNew = false;
this.setIsNew(false);
}
async delete(key: string) {

View File

@@ -10,7 +10,6 @@ export class UmbWorkspaceMemberGroupContext
extends UmbWorkspaceContext
implements UmbWorkspaceEntityContextInterface<EntityType | undefined>
{
isNew = false;
#host: UmbControllerHostInterface;
#repo: UmbMemberGroupRepository;
@@ -55,12 +54,14 @@ export class UmbWorkspaceMemberGroupContext
async createScaffold() {
const { data } = await this.#repo.createScaffold();
if (!data) return;
this.setIsNew(true);
this.#data.next(data);
}
async save() {
if (!this.#data.value) return;
this.#repo.save(this.#data.value);
await this.#repo.save(this.#data.value);
this.setIsNew(true);
}
public destroy(): void {

View File

@@ -11,7 +11,6 @@ export class UmbWorkspaceMemberTypeContext
extends UmbWorkspaceContext
implements UmbWorkspaceEntityContextInterface<EntityType | undefined>
{
isNew = false;
#host: UmbControllerHostInterface;
#dataTypeRepository: UmbMemberTypeRepository;
@@ -27,7 +26,7 @@ export class UmbWorkspaceMemberTypeContext
async load(entityKey: string) {
const { data } = await this.#dataTypeRepository.requestByKey(entityKey);
if (data) {
this.isNew = false;
this.setIsNew(false);
this.#data.next(data);
}
}
@@ -35,7 +34,7 @@ export class UmbWorkspaceMemberTypeContext
async createScaffold() {
const { data } = await this.#dataTypeRepository.createScaffold();
if (!data) return;
this.isNew = true;
this.setIsNew(true);
this.#data.next(data);
}
@@ -67,7 +66,7 @@ export class UmbWorkspaceMemberTypeContext
await this.#dataTypeRepository.save(this.#data.value);
}
// If it went well, then its not new anymore?.
this.isNew = false;
this.setIsNew(false);
}
async delete(key: string) {

View File

@@ -8,7 +8,6 @@ export class UmbWorkspaceMemberContext
extends UmbWorkspaceContext
implements UmbWorkspaceEntityContextInterface<MemberDetails | undefined>
{
isNew = false;
#manager = new UmbEntityWorkspaceManager(this._host, 'member', UMB_MEMBER_DETAIL_STORE_CONTEXT_TOKEN);
public readonly data = this.#manager.state.asObservable();

View File

@@ -9,7 +9,6 @@ export class UmbDataTypeWorkspaceContext
extends UmbWorkspaceContext
implements UmbWorkspaceEntityContextInterface<DataTypeModel | undefined>
{
isNew = false;
#host: UmbControllerHostInterface;
#dataTypeRepository: UmbDataTypeRepository;
@@ -27,15 +26,15 @@ export class UmbDataTypeWorkspaceContext
async load(key: string) {
const { data } = await this.#dataTypeRepository.requestByKey(key);
if (data) {
this.isNew = false;
this.setIsNew(false);
this.#data.update(data);
}
}
async createScaffold(parentKey: string | null) {
this.isNew = true;
const { data } = await this.#dataTypeRepository.createScaffold(parentKey);
if (!data) return;
this.setIsNew(true);
this.#data.next(data);
}
@@ -82,7 +81,7 @@ export class UmbDataTypeWorkspaceContext
await this.#dataTypeRepository.save(this.#data.value);
}
// If it went well, then its not new anymore?.
this.isNew = false;
this.setIsNew(false);
}
async delete(key: string) {

View File

@@ -1,16 +1,13 @@
import { UmbLanguageRepository } from '../../repository/language.repository';
import { UmbWorkspaceContext } from '../../../../shared/components/workspace/workspace-context/workspace-context';
import type { LanguageModel } from '@umbraco-cms/backend-api';
import { DeepState, ObjectState } from '@umbraco-cms/observable-api';
import { ObjectState } from '@umbraco-cms/observable-api';
import { UmbControllerHostInterface } from '@umbraco-cms/controller';
export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext {
#host: UmbControllerHostInterface;
#languageRepository: UmbLanguageRepository;
#isNew = new DeepState<boolean>(false);
isNew = this.#isNew.asObservable();
#data = new ObjectState<LanguageModel | undefined>(undefined);
data = this.#data.asObservable();
@@ -23,7 +20,7 @@ export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext {
async load(isoCode: string) {
const { data } = await this.#languageRepository.requestByIsoCode(isoCode);
if (data) {
this.#isNew.next(false);
this.setIsNew(false);
this.#data.update(data);
}
}
@@ -31,7 +28,7 @@ export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext {
async createScaffold() {
const { data } = await this.#languageRepository.createScaffold();
if (!data) return;
this.#isNew.next(true);
this.setIsNew(true);
this.#data.update(data);
}
@@ -43,14 +40,6 @@ export class UmbLanguageWorkspaceContext extends UmbWorkspaceContext {
return 'language';
}
getIsNew() {
return this.#isNew.getValue();
}
setIsNew(isNew: boolean) {
this.#isNew.next(isNew);
}
setName(name: string) {
this.#data.update({ name });
}

View File

@@ -1,9 +1,7 @@
import { Observable } from 'rxjs';
export interface UmbWorkspaceContextInterface<T = unknown> {
//readonly data: Observable<T>;
//getUnique(): string | undefined;
isNew: Observable<T>;
isNew: Observable<boolean>;
getIsNew(): boolean;
setIsNew(value: boolean): void;
getEntityType(): string;

View File

@@ -1,5 +1,6 @@
import { UmbContextProviderController } from '@umbraco-cms/context-api';
import { UmbControllerHostInterface } from '@umbraco-cms/controller';
import { DeepState } from '@umbraco-cms/observable-api';
/*
@@ -9,8 +10,19 @@ If so we need to align on a interface that all of these implements. otherwise co
export abstract class UmbWorkspaceContext {
protected _host: UmbControllerHostInterface;
#isNew = new DeepState<boolean>(false);
isNew = this.#isNew.asObservable();
constructor(host: UmbControllerHostInterface) {
this._host = host;
new UmbContextProviderController(host, 'umbWorkspaceContext', this);
}
getIsNew() {
return this.#isNew.getValue();
}
setIsNew(isNew: boolean) {
this.#isNew.next(isNew);
}
}

View File

@@ -1,14 +1,9 @@
import { UmbWorkspaceContextInterface } from './workspace-context.interface';
export interface UmbWorkspaceEntityContextInterface<T = unknown> extends UmbWorkspaceContextInterface<T> {
//readonly name: Observable<string | undefined>;
getEntityKey(): string | undefined; // COnsider if this should go away now that we have getUnique()
getEntityType(): string;
getData(): T;
setPropertyValue(alias: string, value: unknown): void;
save(): Promise<void>;
}

View File

@@ -10,7 +10,6 @@ export class UmbWorkspaceDictionaryContext
extends UmbWorkspaceContext
implements UmbWorkspaceEntityContextInterface<EntityType | undefined>
{
isNew = false;
#host: UmbControllerHostInterface;
#repo: UmbDictionaryRepository;
@@ -64,6 +63,7 @@ export class UmbWorkspaceDictionaryContext
async load(entityKey: string) {
const { data } = await this.#repo.requestByKey(entityKey);
if (data) {
this.setIsNew(false);
this.#data.next(data);
}
}
@@ -71,12 +71,14 @@ export class UmbWorkspaceDictionaryContext
async createScaffold(parentKey: string | null) {
const { data } = await this.#repo.createScaffold(parentKey);
if (!data) return;
this.setIsNew(true);
this.#data.next(data);
}
async save() {
if (!this.#data.value) return;
this.#repo.save(this.#data.value);
await this.#repo.save(this.#data.value);
this.setIsNew(false);
}
public destroy(): void {

View File

@@ -8,8 +8,6 @@ export class UmbWorkspaceUserGroupContext
extends UmbWorkspaceContext
implements UmbWorkspaceEntityContextInterface<UserGroupDetails | undefined>
{
isNew = false;
#manager = new UmbEntityWorkspaceManager(this._host, 'user-group', UMB_USER_GROUP_STORE_CONTEXT_TOKEN);
public readonly data = this.#manager.state.asObservable();

View File

@@ -8,7 +8,6 @@ export class UmbWorkspaceUserContext
extends UmbWorkspaceContext
implements UmbWorkspaceEntityContextInterface<UserDetails | undefined>
{
isNew = false;
#manager = new UmbEntityWorkspaceManager(this._host, 'user', UMB_USER_STORE_CONTEXT_TOKEN);
public readonly data = this.#manager.state.asObservable();