diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/sources/user-group-collection.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/sources/user-group-collection.server.data.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/sources/user-group.server.data.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/sources/user-group.server.data.ts new file mode 100644 index 0000000000..a4615fdaa1 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/sources/user-group.server.data.ts @@ -0,0 +1,50 @@ +import { UmbUserGroupDetailDataSource } from '../../types'; +import { DataSourceResponse } from '@umbraco-cms/backoffice/repository'; +import { + CreateUserRequestModel, + UpdateUserRequestModel, + UserPresentationBaseModel, + UserResource, + InviteUserRequestModel, + EnableUserRequestModel, + DisableUserRequestModel, + UserGroupBaseModel, + UserGroupResource, +} from '@umbraco-cms/backoffice/backend-api'; +import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; + +/** + * A data source for the User that fetches data from the server + * @export + * @class UmbUserGroupServerDataSource + * @implements {RepositoryDetailDataSource} + */ +export class UmbUserGroupServerDataSource implements UmbUserGroupDetailDataSource { + #host: UmbControllerHostElement; + + /** + * Creates an instance of UmbUserGroupServerDataSource. + * @param {UmbControllerHostElement} host + * @memberof UmbUserGroupServerDataSource + */ + constructor(host: UmbControllerHostElement) { + this.#host = host; + } + createScaffold(parentId: string | null): Promise> { + throw new Error('Method not implemented.'); + } + get(id: string): Promise> { + if (!id) throw new Error('Id is missing'); + return tryExecuteAndNotify(this.#host, UserGroupResource.getUserGroupById({ id })); + } + insert(data: UserGroupBaseModel): Promise> { + throw new Error('Method not implemented.'); + } + update(unique: string, data: UserGroupBaseModel): Promise> { + throw new Error('Method not implemented.'); + } + delete(unique: string): Promise> { + throw new Error('Method not implemented.'); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.repository.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.repository.ts index 2871c3444a..72fce1ef69 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/repository/user-group.repository.ts @@ -1,4 +1,6 @@ import { Observable } from 'rxjs'; +import { UmbUserGroupDetailDataSource } from '../types'; +import { UmbUserGroupServerDataSource } from './sources/user-group.server.data'; import { UserGroupBaseModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller'; import { @@ -12,16 +14,27 @@ import { export class UmbUserGroupRepository implements UmbDetailRepository, UmbCollectionRepository { #host: UmbControllerHostElement; + #detailSource: UmbUserGroupDetailDataSource; + constructor(host: UmbControllerHostElement) { this.#host = host; + this.#detailSource = new UmbUserGroupServerDataSource(this.#host); } createScaffold(parentId: string | null): Promise> { throw new Error('Method not implemented.'); } - requestById(id: string): Promise> { - throw new Error('Method not implemented.'); + + async requestById(id: string) { + if (!id) throw new Error('Id is missing'); + + const { data, error } = await this.#detailSource.get(id); + + //TODO Put it in the store + + return { data, error }; } + byId(id: string): Promise> { throw new Error('Method not implemented.'); } diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/types.ts b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/types.ts index fea9946242..67f2c6ce69 100644 --- a/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/types.ts +++ b/src/Umbraco.Web.UI.Client/src/backoffice/users/user-groups/types.ts @@ -1,4 +1,10 @@ +import { + SaveUserGroupRequestModel, + UpdateUserGroupRequestModel, + UserGroupBaseModel, +} from '@umbraco-cms/backoffice/backend-api'; import type { UmbEntityBase } from '@umbraco-cms/backoffice/models'; +import { UmbDataSource } from '@umbraco-cms/backoffice/repository'; export interface UserGroupEntity extends UmbEntityBase { type: 'user-group'; @@ -11,3 +17,10 @@ export interface UserGroupDetails extends UserGroupEntity { mediaStartNode?: string; permissions: Array; } + +export type UmbUserGroupDetailDataSource = UmbDataSource< + SaveUserGroupRequestModel, + void, + UpdateUserGroupRequestModel, + UserGroupBaseModel +>;