update tree when folder is created
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { UmbDataTypeRepositoryBase } from '../data-type-repository-base.js';
|
||||
import { createTreeItem } from '../utils.js';
|
||||
import { dataTypeToTreeItemMapper } from '../utils.js';
|
||||
import { UmbDataTypeServerDataSource } from './data-type-detail.server.data-source.js';
|
||||
import type { UmbDetailRepository, UmbDataSource } from '@umbraco-cms/backoffice/repository';
|
||||
import { type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
@@ -60,7 +60,7 @@ export class UmbDataTypeDetailRepository
|
||||
|
||||
if (!error) {
|
||||
// TODO: We need to push a new item to the tree store to update the tree. How do we want to create the tree items?
|
||||
const treeItem = createTreeItem(dataType);
|
||||
const treeItem = dataTypeToTreeItemMapper(dataType);
|
||||
this._treeStore!.appendItems([treeItem]);
|
||||
//this.#detailStore?.append(dataType);
|
||||
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { UMB_DATA_TYPE_TREE_STORE_CONTEXT } from '../../tree/data-type.tree.store.js';
|
||||
import { folderToDataTypeTreeItemMapper } from '../utils.js';
|
||||
import { UmbDataTypeFolderServerDataSource } from './data-type-folder.server.data-source.js';
|
||||
import { UmbFolderRepositoryBase } from '@umbraco-cms/backoffice/repository';
|
||||
import { type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
|
||||
export class UmbDataTypeFolderRepository extends UmbFolderRepositoryBase {
|
||||
constructor(host: UmbControllerHost) {
|
||||
super(host, UmbDataTypeFolderServerDataSource, UMB_DATA_TYPE_TREE_STORE_CONTEXT);
|
||||
super(host, UmbDataTypeFolderServerDataSource, UMB_DATA_TYPE_TREE_STORE_CONTEXT, folderToDataTypeTreeItemMapper);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,30 +1,34 @@
|
||||
import { DATA_TYPE_ENTITY_TYPE } from '../entities.js';
|
||||
import {
|
||||
CreateDataTypeRequestModel,
|
||||
CreateFolderRequestModel,
|
||||
DataTypeTreeItemResponseModel,
|
||||
FolderTreeItemResponseModel,
|
||||
} from '@umbraco-cms/backoffice/backend-api';
|
||||
import { UmbCreateFolderModel } from '@umbraco-cms/backoffice/repository';
|
||||
|
||||
export const createTreeItem = (item: CreateDataTypeRequestModel): FolderTreeItemResponseModel => {
|
||||
export const dataTypeToTreeItemMapper = (item: CreateDataTypeRequestModel): DataTypeTreeItemResponseModel => {
|
||||
if (!item) throw new Error('item is null or undefined');
|
||||
if (!item.id) throw new Error('item.id is null or undefined');
|
||||
if (!item.id) throw new Error('Id is null or undefined');
|
||||
if (item.parentId === undefined) throw new Error('ParentId is undefined');
|
||||
|
||||
return {
|
||||
type: 'data-type',
|
||||
parentId: item.parentId,
|
||||
name: item.name,
|
||||
id: item.id,
|
||||
isFolder: false,
|
||||
isContainer: false,
|
||||
hasChildren: false,
|
||||
parentId: item.parentId,
|
||||
type: DATA_TYPE_ENTITY_TYPE,
|
||||
name: item.name,
|
||||
};
|
||||
};
|
||||
|
||||
export const createFolderTreeItem = (item: CreateFolderRequestModel): FolderTreeItemResponseModel => {
|
||||
if (!item) throw new Error('item is null or undefined');
|
||||
if (!item.id) throw new Error('item.id is null or undefined');
|
||||
export const folderToDataTypeTreeItemMapper = (folder: UmbCreateFolderModel): FolderTreeItemResponseModel => {
|
||||
if (!folder) throw new Error('Folder is required');
|
||||
if (!folder.unique) throw new Error('Folder unique required');
|
||||
if (folder.parentUnique === undefined) throw new Error('Folder parent unique is required');
|
||||
|
||||
return {
|
||||
...createTreeItem(item),
|
||||
id: folder.unique,
|
||||
parentId: folder.parentUnique,
|
||||
type: DATA_TYPE_ENTITY_TYPE,
|
||||
name: folder.name,
|
||||
isFolder: true,
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,24 +1,29 @@
|
||||
import { UmbRepositoryBase } from '../repository-base.js';
|
||||
import { type UmbFolderRepository } from './folder-repository.interface.js';
|
||||
import type { UmbFolderDataSource, UmbFolderDataSourceConstructor } from './folder-data-source.interface.js';
|
||||
import { UmbCreateFolderModel, UmbUpdateFolderModel } from './types.js';
|
||||
import { type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import { UmbTreeStore } from '@umbraco-cms/backoffice/tree';
|
||||
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
|
||||
import { UmbCreateFolderModel, UmbUpdateFolderModel } from './types.js';
|
||||
import { UmbId } from '@umbraco-cms/backoffice/id';
|
||||
|
||||
export type UmbFolderToTreeItemMapper<FolderTreeItemType> = (item: UmbCreateFolderModel) => FolderTreeItemType;
|
||||
|
||||
export class UmbFolderRepositoryBase extends UmbRepositoryBase implements UmbFolderRepository {
|
||||
protected _init: Promise<unknown>;
|
||||
protected _treeStore?: UmbTreeStore;
|
||||
#folderDataSource: UmbFolderDataSource;
|
||||
#folderToTreeItemMapper: UmbFolderToTreeItemMapper<any>;
|
||||
|
||||
constructor(
|
||||
host: UmbControllerHost,
|
||||
folderDataSource: UmbFolderDataSourceConstructor,
|
||||
treeStoreContextAlias: string | UmbContextToken<any, any>,
|
||||
treeStoreContextAlias: string | UmbContextToken<any>,
|
||||
folderToTreeItemMapper: UmbFolderToTreeItemMapper<any>,
|
||||
) {
|
||||
super(host);
|
||||
this.#folderDataSource = new folderDataSource(this);
|
||||
this.#folderToTreeItemMapper = folderToTreeItemMapper;
|
||||
|
||||
this._init = this.consumeContext(treeStoreContextAlias, (instance) => {
|
||||
this._treeStore = instance as UmbTreeStore;
|
||||
@@ -52,13 +57,10 @@ export class UmbFolderRepositoryBase extends UmbRepositoryBase implements UmbFol
|
||||
|
||||
const { error } = await this.#folderDataSource.insert(args);
|
||||
|
||||
/*
|
||||
if (!error) {
|
||||
// TODO: We need to push a new item to the tree store to update the tree. How do we want to create the tree items?
|
||||
const folderTreeItem = createFolderTreeItem(folderRequest);
|
||||
const folderTreeItem = this.#folderToTreeItemMapper(args);
|
||||
this._treeStore!.appendItems([folderTreeItem]);
|
||||
}
|
||||
*/
|
||||
|
||||
return { error };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user