diff --git a/src/Umbraco.Web.UI.Client/src/packages/users/user-groups/repository/collection/user-group-collection.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/users/user-groups/repository/collection/user-group-collection.repository.ts new file mode 100644 index 0000000000..5d96360c97 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/users/user-groups/repository/collection/user-group-collection.repository.ts @@ -0,0 +1,35 @@ +import { UmbUserGroupCollectionFilterModel } from '../../types.js'; +import { UmbUserGroupCollectionServerDataSource } from '../sources/user-group-collection.server.data.js'; +import { UMB_USER_GROUP_STORE_CONTEXT_TOKEN, UmbUserGroupStore } from '../user-group.store.js'; +import { UserGroupResponseModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbCollectionDataSource, UmbCollectionRepository } from '@umbraco-cms/backoffice/repository'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import type { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; + +// TODO: implement +export class UmbUserGroupRepository implements UmbCollectionRepository { + #host: UmbControllerHostElement; + #init; + + #detailStore?: UmbUserGroupStore; + #collectionSource: UmbCollectionDataSource; + + constructor(host: UmbControllerHostElement) { + this.#host = host; + this.#collectionSource = new UmbUserGroupCollectionServerDataSource(this.#host); + + this.#init = Promise.all([ + new UmbContextConsumerController(this.#host, UMB_USER_GROUP_STORE_CONTEXT_TOKEN, (instance) => { + this.#detailStore = instance; + }).asPromise(), + ]); + } + + async requestCollection(filter: UmbUserGroupCollectionFilterModel = { skip: 0, take: 100 }) { + await this.#init; + + const { data, error } = await this.#collectionSource.filterCollection(filter); + + return { data, error, asObservable: () => this.#detailStore!.all() }; + } +}