adjust content data manager for base extension

This commit is contained in:
Niels Lyngsø
2024-09-26 15:57:52 +02:00
parent 4319e39e53
commit 03a9d2b8ff
2 changed files with 28 additions and 31 deletions

View File

@@ -1,7 +1,7 @@
import { UmbMergeContentVariantDataController } from '../controller/merge-content-variant-data.controller.js';
import type { UmbContentDetailModel } from '@umbraco-cms/backoffice/content';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { UmbObjectState, appendToFrozenArray, jsonStringComparison } from '@umbraco-cms/backoffice/observable-api';
import { appendToFrozenArray, jsonStringComparison } from '@umbraco-cms/backoffice/observable-api';
import { UmbVariantId, type UmbEntityVariantModel } from '@umbraco-cms/backoffice/variant';
import { UmbEntityWorkspaceDataManager, type UmbWorkspaceDataManager } from '@umbraco-cms/backoffice/workspace';
@@ -18,9 +18,6 @@ export class UmbContentWorkspaceDataManager<
//#repository;
#variantScaffold?: ModelVariantType;
#persisted = new UmbObjectState<ModelType | undefined>(undefined);
#current = new UmbObjectState<ModelType | undefined>(undefined);
#varies?: boolean;
//#variesByCulture?: boolean;
//#variesBySegment?: boolean;
@@ -33,7 +30,7 @@ export class UmbContentWorkspaceDataManager<
#updateLock = 0;
initiatePropertyValueChange() {
this.#updateLock++;
this.#current.mute();
this._current.mute();
// TODO: When ready enable this code will enable handling a finish automatically by this implementation 'using myState.initiatePropertyValueChange()' (Relies on TS support of Using) [NL]
/*return {
[Symbol.dispose]: this.finishPropertyValueChange,
@@ -45,7 +42,7 @@ export class UmbContentWorkspaceDataManager<
};
#triggerPropertyValueChanges() {
if (this.#updateLock === 0) {
this.#current.unmute();
this._current.unmute();
}
}
@@ -66,7 +63,7 @@ export class UmbContentWorkspaceDataManager<
}
updateVariantData(variantId: UmbVariantId, update?: Partial<ModelVariantType>) {
const currentData = this.#current.getValue();
const currentData = this.getCurrent();
if (!currentData) throw new Error('Data is missing');
if (!this.#variantScaffold) throw new Error('Variant scaffold data is missing');
if (this.#varies === true) {
@@ -84,7 +81,7 @@ export class UmbContentWorkspaceDataManager<
(x) => variantId.compare(x),
) as Array<ModelVariantType>;
// TODO: I have some trouble with TypeScript here, I does not look like me, but i had to give up. [NL]
this.#current.update({ variants: newVariants } as any);
this._current.update({ variants: newVariants } as any);
} else if (this.#varies === false) {
// TODO: Beware about segments, in this case we need to also consider segments, if its allowed to vary by segments.
const invariantVariantId = UmbVariantId.CreateInvariant();
@@ -99,7 +96,7 @@ export class UmbContentWorkspaceDataManager<
} as ModelVariantType,
];
// TODO: I have some trouble with TypeScript here, I does not look like me, but i had to give up. [NL]
this.#current.update({ variants: newVariants } as any);
this._current.update({ variants: newVariants } as any);
} else {
throw new Error('Varies by culture is missing');
}
@@ -117,7 +114,7 @@ export class UmbContentWorkspaceDataManager<
variantsToStore = [...selectedVariants, invariantVariantId];
}
const data = this.#current.getValue();
const data = this._current.getValue();
if (!data) throw new Error('Current data is missing');
if (!data.unique) throw new Error('Unique of current data is missing');
@@ -132,8 +129,8 @@ export class UmbContentWorkspaceDataManager<
}
getChangedVariants() {
const persisted = this.#persisted.getValue();
const current = this.#current.getValue();
const persisted = this.getPersisted();
const current = this.getCurrent();
if (!current) throw new Error('Current data is missing');
const changedVariants = current?.variants.map((variant) => {

View File

@@ -14,20 +14,20 @@ export class UmbEntityWorkspaceDataManager<ModelType extends UmbEntityModel>
extends UmbControllerBase
implements UmbWorkspaceDataManager<ModelType>
{
#persisted = new UmbObjectState<ModelType | undefined>(undefined);
#current = new UmbObjectState<ModelType | undefined>(undefined);
protected readonly _persisted = new UmbObjectState<ModelType | undefined>(undefined);
protected readonly _current = new UmbObjectState<ModelType | undefined>(undefined);
/**
* Observable of the persisted data
* @memberof UmbEntityWorkspaceDataManager
*/
public readonly persisted = this.#persisted.asObservable();
public readonly persisted = this._persisted.asObservable();
/**
* Observable of the current data
* @memberof UmbEntityWorkspaceDataManager
*/
public readonly current = this.#current.asObservable();
public readonly current = this._current.asObservable();
/**
* Gets persisted data
@@ -35,7 +35,7 @@ export class UmbEntityWorkspaceDataManager<ModelType extends UmbEntityModel>
* @memberof UmbSubmittableWorkspaceDataManager
*/
getPersisted() {
return this.#persisted.getValue();
return this._persisted.getValue();
}
/**
@@ -44,7 +44,7 @@ export class UmbEntityWorkspaceDataManager<ModelType extends UmbEntityModel>
* @memberof UmbSubmittableWorkspaceDataManager
*/
setPersisted(data: ModelType | undefined) {
this.#persisted.setValue(data);
this._persisted.setValue(data);
}
/**
@@ -53,7 +53,7 @@ export class UmbEntityWorkspaceDataManager<ModelType extends UmbEntityModel>
* @memberof UmbSubmittableWorkspaceDataManager
*/
updatePersisted(partialData: Partial<ModelType>) {
this.#persisted.update(partialData);
this._persisted.update(partialData);
}
/**
@@ -64,7 +64,7 @@ export class UmbEntityWorkspaceDataManager<ModelType extends UmbEntityModel>
* @memberof UmbEntityWorkspaceDataManager
*/
createObservablePartOfPersisted<ReturnType>(mappingFunction: MappingFunction<ModelType | undefined, ReturnType>) {
return this.#persisted.asObservablePart(mappingFunction);
return this._persisted.asObservablePart(mappingFunction);
}
/**
@@ -73,7 +73,7 @@ export class UmbEntityWorkspaceDataManager<ModelType extends UmbEntityModel>
* @memberof UmbSubmittableWorkspaceDataManager
*/
getCurrent() {
return this.#current.getValue();
return this._current.getValue();
}
/**
@@ -82,7 +82,7 @@ export class UmbEntityWorkspaceDataManager<ModelType extends UmbEntityModel>
* @memberof UmbSubmittableWorkspaceDataManager
*/
setCurrent(data: ModelType | undefined) {
this.#current.setValue(data);
this._current.setValue(data);
}
/**
@@ -91,7 +91,7 @@ export class UmbEntityWorkspaceDataManager<ModelType extends UmbEntityModel>
* @memberof UmbSubmittableWorkspaceDataManager
*/
updateCurrent(partialData: Partial<ModelType>) {
this.#current.update(partialData);
this._current.update(partialData);
}
/**
@@ -102,7 +102,7 @@ export class UmbEntityWorkspaceDataManager<ModelType extends UmbEntityModel>
* @memberof UmbEntityWorkspaceDataManager
*/
createObservablePartOfCurrent<ReturnType>(mappingFunction: MappingFunction<ModelType | undefined, ReturnType>) {
return this.#current.asObservablePart(mappingFunction);
return this._current.asObservablePart(mappingFunction);
}
/**
@@ -111,8 +111,8 @@ export class UmbEntityWorkspaceDataManager<ModelType extends UmbEntityModel>
* @memberof UmbSubmittableWorkspaceDataManager
*/
getHasUnpersistedChanges() {
const persisted = this.#persisted.getValue();
const current = this.#current.getValue();
const persisted = this._persisted.getValue();
const current = this._current.getValue();
return jsonStringComparison(persisted, current) === false;
}
@@ -121,7 +121,7 @@ export class UmbEntityWorkspaceDataManager<ModelType extends UmbEntityModel>
* @memberof UmbSubmittableWorkspaceDataManager
*/
resetCurrent() {
this.#current.setValue(this.#persisted.getValue());
this._current.setValue(this._persisted.getValue());
}
/**
@@ -129,13 +129,13 @@ export class UmbEntityWorkspaceDataManager<ModelType extends UmbEntityModel>
* @memberof UmbSubmittableWorkspaceDataManager
*/
clear() {
this.#persisted.setValue(undefined);
this.#current.setValue(undefined);
this._persisted.setValue(undefined);
this._current.setValue(undefined);
}
override destroy() {
this.#persisted.destroy();
this.#current.destroy();
this._persisted.destroy();
this._current.destroy();
super.destroy();
}
}