diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/manifests.ts index c53eeb8882..bcab50cf10 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/entity-actions/manifests.ts @@ -2,9 +2,10 @@ import { UMB_PARTIAL_VIEW_ENTITY_TYPE, UMB_PARTIAL_VIEW_FOLDER_EMPTY_ENTITY_TYPE, UMB_PARTIAL_VIEW_FOLDER_ENTITY_TYPE, - UMB_PARTIAL_VIEW_REPOSITORY_ALIAS, UMB_PARTIAL_VIEW_ROOT_ENTITY_TYPE, } from '../entity.js'; +import { UMB_PARTIAL_VIEW_REPOSITORY_ALIAS } from '../repository/index.js'; + import { UmbCreateFromSnippetPartialViewAction } from './create/create-from-snippet.action.js'; import { UmbCreateEmptyPartialViewAction } from './create/create-empty.action.js'; import { diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/index.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/index.ts index 0041c7a010..a85fa28ae5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/index.ts @@ -1 +1,2 @@ -export * from './partial-view.repository.js'; +export { UmbPartialViewRepository } from './partial-view.repository.js'; +export { UMB_PARTIAL_VIEW_REPOSITORY_ALIAS } from './manifests.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/manifests.ts index 7ea95e29d9..d1e74a995b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/manifests.ts @@ -2,20 +2,20 @@ import { UmbPartialViewRepository } from './partial-view.repository.js'; import { UmbPartialViewStore } from './partial-view.store.js'; import { ManifestRepository, ManifestStore } from '@umbraco-cms/backoffice/extension-registry'; -export const PARTIAL_VIEW_REPOSITORY_ALIAS = 'Umb.Repository.PartialView'; +export const UMB_PARTIAL_VIEW_REPOSITORY_ALIAS = 'Umb.Repository.PartialView'; const repository: ManifestRepository = { type: 'repository', - alias: PARTIAL_VIEW_REPOSITORY_ALIAS, + alias: UMB_PARTIAL_VIEW_REPOSITORY_ALIAS, name: 'Partial View Repository', api: UmbPartialViewRepository, }; -export const PARTIAL_VIEW_STORE_ALIAS = 'Umb.Store.PartialView'; +export const UMB_PARTIAL_VIEW_STORE_ALIAS = 'Umb.Store.PartialView'; const store: ManifestStore = { type: 'store', - alias: PARTIAL_VIEW_STORE_ALIAS, + alias: UMB_PARTIAL_VIEW_STORE_ALIAS, name: 'Partial View Store', api: UmbPartialViewStore, }; diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/partial-view.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/partial-view.repository.ts index ba9d249e7d..79559712f9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/partial-view.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/partial-view.repository.ts @@ -1,5 +1,5 @@ +import { UmbPartialViewTreeRepository } from '../tree/index.js'; import { UmbPartialViewDetailServerDataSource } from './sources/partial-view-detail.server.data-source.js'; -import { UmbPartialViewTreeStore, UMB_PARTIAL_VIEW_TREE_STORE_CONTEXT_TOKEN } from './partial-views.tree.store.js'; import { PartialViewGetFolderResponse, UmbPartialViewFolderServerDataSource, @@ -39,22 +39,17 @@ export class UmbPartialViewRepository UmbFolderRepository, UmbApi { - #init; - #detailDataSource: UmbPartialViewDetailServerDataSource; #folderDataSource: UmbPartialViewFolderServerDataSource; - #treeStore?: UmbPartialViewTreeStore; + // TODO: temp solution until it is automated + #treeRepository = new UmbPartialViewTreeRepository(this); constructor(host: UmbControllerHostElement) { super(host); this.#detailDataSource = new UmbPartialViewDetailServerDataSource(this); this.#folderDataSource = new UmbPartialViewFolderServerDataSource(this); - - this.#init = this.consumeContext(UMB_PARTIAL_VIEW_TREE_STORE_CONTEXT_TOKEN, (instance) => { - this.#treeStore = instance; - }).asPromise(); } //#region FOLDER @@ -67,23 +62,22 @@ export class UmbPartialViewRepository }; return Promise.resolve({ data, error: undefined }); } + async createFolder( requestBody: CreateFolderRequestModel, ): Promise<{ data?: string | undefined; error?: ProblemDetails | undefined }> { - await this.#init; const req = { parentPath: requestBody.parentId, name: requestBody.name, }; const promise = this.#folderDataSource.create(req); await promise; - this.requestTreeItemsOf(requestBody.parentId ? requestBody.parentId : null); + this.#treeRepository.requestTreeItemsOf(requestBody.parentId ? requestBody.parentId : null); return promise; } async requestFolder( unique: string, ): Promise<{ data?: PartialViewGetFolderResponse | undefined; error?: ProblemDetails | undefined }> { - await this.#init; return this.#folderDataSource.read(unique); } updateFolder( @@ -93,11 +87,10 @@ export class UmbPartialViewRepository throw new Error('Method not implemented.'); } async deleteFolder(path: string): Promise<{ error?: ProblemDetails | undefined }> { - await this.#init; const { data } = await this.requestFolder(path); const promise = this.#folderDataSource.delete(path); await promise; - this.requestTreeItemsOf(data?.parentPath ? data?.parentPath : null); + this.#treeRepository.requestTreeItemsOf(data?.parentPath ? data?.parentPath : null); return promise; } //#endregion @@ -105,7 +98,6 @@ export class UmbPartialViewRepository //#region DETAILS async requestByKey(path: string) { if (!path) throw new Error('Path is missing'); - await this.#init; const { data, error } = await this.#detailDataSource.read(path); return { data, error }; } @@ -113,6 +105,7 @@ export class UmbPartialViewRepository requestById(id: string): Promise> { throw new Error('Method not implemented.'); } + byId(id: string): Promise> { throw new Error('Method not implemented.'); } @@ -120,19 +113,22 @@ export class UmbPartialViewRepository createScaffold(parentId: string | null, preset: string): Promise> { return this.#detailDataSource.createScaffold(parentId, preset); } + async create(data: CreatePartialViewRequestModel): Promise> { const promise = this.#detailDataSource.create(data); await promise; - this.requestTreeItemsOf(data.parentPath ? data.parentPath : null); + this.#treeRepository.requestTreeItemsOf(data.parentPath ? data.parentPath : null); return promise; } + save(id: string, requestBody: UpdatePartialViewRequestModel): Promise { return this.#detailDataSource.update(id, requestBody); } + async delete(id: string): Promise { const promise = this.#detailDataSource.delete(id); const parentPath = id.substring(0, id.lastIndexOf('/')); - this.requestTreeItemsOf(parentPath ? parentPath : null); + this.#treeRepository.requestTreeItemsOf(parentPath ? parentPath : null); return promise; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/sources/partial-view-detail.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/sources/partial-view-detail.server.data-source.ts index bb3e40267f..c771180466 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/sources/partial-view-detail.server.data-source.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/repository/sources/partial-view-detail.server.data-source.ts @@ -1,4 +1,4 @@ -import { PartialViewDetails } from '../../config.js'; +import { UmbPartialViewDetailModel } from '../../types.js'; import { CreatePartialViewRequestModel, PagedSnippetItemResponseModel, @@ -35,7 +35,10 @@ export class UmbPartialViewDetailServerDataSource * @return {*} {Promise>} * @memberof UmbPartialViewDetailServerDataSource */ - createScaffold(parentId: string | null = null, preset: string): Promise> { + createScaffold( + parentId: string | null = null, + preset: string, + ): Promise> { return tryExecuteAndNotify(this.#host, PartialViewResource.getPartialViewSnippetByName({ name: preset })); } /** diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/partial-view-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/partial-view-workspace.context.ts index c0abd5b132..d2e032cf2e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/partial-view-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/partial-views/workspace/partial-view-workspace.context.ts @@ -42,7 +42,7 @@ export class UmbPartialViewWorkspaceContext return Promise.resolve(); } - #data = new UmbDeepState(undefined); + #data = new UmbDeepState(undefined); data = this.#data.asObservable(); name = this.#data.asObservablePart((data) => data?.name); content = this.#data.asObservablePart((data) => data?.content); diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/script.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/script.repository.ts index fcac8a1af8..d90aad41b2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/script.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/scripts/repository/script.repository.ts @@ -1,4 +1,4 @@ -import { UMB_SCRIPT_TREE_STORE_CONTEXT, UmbScriptTreeStore } from '../tree/index.js'; +import { UmbScriptTreeRepository } from '../tree/index.js'; import { UmbScriptServerDataSource } from './sources/script-detail.server.data.js'; import { ScriptGetFolderResponse, UmbScriptFolderServerDataSource } from './sources/script-folder.server.data.js'; import { @@ -29,22 +29,17 @@ export class UmbScriptRepository UmbFolderRepository, UmbApi { - #init; - #detailDataSource: UmbScriptServerDataSource; #folderDataSource: UmbScriptFolderServerDataSource; - #treeStore?: UmbScriptTreeStore; + // TODO: temp solution until it is automated + #treeRepository = new UmbScriptTreeRepository(this); constructor(host: UmbControllerHost) { super(host); this.#detailDataSource = new UmbScriptServerDataSource(this); this.#folderDataSource = new UmbScriptFolderServerDataSource(this); - - this.#init = this.consumeContext(UMB_SCRIPT_TREE_STORE_CONTEXT, (instance) => { - this.#treeStore = instance; - }).asPromise(); } //#region FOLDER @@ -60,20 +55,18 @@ export class UmbScriptRepository async createFolder( requestBody: CreateFolderRequestModel, ): Promise<{ data?: string | undefined; error?: ProblemDetails | undefined }> { - await this.#init; const req = { parentPath: requestBody.parentId, name: requestBody.name, }; const promise = this.#folderDataSource.create(req); await promise; - //this.requestTreeItemsOf(requestBody.parentId ? requestBody.parentId : null); + this.#treeRepository.requestTreeItemsOf(requestBody.parentId ? requestBody.parentId : null); return promise; } async requestFolder( unique: string, ): Promise<{ data?: ScriptGetFolderResponse | undefined; error?: ProblemDetails | undefined }> { - await this.#init; return this.#folderDataSource.read(unique); } updateFolder( @@ -83,11 +76,10 @@ export class UmbScriptRepository throw new Error('Method not implemented.'); } async deleteFolder(path: string): Promise<{ error?: ProblemDetails | undefined }> { - await this.#init; const { data } = await this.requestFolder(path); const promise = this.#folderDataSource.delete(path); await promise; - //this.requestTreeItemsOf(data?.parentPath ? data?.parentPath : null); + this.#treeRepository.requestTreeItemsOf(data?.parentPath ? data?.parentPath : null); return promise; } //#endregion @@ -95,7 +87,6 @@ export class UmbScriptRepository //#region DETAILS async requestByKey(path: string) { if (!path) throw new Error('Path is missing'); - await this.#init; const { data, error } = await this.#detailDataSource.read(path); return { data, error }; } @@ -113,7 +104,7 @@ export class UmbScriptRepository async create(data: CreateScriptRequestModel): Promise> { const promise = this.#detailDataSource.create(data); await promise; - //this.requestTreeItemsOf(data.parentPath ? data.parentPath : null); + this.#treeRepository.requestTreeItemsOf(data.parentPath ? data.parentPath : null); return promise; } save(id: string, requestBody: UpdateScriptRequestModel): Promise { @@ -122,7 +113,7 @@ export class UmbScriptRepository async delete(id: string): Promise { const promise = this.#detailDataSource.delete(id); const parentPath = id.substring(0, id.lastIndexOf('/')); - //this.requestTreeItemsOf(parentPath ? parentPath : null); + this.#treeRepository.requestTreeItemsOf(parentPath ? parentPath : null); return promise; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/stylesheet.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/stylesheet.repository.ts index 4d04bb73a6..458bd18fbc 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/stylesheet.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/stylesheets/repository/stylesheet.repository.ts @@ -1,4 +1,5 @@ import { StylesheetDetails } from '../index.js'; +import { UmbStylesheetTreeRepository } from '../tree/index.js'; import { UmbStylesheetServerDataSource } from './sources/stylesheet.server.data.js'; import { StylesheetGetFolderResponse, @@ -12,14 +13,12 @@ import { UmbDetailRepository, UmbFolderRepository, } from '@umbraco-cms/backoffice/repository'; -import { UmbTreeRepository } from '@umbraco-cms/backoffice/tree'; import { CreateFolderRequestModel, CreateStylesheetRequestModel, CreateTextFileViewModelBaseModel, ExtractRichTextStylesheetRulesRequestModel, ExtractRichTextStylesheetRulesResponseModel, - FileSystemTreeItemPresentationModel, FolderModelBaseModel, FolderResponseModel, InterpolateRichTextStylesheetRequestModel, @@ -43,6 +42,9 @@ export class UmbStylesheetRepository #dataSource; #folderDataSource; + // TODO: temp solution until it is automated + #treeRepository = new UmbStylesheetTreeRepository(this); + constructor(host: UmbControllerHostElement) { super(host); @@ -72,7 +74,7 @@ export class UmbStylesheetRepository }; const promise = this.#folderDataSource.create(req); await promise; - //this.requestTreeItemsOf(folderRequest.parentId ? folderRequest.parentId : null); + this.#treeRepository.requestTreeItemsOf(folderRequest.parentId ? folderRequest.parentId : null); return promise; } @@ -93,7 +95,7 @@ export class UmbStylesheetRepository const { data } = await this.requestFolder(path); const promise = this.#folderDataSource.delete(path); await promise; - //this.requestTreeItemsOf(data?.parentPath ? data?.parentPath : null); + this.#treeRepository.requestTreeItemsOf(data?.parentPath ? data?.parentPath : null); return promise; } @@ -120,7 +122,7 @@ export class UmbStylesheetRepository async create(data: CreateTextFileViewModelBaseModel): Promise> { const promise = this.#dataSource.create(data); await promise; - //this.requestTreeItemsOf(data.parentPath ? data.parentPath : null); + this.#treeRepository.requestTreeItemsOf(data.parentPath ? data.parentPath : null); return promise; } @@ -131,7 +133,7 @@ export class UmbStylesheetRepository delete(id: string): Promise { const promise = this.#dataSource.delete(id); const parentPath = id.substring(0, id.lastIndexOf('/')); - //this.requestTreeItemsOf(parentPath ? parentPath : null); + this.#treeRepository.requestTreeItemsOf(parentPath ? parentPath : null); return promise; }