rename to data types store + add delete method

This commit is contained in:
Mads Rasmussen
2022-12-12 14:41:15 +01:00
parent 087098b933
commit 4a58192671
10 changed files with 29 additions and 38 deletions

View File

@@ -18,7 +18,7 @@ import { css, html, LitElement } from 'lit';
import { UmbModalService } from '../core/services/modal';
import { UmbNotificationService } from '../core/services/notification';
import { UmbDataTypeStore } from '../core/stores/data-type/data-type.store';
import { UmbDataTypesStore } from '../core/stores/data-types/data-types.store';
import { UmbDocumentTypeStore } from '../core/stores/document-type/document-type.store';
import { UmbMediaTypeStore } from '../core/stores/media-type/media-type.store';
import { UmbMemberTypeStore } from '../core/stores/member-type/member-type.store';
@@ -72,7 +72,7 @@ export class UmbBackofficeElement extends UmbContextConsumerMixin(UmbContextProv
this.provideContext('umbDocumentStore', new UmbDocumentStore());
this.provideContext('umbMediaStore', new UmbMediaStore());
this.provideContext('umbDataTypeStore', new UmbDataTypeStore());
this.provideContext('umbDataTypeStore', new UmbDataTypesStore());
this.provideContext('umbDocumentTypeStore', new UmbDocumentTypeStore());
this.provideContext('umbMediaTypeStore', new UmbMediaTypeStore());
this.provideContext('umbMemberTypeStore', new UmbMemberTypeStore());

View File

@@ -4,7 +4,7 @@ import { ifDefined } from 'lit-html/directives/if-defined.js';
import { customElement, property, state } from 'lit/decorators.js';
import { EMPTY, of, switchMap } from 'rxjs';
import { UmbDataTypeStore } from '../../../core/stores/data-type/data-type.store';
import { UmbDataTypesStore } from '../../../core/stores/data-types/data-types.store';
import { NodeProperty } from '../../../core/mocks/data/node.data';
import { UmbObserverMixin } from '@umbraco-cms/observable-api';
import type { ManifestTypes } from '@umbraco-cms/models';
@@ -43,7 +43,7 @@ export class UmbNodePropertyElement extends UmbContextConsumerMixin(UmbObserverM
@state()
private _dataTypeData?: any;
private _dataTypeStore?: UmbDataTypeStore;
private _dataTypeStore?: UmbDataTypesStore;
constructor() {
super();

View File

@@ -6,7 +6,7 @@ import type { UmbNotificationDefaultData } from '../../../../../core/services/no
import type { UmbNotificationService } from '../../../../../core/services/notification';
import { UmbDataTypeContext } from '../../data-type.context';
import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
import { UmbDataTypeStore } from 'src/core/stores/data-type/data-type.store';
import { UmbDataTypesStore } from 'src/core/stores/data-types/data-types.store';
@customElement('umb-editor-action-data-type-save')
export class UmbEditorActionDataTypeSaveElement extends UmbContextConsumerMixin(LitElement) {
@@ -15,7 +15,7 @@ export class UmbEditorActionDataTypeSaveElement extends UmbContextConsumerMixin(
@state()
private _saveButtonState?: UUIButtonState;
private _dataTypeStore?: UmbDataTypeStore;
private _dataTypeStore?: UmbDataTypesStore;
private _dataTypeContext?: UmbDataTypeContext;
private _notificationService?: UmbNotificationService;

View File

@@ -2,7 +2,7 @@ import { UUIInputElement, UUIInputEvent } from '@umbraco-ui/uui';
import { UUITextStyles } from '@umbraco-ui/uui-css/lib';
import { css, html, LitElement } from 'lit';
import { customElement, property, state } from 'lit/decorators.js';
import { UmbDataTypeStore } from '../../../core/stores/data-type/data-type.store';
import { UmbDataTypesStore } from '../../../core/stores/data-types/data-types.store';
import { UmbDataTypeContext } from './data-type.context';
import type { DataTypeDetails } from '@umbraco-cms/models';
import { UmbObserverMixin } from '@umbraco-cms/observable-api';
@@ -41,7 +41,7 @@ export class UmbEditorDataTypeElement extends UmbContextProviderMixin(
private _dataTypeName = '';
private _dataTypeContext?: UmbDataTypeContext;
private _dataTypeStore?: UmbDataTypeStore;
private _dataTypeStore?: UmbDataTypesStore;
constructor() {
super();

View File

@@ -2,7 +2,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css';
import { css, html } from 'lit';
import { customElement } from 'lit/decorators.js';
import { UmbModalService } from '../../../../../core/services/modal';
import { UmbDataTypeStore } from '../../../../../core/stores/data-type/data-type.store';
import { UmbDataTypesStore } from '../../../../../core/stores/data-types/data-types.store';
import UmbTreeItemActionElement from '../../../shared/tree-item-action.element';
import { UmbContextConsumerMixin } from '@umbraco-cms/context-api';
@@ -11,7 +11,7 @@ export default class UmbTreeActionDataTypeDeleteElement extends UmbContextConsum
static styles = [UUITextStyles, css``];
private _modalService?: UmbModalService;
private _dataTypeStore?: UmbDataTypeStore;
private _dataTypeStore?: UmbDataTypesStore;
connectedCallback(): void {
super.connectedCallback();
@@ -20,7 +20,7 @@ export default class UmbTreeActionDataTypeDeleteElement extends UmbContextConsum
this._modalService = modalService;
});
this.consumeContext('umbDataTypeStore', (dataTypeStore: UmbDataTypeStore) => {
this.consumeContext('umbDataTypeStore', (dataTypeStore: UmbDataTypesStore) => {
this._dataTypeStore = dataTypeStore;
});
}
@@ -35,7 +35,7 @@ export default class UmbTreeActionDataTypeDeleteElement extends UmbContextConsum
modalHandler?.onClose().then(({ confirmed }: any) => {
if (confirmed && this._treeContextMenuService && this._dataTypeStore && this._activeTreeItem) {
this._dataTypeStore?.trash([this._activeTreeItem.key]);
this._dataTypeStore?.deleteItems([this._activeTreeItem.key]);
this._treeContextMenuService.close();
}
});

View File

@@ -6,7 +6,7 @@ import { umbExtensionsRegistry } from '@umbraco-cms/extensions-registry';
import type { ManifestTreeItemAction, ManifestWithLoader } from '@umbraco-cms/models';
import '../shared/tree-navigator.element';
import { UmbDataTypeStore } from 'src/core/stores/data-type/data-type.store';
import { UmbDataTypesStore } from 'src/core/stores/data-types/data-types.store';
@customElement('umb-tree-data-types')
export class UmbTreeDataTypesElement extends UmbContextProviderMixin(UmbContextConsumerMixin(UmbTreeBase)) {
@@ -15,7 +15,7 @@ export class UmbTreeDataTypesElement extends UmbContextProviderMixin(UmbContextC
this._registerTreeItemActions();
this.consumeContext('umbDataTypeStore', (dataTypeStore: UmbDataTypeStore) => {
this.consumeContext('umbDataTypeStore', (dataTypeStore: UmbDataTypesStore) => {
this.provideContext('umbTreeStore', dataTypeStore);
});
}

View File

@@ -4,15 +4,6 @@ import type { DataTypeDetails } from '@umbraco-cms/models';
// TODO: add schema
export const handlers = [
rest.get('/umbraco/backoffice/data-type/:key', (req, res, ctx) => {
const key = req.params.key as string;
if (!key) return;
const dataType = umbDataTypeData.getByKey(key);
return res(ctx.status(200), ctx.json([dataType]));
}),
rest.get('/umbraco/backoffice/data-type/details/:key', (req, res, ctx) => {
const key = req.params.key as string;
if (!key) return;
@@ -31,12 +22,12 @@ export const handlers = [
return res(ctx.status(200), ctx.json(saved));
}),
rest.post<string[]>('/umbraco/backoffice/data-type/trash', async (req, res, ctx) => {
rest.post<string[]>('/umbraco/backoffice/data-type/delete', async (req, res, ctx) => {
console.warn('Please move to schema');
const keys = await req.json();
const trashed = umbDataTypeData.trash(keys);
umbDataTypeData.delete(keys);
return res(ctx.status(200), ctx.json(trashed));
return res(ctx.status(200));
}),
];

View File

@@ -5,16 +5,16 @@ import { ApiError, DataTypeResource, FolderTreeItem, ProblemDetails } from '@umb
/**
* @export
* @class UmbDataTypeStore
* @class UmbDataTypesStore
* @extends {UmbDataStoreBase<DataTypeDetails | FolderTreeItem>}
* @description - Data Store for Data Types
*/
export class UmbDataTypeStore extends UmbDataStoreBase<DataTypeDetails | FolderTreeItem> {
export class UmbDataTypesStore extends UmbDataStoreBase<DataTypeDetails | FolderTreeItem> {
/**
* @description - Request a Data Type by key. The Data Type is added to the store and is returned as an Observable.
* @param {string} key
* @return {*} {(Observable<DataTypeDetails | null>)}
* @memberof UmbDataTypeStore
* @memberof UmbDataTypesStore
*/
getByKey(key: string): Observable<DataTypeDetails | FolderTreeItem | null> {
// TODO: use Fetcher API.
@@ -31,7 +31,7 @@ export class UmbDataTypeStore extends UmbDataStoreBase<DataTypeDetails | FolderT
/**
* @description - Save a Data Type.
* @param {Array<DataTypeDetails>} dataTypes
* @memberof UmbDataTypeStore
* @memberof UmbDataTypesStore
* @return {*} {Promise<void>}
*/
async save(dataTypes: Array<DataTypeDetails>): Promise<void> {
@@ -52,21 +52,21 @@ export class UmbDataTypeStore extends UmbDataStoreBase<DataTypeDetails | FolderT
}
/**
* @description - Add a Data Type to the recycle bin.
* @description - Delete a Data Type.
* @param {string[]} keys
* @memberof UmbDataTypeStore
* @memberof UmbDataTypesStore
* @return {*} {Promise<void>}
*/
async trash(keys: string[]): Promise<void> {
const res = await fetch('/umbraco/backoffice/data-type/trash', {
async deleteItems(keys: string[]): Promise<void> {
await fetch('/umbraco/backoffice/data-type/delete', {
method: 'POST',
body: JSON.stringify(keys),
headers: {
'Content-Type': 'application/json',
},
});
const data = await res.json();
this.update(data);
this.deleteItems(keys);
}
getTreeRoot(): Observable<Array<FolderTreeItem>> {

View File

@@ -23,7 +23,7 @@ export class UmbDataStoreBase<T extends UmbDataStoreIdentifiers> implements UmbD
protected _items: BehaviorSubject<Array<T>> = new BehaviorSubject(<Array<T>>[]);
public readonly items: Observable<Array<T>> = this._items.asObservable();
public delete(deletedKeys: Array<string>): void {
public deleteItems(deletedKeys: Array<string>): void {
const remainingItems = this._items
.getValue()
.filter((item) => item.key && deletedKeys.includes(item.key) === false);

View File

@@ -102,7 +102,7 @@ export class UmbUserStore extends UmbDataStoreBase<UserDetails> {
},
});
const deletedKeys = await res.json();
this.delete(deletedKeys);
this.deleteItems(deletedKeys);
} catch (error) {
console.error('Delete Users failed', error);
}