user contexts
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
import { UmbWorkspaceNodeContext } from "../shared/workspace-context/workspace-node.context";
|
||||
import type { UmbUserGroupStore, UmbUserGroupStoreItemType } from "@umbraco-cms/stores/user/user-group.store";
|
||||
|
||||
const DefaultDataTypeData = ({
|
||||
key: '',
|
||||
name: '',
|
||||
icon: '',
|
||||
type: 'user-group',
|
||||
hasChildren: false,
|
||||
parentKey: '',
|
||||
sections: [],
|
||||
permissions: [],
|
||||
users: [],
|
||||
}) as UmbUserGroupStoreItemType;
|
||||
|
||||
export class UmbWorkspaceDataTypeContext extends UmbWorkspaceNodeContext<UmbUserGroupStoreItemType, UmbUserGroupStore> {
|
||||
|
||||
constructor(target:HTMLElement, entityKey: string) {
|
||||
super(target, DefaultDataTypeData, 'umbUserStore', entityKey);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import { UmbWorkspaceNodeContext } from "../shared/workspace-context/workspace-node.context";
|
||||
import type { UmbUserStore, UmbUserStoreItemType } from "@umbraco-cms/stores/user/user.store";
|
||||
|
||||
|
||||
const DefaultDataTypeData = ({
|
||||
key: '',
|
||||
name: '',
|
||||
icon: '',
|
||||
type: 'user',
|
||||
hasChildren: false,
|
||||
parentKey: '',
|
||||
email: '',
|
||||
language: '',
|
||||
status: 'enabled',
|
||||
updateDate: '8/27/2022',
|
||||
createDate: '9/19/2022',
|
||||
failedLoginAttempts: 0,
|
||||
userGroups: [],
|
||||
contentStartNodes: [],
|
||||
mediaStartNodes: [],
|
||||
}) as UmbUserStoreItemType;
|
||||
|
||||
export class UmbWorkspaceDataTypeContext extends UmbWorkspaceNodeContext<UmbUserStoreItemType, UmbUserStore> {
|
||||
|
||||
constructor(target:HTMLElement, entityKey: string) {
|
||||
super(target, DefaultDataTypeData, 'umbUserStore', entityKey);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,14 +2,17 @@ import { map, Observable } from 'rxjs';
|
||||
import { UmbDataStoreBase } from '../store';
|
||||
import type { UserGroupDetails, UserGroupEntity } from '@umbraco-cms/models';
|
||||
|
||||
// TODO: get rid of this type addition & { ... }:
|
||||
export type UmbUserGroupStoreItemType = UserGroupDetails & { users?: Array<string> };
|
||||
|
||||
/**
|
||||
* @export
|
||||
* @class UmbUserGroupStore
|
||||
* @extends {UmbDataStoreBase<UserGroupEntity>}
|
||||
* @description - Data Store for Users
|
||||
*/
|
||||
export class UmbUserGroupStore extends UmbDataStoreBase<UserGroupDetails> {
|
||||
getAll(): Observable<Array<UserGroupDetails>> {
|
||||
export class UmbUserGroupStore extends UmbDataStoreBase<UmbUserGroupStoreItemType> {
|
||||
getAll(): Observable<Array<UmbUserGroupStoreItemType>> {
|
||||
// TODO: use Fetcher API.
|
||||
// TODO: only fetch if the data type is not in the store?
|
||||
fetch(`/umbraco/backoffice/user-groups/list/items`)
|
||||
@@ -21,7 +24,7 @@ export class UmbUserGroupStore extends UmbDataStoreBase<UserGroupDetails> {
|
||||
return this.items;
|
||||
}
|
||||
|
||||
getByKey(key: string): Observable<UserGroupDetails | null> {
|
||||
getByKey(key: string): Observable<UmbUserGroupStoreItemType | null> {
|
||||
// TODO: use Fetcher API.
|
||||
// TODO: only fetch if the data type is not in the store?
|
||||
fetch(`/umbraco/backoffice/user-groups/details/${key}`)
|
||||
@@ -32,8 +35,8 @@ export class UmbUserGroupStore extends UmbDataStoreBase<UserGroupDetails> {
|
||||
|
||||
return this.items.pipe(
|
||||
map(
|
||||
(userGroups: Array<UserGroupDetails>) =>
|
||||
userGroups.find((userGroup: UserGroupDetails) => userGroup.key === key) || null
|
||||
(userGroups: Array<UmbUserGroupStoreItemType>) =>
|
||||
userGroups.find((userGroup: UmbUserGroupStoreItemType) => userGroup.key === key) || null
|
||||
)
|
||||
);
|
||||
}
|
||||
@@ -47,11 +50,11 @@ export class UmbUserGroupStore extends UmbDataStoreBase<UserGroupDetails> {
|
||||
});
|
||||
|
||||
return this.items.pipe(
|
||||
map((items: Array<UserGroupDetails>) => items.filter((node: UserGroupDetails) => keys.includes(node.key)))
|
||||
map((items: Array<UmbUserGroupStoreItemType>) => items.filter((node: UmbUserGroupStoreItemType) => keys.includes(node.key)))
|
||||
);
|
||||
}
|
||||
|
||||
async save(userGroups: Array<UserGroupDetails>): Promise<void> {
|
||||
async save(userGroups: Array<UmbUserGroupStoreItemType>): Promise<void> {
|
||||
// TODO: use Fetcher API.
|
||||
try {
|
||||
const res = await fetch('/umbraco/backoffice/user-groups/save', {
|
||||
|
||||
@@ -2,6 +2,7 @@ import { BehaviorSubject, map, Observable } from 'rxjs';
|
||||
import { UmbDataStoreBase } from '../store';
|
||||
import type { UserDetails } from '@umbraco-cms/models';
|
||||
|
||||
export type UmbUserStoreItemType = UserDetails;
|
||||
|
||||
/**
|
||||
* @export
|
||||
@@ -9,11 +10,11 @@ import type { UserDetails } from '@umbraco-cms/models';
|
||||
* @extends {UmbDataStoreBase<UserDetails>}
|
||||
* @description - Data Store for Users
|
||||
*/
|
||||
export class UmbUserStore extends UmbDataStoreBase<UserDetails> {
|
||||
export class UmbUserStore extends UmbDataStoreBase<UmbUserStoreItemType> {
|
||||
private _totalUsers: BehaviorSubject<number> = new BehaviorSubject(0);
|
||||
public readonly totalUsers: Observable<number> = this._totalUsers.asObservable();
|
||||
|
||||
getAll(): Observable<Array<UserDetails>> {
|
||||
getAll(): Observable<Array<UmbUserStoreItemType>> {
|
||||
// TODO: use Fetcher API.
|
||||
// TODO: only fetch if the data type is not in the store?
|
||||
fetch(`/umbraco/backoffice/users/list/items`)
|
||||
@@ -32,7 +33,7 @@ export class UmbUserStore extends UmbDataStoreBase<UserDetails> {
|
||||
* @return {*} {(Observable<DataTypeDetails | null>)}
|
||||
* @memberof UmbDataTypeStore
|
||||
*/
|
||||
getByKey(key: string): Observable<UserDetails | null> {
|
||||
getByKey(key: string): Observable<UmbUserStoreItemType | null> {
|
||||
// TODO: use Fetcher API.
|
||||
// TODO: only fetch if the data type is not in the store?
|
||||
fetch(`/umbraco/backoffice/users/details/${key}`)
|
||||
@@ -42,11 +43,11 @@ export class UmbUserStore extends UmbDataStoreBase<UserDetails> {
|
||||
});
|
||||
|
||||
return this.items.pipe(
|
||||
map((items: Array<UserDetails>) => items.find((node: UserDetails) => node.key === key) || null)
|
||||
map((items: Array<UmbUserStoreItemType>) => items.find((node: UmbUserStoreItemType) => node.key === key) || null)
|
||||
);
|
||||
}
|
||||
|
||||
getByKeys(keys: Array<string>): Observable<Array<UserDetails>> {
|
||||
getByKeys(keys: Array<string>): Observable<Array<UmbUserStoreItemType>> {
|
||||
const params = keys.map((key) => `key=${key}`).join('&');
|
||||
fetch(`/umbraco/backoffice/users/getByKeys?${params}`)
|
||||
.then((res) => res.json())
|
||||
@@ -55,11 +56,11 @@ export class UmbUserStore extends UmbDataStoreBase<UserDetails> {
|
||||
});
|
||||
|
||||
return this.items.pipe(
|
||||
map((items: Array<UserDetails>) => items.filter((node: UserDetails) => keys.includes(node.key)))
|
||||
map((items: Array<UmbUserStoreItemType>) => items.filter((node: UmbUserStoreItemType) => keys.includes(node.key)))
|
||||
);
|
||||
}
|
||||
|
||||
getByName(name: string): Observable<Array<UserDetails>> {
|
||||
getByName(name: string): Observable<Array<UmbUserStoreItemType>> {
|
||||
name = name.trim();
|
||||
name = name.toLocaleLowerCase();
|
||||
|
||||
@@ -191,7 +192,7 @@ export class UmbUserStore extends UmbDataStoreBase<UserDetails> {
|
||||
}
|
||||
}
|
||||
|
||||
async save(users: Array<UserDetails>): Promise<void> {
|
||||
async save(users: Array<UmbUserStoreItemType>): Promise<void> {
|
||||
// TODO: use Fetcher API.
|
||||
try {
|
||||
const res = await fetch('/umbraco/backoffice/users/save', {
|
||||
@@ -208,7 +209,7 @@ export class UmbUserStore extends UmbDataStoreBase<UserDetails> {
|
||||
}
|
||||
}
|
||||
|
||||
async invite(name: string, email: string, message: string, userGroups: Array<string>): Promise<UserDetails | null> {
|
||||
async invite(name: string, email: string, message: string, userGroups: Array<string>): Promise<UmbUserStoreItemType | null> {
|
||||
// TODO: use Fetcher API.
|
||||
try {
|
||||
const res = await fetch('/umbraco/backoffice/users/invite', {
|
||||
@@ -218,7 +219,7 @@ export class UmbUserStore extends UmbDataStoreBase<UserDetails> {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
});
|
||||
const json = (await res.json()) as UserDetails[];
|
||||
const json = (await res.json()) as UmbUserStoreItemType[];
|
||||
this.updateItems(json);
|
||||
return json[0];
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user