diff --git a/src/packages/core/rpc/protocol/json/RPCClientJSONCodec.ts b/src/packages/core/rpc/protocol/json/RPCClientJSONCodec.ts
index 5d8f4a7..1ea9cab 100644
--- a/src/packages/core/rpc/protocol/json/RPCClientJSONCodec.ts
+++ b/src/packages/core/rpc/protocol/json/RPCClientJSONCodec.ts
@@ -35,8 +35,8 @@ export class RPCClientJSONCodec extends RPCClientCodec {
const _res: ClientResponse = {
id: res.id,
jsonrpc: res.jsonrpc,
- result: undefined !== res.result ? JSON.parse(res.result) : undefined,
- error: undefined !== res.error ? JSON.parse(res.error) : undefined,
+ result: res.result,
+ error: res.error,
};
return new RPCClientJSONResponseCodec(_res);
}
diff --git a/src/packages/notification/component/notification/notification.component.html b/src/packages/notification/component/notification/notification.component.html
index d1612e2..2b07363 100644
--- a/src/packages/notification/component/notification/notification.component.html
+++ b/src/packages/notification/component/notification/notification.component.html
@@ -1 +1,29 @@
-
list
\ No newline at end of file
+
+
+
+
+ Name
+ {{element.id}}
+
+
+
+ Title
+ {{element.title}}
+
+
+
+ Message
+ {{element.message}}
+
+
+
+ Member
+ {{element.member.name}}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/packages/notification/component/notification/notification.component.ts b/src/packages/notification/component/notification/notification.component.ts
index 99bc5b1..218e833 100644
--- a/src/packages/notification/component/notification/notification.component.ts
+++ b/src/packages/notification/component/notification/notification.component.ts
@@ -1,18 +1,62 @@
-import { Component, OnInit, Input } from '@angular/core';
+import { Component, OnInit, Input, ViewChild, AfterContentInit } from '@angular/core';
+import { MatTableDataSource, MatSort } from '@angular/material';
import { Router } from '@angular/router';
+import { Store, select } from '@ngrx/store';
+import { RPCError } from 'packages/core/rpc/error';
+import { Notification } from '../../model';
+import * as NotificationStore from '../../store/notification';
+import { ReadAllByMemberSelector } from '../../store';
+import { AuthSelector } from 'packages/member/store';
+import { Member } from '../../../member/model';
@Component({
selector: 'of-notification',
templateUrl: './notification.component.html',
styleUrls: ['./notification.component.scss']
})
-export class NotificationComponent implements OnInit {
+export class NotificationComponent implements OnInit, AfterContentInit {
+
+ notification$ = this.store.pipe(select(ReadAllByMemberSelector.select('notifications')));
+
+ displayedColumns = ['id', 'title', 'message', 'member' ];
+ dataSource: MatTableDataSource;
+ @ViewChild(MatSort) sort: MatSort;
constructor(
- private router: Router
+ private router: Router,
+ private store: Store
) { }
ngOnInit() {
+ this.notification$.subscribe(
+ (notifications: Notification[]) => {
+ console.log('#########');
+ console.log(notifications);
+ console.log('#########');
+ this.dataSource = new MatTableDataSource(notifications);
+ this.dataSource.sort = this.sort;
+ },
+ (error: RPCError) => {
+ console.log(error.message);
+ }
+ );
+ }
+
+ ngAfterContentInit() {
+ this.store.select(AuthSelector.select('member')).subscribe(
+ (member: Member) => {
+ console.log(member);
+ this.store.dispatch(new NotificationStore.ReadAllByMember(member));
+ },
+ (error) => {
+ console.log(error);
+ }
+ );
+
+ }
+
+ handleRowClick(n: Notification) {
+ this.router.navigate([n.url]);
}
}
diff --git a/src/packages/notification/service/notification.service.ts b/src/packages/notification/service/notification.service.ts
index f8adf75..8d48e07 100644
--- a/src/packages/notification/service/notification.service.ts
+++ b/src/packages/notification/service/notification.service.ts
@@ -18,9 +18,6 @@ export class NotificationService {
}
public readAllByMember(member: Member): Observable {
- const body = {
- member: member,
- };
return this.rpcClient.call('NotificationService.readAllByMember', member);
}
diff --git a/src/packages/notification/store/index.ts b/src/packages/notification/store/index.ts
index d0971c6..252b180 100644
--- a/src/packages/notification/store/index.ts
+++ b/src/packages/notification/store/index.ts
@@ -8,23 +8,23 @@ import {
import { MODULE } from '../notification.constant';
- import * as ReadAllByMemberStore from './readallbymember';
+ import * as NotificationStore from './notification';
export interface State {
- readallbymember: ReadAllByMemberStore.State;
+ notifications: NotificationStore.State;
}
export const REDUCERS = {
- readallbymember: ReadAllByMemberStore.reducer,
+ notifications: NotificationStore.reducer,
};
export const EFFECTS = [
- ReadAllByMemberStore.Effects,
+ NotificationStore.Effects,
];
export const selectNotificationState = createFeatureSelector(MODULE.name);
- export const ReadAllByMemberSelector = new StateSelector(createSelector(
+ export const ReadAllByMemberSelector = new StateSelector(createSelector(
selectNotificationState,
- (state: State) => state.readallbymember
+ (state: State) => state.notifications
));
diff --git a/src/packages/notification/store/notification/index.ts b/src/packages/notification/store/notification/index.ts
new file mode 100644
index 0000000..c7467b0
--- /dev/null
+++ b/src/packages/notification/store/notification/index.ts
@@ -0,0 +1,4 @@
+export * from './notification.action';
+export * from './notification.effect';
+export * from './notification.reducer';
+export * from './notification.state';
diff --git a/src/packages/notification/store/readallbymember/readallbymember.action.ts b/src/packages/notification/store/notification/notification.action.ts
similarity index 75%
rename from src/packages/notification/store/readallbymember/readallbymember.action.ts
rename to src/packages/notification/store/notification/notification.action.ts
index 40e312b..5bfbd1f 100644
--- a/src/packages/notification/store/readallbymember/readallbymember.action.ts
+++ b/src/packages/notification/store/notification/notification.action.ts
@@ -6,9 +6,9 @@ import { Notification } from '../../model';
import { Member } from '../../../member/model';
export enum ActionType {
- ReadAllByMember = '[Notification.ReadAllByMember] ReadAllByMember',
- ReadAllByMemberSuccess = '[Notification.ReadAllByMemberSuccess] ReadAllByMemberSuccess',
- ReadAllByMemberFailure = '[Notification.ReadAllByMemberFailure] ReadAllByMemberFailure',
+ ReadAllByMember = '[Notification.notification] ReadAllByMember',
+ ReadAllByMemberSuccess = '[Notification.notification] ReadAllByMemberSuccess',
+ ReadAllByMemberFailure = '[Notification.notification] ReadAllByMemberFailure',
}
export class ReadAllByMember implements Action {
diff --git a/src/packages/notification/store/readallbymember/readallbymember.effect.spec.ts b/src/packages/notification/store/notification/notification.effect.spec.ts
similarity index 73%
rename from src/packages/notification/store/readallbymember/readallbymember.effect.spec.ts
rename to src/packages/notification/store/notification/notification.effect.spec.ts
index 2ace0e6..4bbc6cf 100644
--- a/src/packages/notification/store/readallbymember/readallbymember.effect.spec.ts
+++ b/src/packages/notification/store/notification/notification.effect.spec.ts
@@ -1,8 +1,8 @@
import { TestBed, inject } from '@angular/core/testing';
-import { Effects } from './readallbymember.effect';
+import { Effects } from './notification.effect';
-describe('ReadAllByMember.Effects', () => {
+describe('Notification.Effects', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [Effects]
diff --git a/src/packages/notification/store/readallbymember/readallbymember.effect.ts b/src/packages/notification/store/notification/notification.effect.ts
similarity index 61%
rename from src/packages/notification/store/readallbymember/readallbymember.effect.ts
rename to src/packages/notification/store/notification/notification.effect.ts
index 6a7208d..ac0c9f8 100644
--- a/src/packages/notification/store/readallbymember/readallbymember.effect.ts
+++ b/src/packages/notification/store/notification/notification.effect.ts
@@ -23,7 +23,7 @@ import {
ReadAllByMemberSuccess,
ReadAllByMemberFailure,
ActionType,
-} from './readallbymember.action';
+} from './notification.action';
@Injectable()
export class Effects {
@@ -36,13 +36,22 @@ export class Effects {
@Effect()
readAllByMember$: Observable = this.actions$
+ // .ofType(ActionType.ReadAllByMember)
+ // .map((action: ReadAllByMember) => action.payload)
+ // .exhaustMap(member =>
+ // this.notificationService
+ // .readAllByMember(member)
+ // .map(notificationList => new ReadAllByMemberSuccess(notificationList))
+ // .catch(error => of(new ReadAllByMemberFailure(error)))
+ // );
.ofType(ActionType.ReadAllByMember)
.map((action: ReadAllByMember) => action.payload)
- .exhaustMap(member =>
- this.notificationService
- .readAllByMember(member)
- .map(notificationList => new ReadAllByMemberSuccess(notificationList))
- .catch(error => of(new ReadAllByMemberFailure(error)))
- );
+ .switchMap(payload => this.notificationService.readAllByMember(payload))
+ .map(notifications => {
+ return new ReadAllByMemberSuccess(notifications);
+ })
+ .catch((error: RPCError) => {
+ return of(new ReadAllByMemberFailure(error));
+ });
}
diff --git a/src/packages/notification/store/readallbymember/readallbymember.reducer.ts b/src/packages/notification/store/notification/notification.reducer.ts
similarity index 83%
rename from src/packages/notification/store/readallbymember/readallbymember.reducer.ts
rename to src/packages/notification/store/notification/notification.reducer.ts
index 81a76ab..271b4dc 100644
--- a/src/packages/notification/store/readallbymember/readallbymember.reducer.ts
+++ b/src/packages/notification/store/notification/notification.reducer.ts
@@ -1,12 +1,12 @@
import {
Actions,
ActionType,
- } from './readallbymember.action';
+ } from './notification.action';
import {
State,
initialState,
- } from './readallbymember.state';
+ } from './notification.state';
import { Notification } from '../../model';
@@ -25,7 +25,7 @@ import {
...state,
error: null,
pending: false,
- notificationList: action.payload,
+ notifications: action.payload,
};
}
@@ -34,7 +34,7 @@ import {
...state,
error: action.payload,
pending: false,
- notificationList: null,
+ notifications: null,
};
}
diff --git a/src/packages/notification/store/readallbymember/readallbymember.state.ts b/src/packages/notification/store/notification/notification.state.ts
similarity index 78%
rename from src/packages/notification/store/readallbymember/readallbymember.state.ts
rename to src/packages/notification/store/notification/notification.state.ts
index 0e9d097..ed4a56e 100644
--- a/src/packages/notification/store/readallbymember/readallbymember.state.ts
+++ b/src/packages/notification/store/notification/notification.state.ts
@@ -5,11 +5,11 @@ import { Notification } from '../../model';
export interface State {
error: RPCError | null;
pending: boolean;
- notificationList: Notification[] | null;
+ notifications: Notification[] | null;
}
export const initialState: State = {
error: null,
pending: false,
- notificationList: null,
+ notifications: null,
};
diff --git a/src/packages/notification/store/readallbymember/index.ts b/src/packages/notification/store/readallbymember/index.ts
deleted file mode 100644
index ca4ece9..0000000
--- a/src/packages/notification/store/readallbymember/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export * from './readallbymember.action';
-export * from './readallbymember.effect';
-export * from './readallbymember.reducer';
-export * from './readallbymember.state';