Skip to content

Commit 486f1ba

Browse files
committed
2 parents 28cb2c1 + 2bfeb74 commit 486f1ba

File tree

115 files changed

+1195
-202
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

115 files changed

+1195
-202
lines changed

src/Umbraco.Web.UI.Client/package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Umbraco.Web.UI.Client/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@
258258
"typescript-eslint": "^8.39.1",
259259
"typescript-json-schema": "^0.65.1",
260260
"vite": "^7.1.2",
261-
"vite-plugin-static-copy": "^3.1.1",
261+
"vite-plugin-static-copy": "^3.1.2",
262262
"vite-tsconfig-paths": "^5.1.4",
263263
"web-component-analyzer": "^2.0.0"
264264
},

src/Umbraco.Web.UI.Client/src/packages/content/content/workspace/content-detail-workspace-base.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ export abstract class UmbContentDetailWorkspaceContextBase<
298298
this.variantOptions,
299299
(variantOptions) => {
300300
variantOptions.forEach((variantOption) => {
301-
const missingThis = this.#variantValidationContexts.filter((x) => {
301+
const missingThis = !this.#variantValidationContexts.some((x) => {
302302
const variantId = x.getVariantId();
303303
if (!variantId) return;
304304
return variantId.culture === variantOption.culture && variantId.segment === variantOption.segment;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
import { UmbManagementApiDataTypeDetailDataCacheInvalidationManager } from './repository/detail/server-data-source/data-type-detail.server.cache-invalidation.manager.js';
2+
import { UmbManagementApiDataTypeItemDataCacheInvalidationManager } from './repository/item/data-type-item.server.cache-invalidation.manager.js';
23
import type { UmbEntryPointOnInit, UmbEntryPointOnUnload } from '@umbraco-cms/backoffice/extension-api';
34

45
let detailDataCacheInvalidationManager: UmbManagementApiDataTypeDetailDataCacheInvalidationManager | undefined;
6+
let itemDataCacheInvalidationManager: UmbManagementApiDataTypeItemDataCacheInvalidationManager | undefined;
57

68
export const onInit: UmbEntryPointOnInit = (host) => {
79
detailDataCacheInvalidationManager = new UmbManagementApiDataTypeDetailDataCacheInvalidationManager(host);
10+
itemDataCacheInvalidationManager = new UmbManagementApiDataTypeItemDataCacheInvalidationManager(host);
811
};
912

1013
export const onUnload: UmbEntryPointOnUnload = () => {
1114
detailDataCacheInvalidationManager?.destroy();
15+
itemDataCacheInvalidationManager?.destroy();
1216
};

src/Umbraco.Web.UI.Client/src/packages/data-type/repository/detail/server-data-source/data-type-detail.server.request-manager.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,26 @@ import {
77
type DataTypeResponseModel,
88
type UpdateDataTypeRequestModel,
99
} from '@umbraco-cms/backoffice/external/backend-api';
10-
import { UmbManagementApiDetailDataRequestManager } from '@umbraco-cms/backoffice/management-api';
10+
import {
11+
UmbManagementApiDetailDataRequestManager,
12+
UmbManagementApiInflightRequestCache,
13+
} from '@umbraco-cms/backoffice/management-api';
1114

1215
export class UmbManagementApiDataTypeDetailDataRequestManager extends UmbManagementApiDetailDataRequestManager<
1316
DataTypeResponseModel,
1417
UpdateDataTypeRequestModel,
1518
CreateDataTypeRequestModel
1619
> {
20+
static #inflightRequestCache = new UmbManagementApiInflightRequestCache<DataTypeResponseModel>();
21+
1722
constructor(host: UmbControllerHost) {
1823
super(host, {
1924
create: (body: CreateDataTypeRequestModel) => DataTypeService.postDataType({ body }),
2025
read: (id: string) => DataTypeService.getDataTypeById({ path: { id } }),
2126
update: (id: string, body: UpdateDataTypeRequestModel) => DataTypeService.putDataTypeById({ path: { id }, body }),
2227
delete: (id: string) => DataTypeService.deleteDataTypeById({ path: { id } }),
2328
dataCache: dataTypeDetailCache,
29+
inflightRequestCache: UmbManagementApiDataTypeDetailDataRequestManager.#inflightRequestCache,
2430
});
2531
}
2632
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { dataTypeItemCache } from './data-type-item.server.cache.js';
2+
import { UmbManagementApiItemDataCacheInvalidationManager } from '@umbraco-cms/backoffice/management-api';
3+
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
4+
import type { DataTypeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api';
5+
6+
export class UmbManagementApiDataTypeItemDataCacheInvalidationManager extends UmbManagementApiItemDataCacheInvalidationManager<DataTypeItemResponseModel> {
7+
constructor(host: UmbControllerHost) {
8+
super(host, {
9+
dataCache: dataTypeItemCache,
10+
eventSources: ['Umbraco:CMS:DataType'],
11+
});
12+
}
13+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import type { DataTypeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api';
2+
import { UmbManagementApiItemDataCache } from '@umbraco-cms/backoffice/management-api';
3+
4+
const dataTypeItemCache = new UmbManagementApiItemDataCache<DataTypeItemResponseModel>();
5+
6+
export { dataTypeItemCache };

src/Umbraco.Web.UI.Client/src/packages/data-type/repository/item/data-type-item.server.data-source.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import { UMB_DATA_TYPE_ENTITY_TYPE } from '../../entity.js';
22
import type { UmbDataTypeItemModel } from './types.js';
3+
import { UmbManagementApiDataTypeItemDataRequestManager } from './data-type-item.server.request-manager.js';
34
import { UmbItemServerDataSourceBase } from '@umbraco-cms/backoffice/repository';
45
import type { DataTypeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api';
5-
import { DataTypeService } from '@umbraco-cms/backoffice/external/backend-api';
66
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
77
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
88
import type { ManifestPropertyEditorUi } from '@umbraco-cms/backoffice/property-editor';
9-
import { UmbItemDataApiGetRequestController } from '@umbraco-cms/backoffice/entity-item';
109

1110
let manifestPropertyEditorUis: Array<ManifestPropertyEditorUi> = [];
1211

@@ -19,12 +18,13 @@ export class UmbDataTypeItemServerDataSource extends UmbItemServerDataSourceBase
1918
DataTypeItemResponseModel,
2019
UmbDataTypeItemModel
2120
> {
21+
#itemRequestManager = new UmbManagementApiDataTypeItemDataRequestManager(this);
22+
2223
/**
2324
* Creates an instance of UmbDataTypeItemServerDataSource.
2425
* @param {UmbControllerHost} host - The controller host for this controller to be appended to
2526
* @memberof UmbDataTypeItemServerDataSource
2627
*/
27-
2828
constructor(host: UmbControllerHost) {
2929
super(host, {
3030
mapper,
@@ -41,13 +41,7 @@ export class UmbDataTypeItemServerDataSource extends UmbItemServerDataSourceBase
4141
override async getItems(uniques: Array<string>) {
4242
if (!uniques) throw new Error('Uniques are missing');
4343

44-
const itemRequestManager = new UmbItemDataApiGetRequestController(this, {
45-
// eslint-disable-next-line local-rules/no-direct-api-import
46-
api: (args) => DataTypeService.getItemDataType({ query: { id: args.uniques } }),
47-
uniques,
48-
});
49-
50-
const { data, error } = await itemRequestManager.request();
44+
const { data, error } = await this.#itemRequestManager.getItems(uniques);
5145

5246
return { data: this._getMappedItems(data), error };
5347
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/* eslint-disable local-rules/no-direct-api-import */
2+
import { dataTypeItemCache } from './data-type-item.server.cache.js';
3+
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
4+
import { DataTypeService, type DataTypeItemResponseModel } from '@umbraco-cms/backoffice/external/backend-api';
5+
import { UmbManagementApiItemDataRequestManager } from '@umbraco-cms/backoffice/management-api';
6+
7+
export class UmbManagementApiDataTypeItemDataRequestManager extends UmbManagementApiItemDataRequestManager<DataTypeItemResponseModel> {
8+
constructor(host: UmbControllerHost) {
9+
super(host, {
10+
getItems: (ids: Array<string>) => DataTypeService.getItemDataType({ query: { id: ids } }),
11+
dataCache: dataTypeItemCache,
12+
getUniqueMethod: (item) => item.id,
13+
});
14+
}
15+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { UmbManagementApiDictionaryItemDataCacheInvalidationManager } from './repository/item/dictionary-item.server.cache-invalidation.manager.js';
2+
import type { UmbEntryPointOnInit, UmbEntryPointOnUnload } from '@umbraco-cms/backoffice/extension-api';
3+
4+
let itemDataCacheInvalidationManager: UmbManagementApiDictionaryItemDataCacheInvalidationManager | undefined;
5+
6+
export const onInit: UmbEntryPointOnInit = (host) => {
7+
itemDataCacheInvalidationManager = new UmbManagementApiDictionaryItemDataCacheInvalidationManager(host);
8+
};
9+
10+
export const onUnload: UmbEntryPointOnUnload = () => {
11+
itemDataCacheInvalidationManager?.destroy();
12+
};

0 commit comments

Comments
 (0)