//
// SPDX-License-Identifier: AGPL-3.0
-import { ResourceKind } from '~/models/resource';
+import { ResourceKind, Resource } from '~/models/resource';
-export interface ApiClientAuthorization {
+export interface ApiClientAuthorization extends Resource {
uuid: string;
apiToken: string;
apiClientId: number;
ownerUuid: string;
defaultOwnerUuid: string;
scopes: string[];
- kind: ResourceKind.API_CLIENT_AUTHORIZATION;
- etag: string;
- href: string;
}
\ No newline at end of file
etag: string;
}
-export type ResourceTypes = Resource | ApiClientAuthorization;
-
export interface TrashableResource extends Resource {
trashAt: string;
deleteAt: string;
// SPDX-License-Identifier: AGPL-3.0
import * as _ from "lodash";
-import { ResourceTypes } from "src/models/resource";
+import { Resource } from "src/models/resource";
export enum OrderDirection { ASC, DESC }
-export class OrderBuilder<T extends ResourceTypes = ResourceTypes> {
+export class OrderBuilder<T extends Resource = Resource> {
constructor(private order: string[] = []) {}
// SPDX-License-Identifier: AGPL-3.0
import { unionize, ofType, UnionOf } from '~/common/unionize';
-import { extractUuidKind, ResourceTypes } from '~/models/resource';
+import { extractUuidKind, Resource } from '~/models/resource';
import { Dispatch } from 'redux';
import { RootState } from '~/store/store';
import { ServiceRepository } from '~/services/services';
import { getResourceService } from '~/services/services';
export const resourcesActions = unionize({
- SET_RESOURCES: ofType<ResourceTypes[]>(),
+ SET_RESOURCES: ofType<Resource[]>(),
DELETE_RESOURCES: ofType<string[]>()
});
export type ResourcesAction = UnionOf<typeof resourcesActions>;
-export const updateResources = (resources: ResourceTypes[]) => resourcesActions.SET_RESOURCES(resources);
+export const updateResources = (resources: Resource[]) => resourcesActions.SET_RESOURCES(resources);
export const loadResource = (uuid: string) =>
async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
//
// SPDX-License-Identifier: AGPL-3.0
-import { ResourceTypes } from "~/models/resource";
+import { Resource } from "~/models/resource";
import { ResourceKind } from '~/models/resource';
-export type ResourcesState = { [key: string]: ResourceTypes };
+export type ResourcesState = { [key: string]: Resource };
-export const getResource = <T extends ResourceTypes = ResourceTypes>(id: string) =>
+export const getResource = <T extends Resource = Resource>(id: string) =>
(state: ResourcesState): T | undefined =>
state[id] as T;
-export const setResource = <T extends ResourceTypes>(id: string, data: T) =>
+export const setResource = <T extends Resource>(id: string, data: T) =>
(state: ResourcesState) => ({
...state,
[id]: data
return newState;
};
-export const filterResources = (filter: (resource: ResourceTypes) => boolean) =>
+export const filterResources = (filter: (resource: Resource) => boolean) =>
(state: ResourcesState) =>
Object
.keys(state)
import { connect } from 'react-redux';
import { RootState } from '~/store/store';
import { getResource } from '~/store/resources/resources';
-import { Resource, ResourceTypes } from '~/models/resource';
+import { Resource } from '~/models/resource';
interface WithResourceProps {
- resource?: ResourceTypes;
+ resource?: Resource;
}
export const withResource = (component: React.ComponentType<WithResourceProps & { uuid: string }>) =>
})
)(component);
-export const getDataFromResource = (property: string, resource?: ResourceTypes) => {
+export const getDataFromResource = (property: string, resource?: Resource) => {
return resource && resource[property] ? resource[property] : '(none)';
};