Skip to content

Commit

Permalink
Implemented custom action for admin resolvers
Browse files Browse the repository at this point in the history
  • Loading branch information
rmathis committed Jan 21, 2019
1 parent 5b37eab commit 2a7ae3d
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 34 deletions.
2 changes: 1 addition & 1 deletion ui/src/app/dashboard/container/dashboard.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Store } from '@ngrx/store';
import * as fromRoot from '../../app.reducer';
import * as fromAdmin from '../../admin/reducer';
import { Observable } from 'rxjs';
import { LoadAdminRequest } from '../../admin/action/collection.action';
import { LoadAdminRequest } from '../../admin/action/user-collection.action';
import { LoadRoleRequest } from '../../core/action/configuration.action';
import { map } from 'rxjs/operators';

Expand Down
2 changes: 1 addition & 1 deletion ui/src/app/metadata/domain/service/resolver.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export class ResolverService {
private http: HttpClient
) {}

query(): Observable<MetadataResolver[]> {
query(opts: any = {}): Observable<MetadataResolver[]> {
return this.http.get<MetadataResolver[]>(`${ this.base }${ this.endpoint }s`, {})
.pipe(
catchError(err => throwError([]))
Expand Down
16 changes: 13 additions & 3 deletions ui/src/app/metadata/resolver/action/collection.action.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,15 @@ export enum ResolverCollectionActionTypes {
UPDATE_RESOLVER_FAIL = '[Metadata Resolver] Update Fail',
UPDATE_RESOLVER_CONFLICT = '[Metadata Resolver] Update Conflict',

LOAD_RESOLVER_REQUEST = '[Metadata Resolver Collection] Resolver REQUEST',
LOAD_RESOLVER_SUCCESS = '[Metadata Resolver Collection] Resolver SUCCESS',
LOAD_RESOLVER_ERROR = '[Metadata Resolver Collection] Resolver ERROR',
LOAD_RESOLVER_REQUEST = '[Metadata Resolver Collection] Load Resolver REQUEST',
LOAD_RESOLVER_SUCCESS = '[Metadata Resolver Collection] Load Resolver SUCCESS',
LOAD_RESOLVER_ERROR = '[Metadata Resolver Collection] Load Resolver ERROR',
LOAD_ADMIN_RESOLVERS_REQUEST = '[Metadata Resolver Collection] Load Admin Resolver REQUEST',

ADD_RESOLVER = '[Metadata Resolver Collection] Add Resolver',
ADD_RESOLVER_SUCCESS = '[Metadata Resolver Collection] Add Resolver Success',
ADD_RESOLVER_FAIL = '[Metadata Resolver Collection] Add Resolver Fail',

REMOVE_RESOLVER = '[Metadata Resolver Collection] Remove Resolver',
REMOVE_RESOLVER_SUCCESS = '[Metadata Resolver Collection] Remove Resolver Success',
REMOVE_RESOLVER_FAIL = '[Metadata Resolver Collection] Remove Resolver Fail',
Expand Down Expand Up @@ -50,6 +53,12 @@ export class LoadResolverRequest implements Action {
constructor() { }
}

export class LoadAdminResolverRequest implements Action {
readonly type = ResolverCollectionActionTypes.LOAD_ADMIN_RESOLVERS_REQUEST;

constructor() { }
}

export class LoadResolverSuccess implements Action {
readonly type = ResolverCollectionActionTypes.LOAD_RESOLVER_SUCCESS;

Expand Down Expand Up @@ -138,6 +147,7 @@ export type ResolverCollectionActionsUnion =
| LoadResolverRequest
| LoadResolverSuccess
| LoadResolverError
| LoadAdminResolverRequest
| AddResolverRequest
| AddResolverSuccess
| AddResolverFail
Expand Down
91 changes: 62 additions & 29 deletions ui/src/app/metadata/resolver/effect/collection.effects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,29 @@ import { Store } from '@ngrx/store';
import { of } from 'rxjs';
import { map, catchError, switchMap, tap, withLatestFrom } from 'rxjs/operators';

import * as providerActions from '../action/collection.action';
import {
ResolverCollectionActionTypes,
LoadResolverRequest,
LoadResolverSuccess,
LoadResolverError,
LoadAdminResolverRequest,
AddResolverRequest,
AddResolverSuccess,
AddResolverFail,
RemoveResolverRequest,
RemoveResolverSuccess,
RemoveResolverFail,
SelectResolver,
SelectResolverSuccess,
UpdateResolverRequest,
UpdateResolverSuccess,
UpdateResolverFail,
UpdateResolverConflict,
UploadResolverRequest,
CreateResolverFromUrlRequest
} from '../action/collection.action';
import * as draftActions from '../action/draft.action';
import { ResolverCollectionActionTypes } from '../action/collection.action';
import { } from '../action/collection.action';
import { ResolverService } from '../../domain/service/resolver.service';
import { removeNulls } from '../../../shared/util';
import { AddNotification } from '../../../notification/action/notification.action';
Expand All @@ -23,35 +43,48 @@ export class ResolverCollectionEffects {

@Effect()
loadResolvers$ = this.actions$.pipe(
ofType<providerActions.LoadResolverRequest>(ResolverCollectionActionTypes.LOAD_RESOLVER_REQUEST),
ofType<LoadResolverRequest>(ResolverCollectionActionTypes.LOAD_RESOLVER_REQUEST),
switchMap(() =>
this.descriptorService
.query()
.pipe(
map(descriptors => new providerActions.LoadResolverSuccess(descriptors)),
catchError(error => of(new providerActions.LoadResolverError(error)))
map(descriptors => new LoadResolverSuccess(descriptors)),
catchError(error => of(new LoadResolverError(error)))
)
)
);

@Effect()
loadAdminResolvers$ = this.actions$.pipe(
ofType<LoadAdminResolverRequest>(ResolverCollectionActionTypes.LOAD_RESOLVER_REQUEST),
switchMap(() =>
this.descriptorService
.query({admin: true})
.pipe(
map(descriptors => new LoadResolverSuccess(descriptors)),
catchError(error => of(new LoadResolverError(error)))
)
)
);

@Effect()
updateResolver$ = this.actions$.pipe(
ofType<providerActions.UpdateResolverRequest>(ResolverCollectionActionTypes.UPDATE_RESOLVER_REQUEST),
ofType<UpdateResolverRequest>(ResolverCollectionActionTypes.UPDATE_RESOLVER_REQUEST),
map(action => action.payload),
switchMap(provider => {
return this.descriptorService
.update(provider)
.pipe(
map(p => new providerActions.UpdateResolverSuccess({
map(p => new UpdateResolverSuccess({
id: p.id,
changes: p
})),
catchError(err => {
if (err.status === 409) {
return of(new providerActions.UpdateResolverConflict(provider));
return of(new UpdateResolverConflict(provider));
}
console.log(err);
return of(new providerActions.UpdateResolverFail({
return of(new UpdateResolverFail({
errorCode: err.status,
errorMessage: `${err.statusText} - ${err.message}`
}));
Expand All @@ -62,21 +95,21 @@ export class ResolverCollectionEffects {

@Effect({ dispatch: false })
updateResolverSuccessRedirect$ = this.actions$.pipe(
ofType<providerActions.UpdateResolverSuccess>(ResolverCollectionActionTypes.UPDATE_RESOLVER_SUCCESS),
ofType<UpdateResolverSuccess>(ResolverCollectionActionTypes.UPDATE_RESOLVER_SUCCESS),
map(action => action.payload),
tap(provider => this.router.navigate(['dashboard']))
);

@Effect()
updateResolverSuccessReload$ = this.actions$.pipe(
ofType<providerActions.UpdateResolverSuccess>(ResolverCollectionActionTypes.UPDATE_RESOLVER_SUCCESS),
ofType<UpdateResolverSuccess>(ResolverCollectionActionTypes.UPDATE_RESOLVER_SUCCESS),
map(action => action.payload),
map(provider => new providerActions.LoadResolverRequest())
map(provider => new LoadResolverRequest())
);

@Effect()
updateResolverFailNotification$ = this.actions$.pipe(
ofType<providerActions.UpdateResolverFail>(ResolverCollectionActionTypes.UPDATE_RESOLVER_FAIL),
ofType<UpdateResolverFail>(ResolverCollectionActionTypes.UPDATE_RESOLVER_FAIL),
map(action => action.payload),
withLatestFrom(this.store.select(fromI18n.getMessages)),
map(([error, messages]) => new AddNotification(
Expand All @@ -90,20 +123,20 @@ export class ResolverCollectionEffects {

@Effect()
selectResolver$ = this.actions$.pipe(
ofType<providerActions.SelectResolver>(ResolverCollectionActionTypes.SELECT),
ofType<SelectResolver>(ResolverCollectionActionTypes.SELECT),
map(action => action.payload),
switchMap(id =>
this.descriptorService
.find(id)
.pipe(
map(p => new providerActions.SelectResolverSuccess(p))
map(p => new SelectResolverSuccess(p))
)
)
);

@Effect()
addResolverRequest$ = this.actions$.pipe(
ofType<providerActions.AddResolverRequest>(ResolverCollectionActionTypes.ADD_RESOLVER),
ofType<AddResolverRequest>(ResolverCollectionActionTypes.ADD_RESOLVER),
map(action => action.payload),
map(provider => {
return ({
Expand All @@ -115,28 +148,28 @@ export class ResolverCollectionEffects {
this.descriptorService
.save(provider)
.pipe(
map(p => new providerActions.AddResolverSuccess(p)),
catchError(() => of(new providerActions.AddResolverFail(provider)))
map(p => new AddResolverSuccess(p)),
catchError(() => of(new AddResolverFail(provider)))
)
)
);

@Effect({ dispatch: false })
addResolverSuccessRedirect$ = this.actions$.pipe(
ofType<providerActions.AddResolverSuccess>(ResolverCollectionActionTypes.ADD_RESOLVER_SUCCESS),
ofType<AddResolverSuccess>(ResolverCollectionActionTypes.ADD_RESOLVER_SUCCESS),
map(action => action.payload),
tap(provider => this.router.navigate(['dashboard']))
);
@Effect()
addResolverSuccessReload$ = this.actions$.pipe(
ofType<providerActions.AddResolverSuccess>(ResolverCollectionActionTypes.ADD_RESOLVER_SUCCESS),
ofType<AddResolverSuccess>(ResolverCollectionActionTypes.ADD_RESOLVER_SUCCESS),
map(action => action.payload),
map(provider => new providerActions.LoadResolverRequest())
map(provider => new LoadResolverRequest())
);

@Effect()
addResolverSuccessRemoveDraft$ = this.actions$.pipe(
ofType<providerActions.AddResolverSuccess>(ResolverCollectionActionTypes.ADD_RESOLVER_SUCCESS),
ofType<AddResolverSuccess>(ResolverCollectionActionTypes.ADD_RESOLVER_SUCCESS),
map(action => action.payload),
map(provider => {
return new draftActions.RemoveDraftRequest(provider);
Expand All @@ -145,7 +178,7 @@ export class ResolverCollectionEffects {

@Effect()
addResolverFailNotification$ = this.actions$.pipe(
ofType<providerActions.AddResolverFail>(ResolverCollectionActionTypes.ADD_RESOLVER_FAIL),
ofType<AddResolverFail>(ResolverCollectionActionTypes.ADD_RESOLVER_FAIL),
map(action => action.payload),
withLatestFrom(this.store.select(fromI18n.getMessages)),
map(([error, messages]) => new AddNotification(
Expand All @@ -159,28 +192,28 @@ export class ResolverCollectionEffects {

@Effect()
uploadResolverRequest$ = this.actions$.pipe(
ofType<providerActions.UploadResolverRequest>(ResolverCollectionActionTypes.UPLOAD_RESOLVER_REQUEST),
ofType<UploadResolverRequest>(ResolverCollectionActionTypes.UPLOAD_RESOLVER_REQUEST),
map(action => action.payload),
switchMap(file =>
this.descriptorService
.upload(file.name, file.body)
.pipe(
map(p => new providerActions.AddResolverSuccess(p)),
catchError((error) => of(new providerActions.AddResolverFail(error)))
map(p => new AddResolverSuccess(p)),
catchError((error) => of(new AddResolverFail(error)))
)
)
);

@Effect()
createResolverFromUrlRequest$ = this.actions$.pipe(
ofType<providerActions.CreateResolverFromUrlRequest>(ResolverCollectionActionTypes.CREATE_RESOLVER_FROM_URL_REQUEST),
ofType<CreateResolverFromUrlRequest>(ResolverCollectionActionTypes.CREATE_RESOLVER_FROM_URL_REQUEST),
map(action => action.payload),
switchMap(file =>
this.descriptorService
.createFromUrl(file.name, file.url)
.pipe(
map(p => new providerActions.AddResolverSuccess(p)),
catchError((error) => of(new providerActions.AddResolverFail(error)))
map(p => new AddResolverSuccess(p)),
catchError((error) => of(new AddResolverFail(error)))
)
)
);
Expand Down

0 comments on commit 2a7ae3d

Please sign in to comment.