Skip to content
This repository was archived by the owner on May 6, 2019. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions src/app/actions/book.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ import { type } from '../util';
* literal types and runs a simple check to guarantee all
* action types in the application are unique.
*/
export const ActionTypes = {
SEARCH: type('[Book] Search'),
SEARCH_COMPLETE: type('[Book] Search Complete'),
LOAD: type('[Book] Load'),
SELECT: type('[Book] Select'),
export class ActionTypes {
static readonly SEARCH = type('[Book] Search')
static readonly SEARCH_COMPLETE = type('[Book] Search Complete')
static readonly LOAD = type('[Book] Load')
static readonly SELECT = type('[Book] Select')
};


Expand All @@ -26,25 +26,25 @@ export const ActionTypes = {
* See Discriminated Unions: https://www.typescriptlang.org/docs/handbook/advanced-types.html#discriminated-unions
*/
export class SearchAction implements Action {
type = ActionTypes.SEARCH;
readonly type = ActionTypes.SEARCH;

constructor(public payload: string) { }
}

export class SearchCompleteAction implements Action {
type = ActionTypes.SEARCH_COMPLETE;
readonly type = ActionTypes.SEARCH_COMPLETE;

constructor(public payload: Book[]) { }
}

export class LoadAction implements Action {
type = ActionTypes.LOAD;
readonly type = ActionTypes.LOAD;

constructor(public payload: Book) { }
}

export class SelectAction implements Action {
type = ActionTypes.SELECT;
readonly type = ActionTypes.SELECT;

constructor(public payload: string) { }
}
Expand Down
38 changes: 19 additions & 19 deletions src/app/actions/collection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,36 @@ import { Book } from '../models/book';
import { type } from '../util';


export const ActionTypes = {
ADD_BOOK: type('[Collection] Add Book'),
ADD_BOOK_SUCCESS: type('[Collection] Add Book Success'),
ADD_BOOK_FAIL: type('[Collection] Add Book Fail'),
REMOVE_BOOK: type('[Collection] Remove Book'),
REMOVE_BOOK_SUCCESS: type('[Collection] Remove Book Success'),
REMOVE_BOOK_FAIL: type('[Collection] Remove Book Fail'),
LOAD: type('[Collection] Load'),
LOAD_SUCCESS: type('[Collection] Load Success'),
LOAD_FAIL: type('[Collection] Load Fail'),
export class ActionTypes {
static readonly ADD_BOOK = type('[Collection] Add Book')
static readonly ADD_BOOK_SUCCESS = type('[Collection] Add Book Success')
static readonly ADD_BOOK_FAIL = type('[Collection] Add Book Fail')
static readonly REMOVE_BOOK = type('[Collection] Remove Book')
static readonly REMOVE_BOOK_SUCCESS = type('[Collection] Remove Book Success')
static readonly REMOVE_BOOK_FAIL = type('[Collection] Remove Book Fail')
static readonly LOAD = type('[Collection] Load')
static readonly LOAD_SUCCESS = type('[Collection] Load Success')
static readonly LOAD_FAIL = type('[Collection] Load Fail')
};


/**
* Add Book to Collection Actions
*/
export class AddBookAction implements Action {
type = ActionTypes.ADD_BOOK;
readonly type =ActionTypes.ADD_BOOK;

constructor(public payload: Book) { }
}

export class AddBookSuccessAction implements Action {
type = ActionTypes.ADD_BOOK_SUCCESS;
readonly type =ActionTypes.ADD_BOOK_SUCCESS;

constructor(public payload: Book) { }
}

export class AddBookFailAction implements Action {
type = ActionTypes.ADD_BOOK_FAIL;
readonly type =ActionTypes.ADD_BOOK_FAIL;

constructor(public payload: Book) { }
}
Expand All @@ -42,19 +42,19 @@ export class AddBookFailAction implements Action {
* Remove Book from Collection Actions
*/
export class RemoveBookAction implements Action {
type = ActionTypes.REMOVE_BOOK;
readonly type =ActionTypes.REMOVE_BOOK;

constructor(public payload: Book) { }
}

export class RemoveBookSuccessAction implements Action {
type = ActionTypes.REMOVE_BOOK_SUCCESS;
readonly type =ActionTypes.REMOVE_BOOK_SUCCESS;

constructor(public payload: Book) { }
}

export class RemoveBookFailAction implements Action {
type = ActionTypes.REMOVE_BOOK_FAIL;
readonly type =ActionTypes.REMOVE_BOOK_FAIL;

constructor(public payload: Book) { }
}
Expand All @@ -63,19 +63,19 @@ export class RemoveBookFailAction implements Action {
* Load Collection Actions
*/
export class LoadAction implements Action {
type = ActionTypes.LOAD;
readonly type =ActionTypes.LOAD;

constructor() { }
}

export class LoadSuccessAction implements Action {
type = ActionTypes.LOAD_SUCCESS;
readonly type =ActionTypes.LOAD_SUCCESS;

constructor(public payload: Book[]) { }
}

export class LoadFailAction implements Action {
type = ActionTypes.LOAD_FAIL;
readonly type =ActionTypes.LOAD_FAIL;

constructor(public payload: any) { }
}
Expand Down
10 changes: 5 additions & 5 deletions src/app/actions/layout.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import { Action } from '@ngrx/store';
import { type } from '../util';

export const ActionTypes = {
OPEN_SIDENAV: type('[Layout] Open Sidenav'),
CLOSE_SIDENAV: type('[Layout] Close Sidenav')
export class ActionTypes {
static readonly OPEN_SIDENAV = type('[Layout] Open Sidenav')
static readonly CLOSE_SIDENAV = type('[Layout] Close Sidenav')
};


export class OpenSidenavAction implements Action {
type = ActionTypes.OPEN_SIDENAV;
readonly type = ActionTypes.OPEN_SIDENAV;
}

export class CloseSidenavAction implements Action {
type = ActionTypes.CLOSE_SIDENAV;
readonly type = ActionTypes.CLOSE_SIDENAV;
}


Expand Down
2 changes: 1 addition & 1 deletion src/app/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
*/

let typeCache: { [label: string]: boolean } = {};
export function type<T>(label: T | ''): T {
export function type<T extends string>(label: T): T {
if (typeCache[<string>label]) {
throw new Error(`Action type "${label}" is not unique"`);
}
Expand Down