-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
alexis-espinoza
committed
Jun 22, 2022
1 parent
c451d64
commit f433153
Showing
18 changed files
with
2,740 additions
and
4,428 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
export * from './usuarios.actions' | ||
export * from './usuario.actions' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
import { createAction, props } from '@ngrx/store'; | ||
import { Usuario } from "../../models/usuario.model"; | ||
|
||
enum USUARIO_ACTIONS { | ||
USUARIO_CARGAR = '[Usuario] Cargar Usuario', | ||
USUARIO_CARGAR_SUCCESS = '[Usuario] Cargar Usuario Success', | ||
USUARIO_CARGAR_ERROR = '[Usuario] Cargar Usuario Error', | ||
} | ||
|
||
export const cargarUsuario = | ||
createAction<USUARIO_ACTIONS.USUARIO_CARGAR, { id: string }>( | ||
USUARIO_ACTIONS.USUARIO_CARGAR, | ||
props<{ id: string }>() | ||
); | ||
|
||
export const cargarUsuarioSuccess = | ||
createAction<USUARIO_ACTIONS.USUARIO_CARGAR_SUCCESS, { usuario: Usuario }>( | ||
USUARIO_ACTIONS.USUARIO_CARGAR_SUCCESS, | ||
props<{ usuario: Usuario }>() | ||
); | ||
|
||
export const cargarUsuarioError = | ||
createAction<USUARIO_ACTIONS.USUARIO_CARGAR_ERROR, { payload: any }>( | ||
USUARIO_ACTIONS.USUARIO_CARGAR_ERROR, | ||
props<{ payload: any }>() | ||
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
import { createAction, props } from '@ngrx/store'; | ||
import { Usuario } from "../../models/usuario.model"; | ||
|
||
enum USUARIOS_ACTIONS { | ||
USUARIOS_CARGAR = '[Usuarios] Cargar Usuarios', | ||
USUARIOS_CARGAR_SUCCESS = '[Usuarios] Cargar Usuarios Success', | ||
USUARIOS_CARGAR_ERROR = '[Usuarios] Cargar Usuarios Error', | ||
} | ||
|
||
export const cargarUsuarios = | ||
createAction<USUARIOS_ACTIONS.USUARIOS_CARGAR>( | ||
USUARIOS_ACTIONS.USUARIOS_CARGAR | ||
); | ||
|
||
export const cargarUsuariosSuccess = | ||
createAction<USUARIOS_ACTIONS.USUARIOS_CARGAR_SUCCESS, { usuarios: Usuario[] }>( | ||
USUARIOS_ACTIONS.USUARIOS_CARGAR_SUCCESS, | ||
props<{ usuarios: Usuario[] }>() | ||
); | ||
|
||
export const cargarUsuariosError = | ||
createAction<USUARIOS_ACTIONS.USUARIOS_CARGAR_ERROR, { payload: any }>( | ||
USUARIOS_ACTIONS.USUARIOS_CARGAR_ERROR, | ||
props<{ payload: any }>() | ||
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
import { ActionReducerMap } from "@ngrx/store"; | ||
import * as reducers from './reducers'; | ||
|
||
export interface AppState { | ||
usuarios: reducers.UsuariosState, | ||
usuario: reducers.UsuarioState | ||
} | ||
|
||
export const appReducer: ActionReducerMap<AppState> = { | ||
usuarios: reducers.usuariosReducer, | ||
usuario: reducers.usuarioReducer | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import { UsuariosEffects } from "./usuarios.effects"; | ||
import { UsuarioEffects } from "./usuario.effects"; | ||
|
||
|
||
export const EffectsArray = [UsuariosEffects, UsuarioEffects] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
import { Injectable } from "@angular/core"; | ||
import { Actions, createEffect, ofType } from "@ngrx/effects"; | ||
import * as usuarioAction from "../actions"; | ||
import { catchError, map, mergeMap, tap } from "rxjs/operators"; | ||
import { UsuarioService } from "../../services/usuario.service"; | ||
import { of } from "rxjs"; | ||
|
||
@Injectable() | ||
export class UsuarioEffects { | ||
constructor( | ||
// estos actions son observables que estan pediente de todas las acciones que se disparan | ||
private actions$: Actions, | ||
// Osea actions$: es un observable que esta escuchando las acciones | ||
private usuarioService: UsuarioService | ||
) { | ||
} | ||
|
||
cargarUsuario$ = createEffect( | ||
() => this.actions$.pipe( | ||
// Ojo no lo estoy llamando, solo que lo evalue | ||
ofType( usuarioAction.cargarUsuario ), | ||
// tap( console.log ), | ||
// uso el mergmap para unir el la informacion del obsevable del servicio a la solicitud anterior | ||
mergeMap( | ||
({ id, type } ) => this.usuarioService.getUserById(id).pipe( | ||
// tap(console.log) | ||
map( user => usuarioAction.cargarUsuarioSuccess({ usuario: user }) ), | ||
catchError( err => of(usuarioAction.cargarUsuarioError({payload: err })) ) | ||
) | ||
) | ||
) | ||
) | ||
} | ||
/* Nota: | ||
si el callback del createEffect quedara: | ||
-------------------------------------------- | ||
cargarUsuario$ = createEffect( | ||
() => this.actions$ | ||
) | ||
-------------------------------------------- | ||
esa accion se dispararia en todas las acciones que exitan / pasen por el store. Tengo que hacer que este pendiente de una accion en particular | ||
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
import { Injectable } from "@angular/core"; | ||
import { Actions, createEffect, ofType } from "@ngrx/effects"; | ||
import * as usuariosActions from "../actions"; | ||
import { catchError, map, mergeMap, tap } from "rxjs/operators"; | ||
import { UsuarioService } from "../../services/usuario.service"; | ||
import { of } from "rxjs"; | ||
|
||
@Injectable() | ||
export class UsuariosEffects { | ||
constructor( | ||
// estos actions son observables que estan pediente de todas las acciones que se disparan | ||
private actions$: Actions, | ||
// Osea actions$: es un observable que esta escuchando las acciones | ||
private usuarioService: UsuarioService | ||
) { | ||
} | ||
|
||
cargarUsuarios$ = createEffect( | ||
() => this.actions$.pipe( | ||
// Ojo no lo estoy llamando, solo que lo evalue | ||
ofType( usuariosActions.cargarUsuarios ), | ||
// tap( console.log ), | ||
// uso el mergmap para unir el la informacion del obsevable del servicio a la solicitud anterior | ||
mergeMap( | ||
() => this.usuarioService.getUsers().pipe( | ||
// tap(console.log) | ||
map( users => usuariosActions.cargarUsuariosSuccess({ usuarios: users }) ), | ||
catchError( err => of(usuariosActions.cargarUsuariosError({payload: err })) ) | ||
) | ||
) | ||
) | ||
) | ||
} | ||
/* Nota: | ||
si el callback del createEffect quedara: | ||
-------------------------------------------- | ||
cargarUsuarios$ = createEffect( | ||
() => this.actions$ | ||
) | ||
-------------------------------------------- | ||
esa accion se dispararia en todas las acciones que exitan / pasen por el store. Tengo que hacer que este pendiente de una accion en particular | ||
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
export * from './usuarios.reducer' | ||
export * from './usuario.reducer' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
import { createReducer, on } from '@ngrx/store'; | ||
import { cargarUsuario, cargarUsuarioSuccess, cargarUsuarioError } from '../actions'; | ||
import { Usuario } from "../../models/usuario.model"; | ||
|
||
export interface UsuarioState { | ||
id : string | null, | ||
user : Usuario | null, | ||
loaded : boolean, | ||
loading : boolean, | ||
error : any | ||
} | ||
|
||
export const usuarioInitialState: UsuarioState = { | ||
id : null, | ||
user : null, | ||
loaded : false, | ||
loading : false, | ||
error : null | ||
}; | ||
|
||
export const usuarioReducer = createReducer( | ||
|
||
usuarioInitialState, | ||
|
||
on(cargarUsuario, (state, { id }) => ({ | ||
...state, | ||
loading: true, | ||
id | ||
}) | ||
), | ||
|
||
on(cargarUsuarioSuccess, (state, { usuario } ) => ({ | ||
...state, | ||
loading: false, | ||
loaded: true, | ||
user: {...usuario} | ||
})), | ||
|
||
on(cargarUsuarioError, (state, { payload } ) => ({ | ||
...state, | ||
loading: false, | ||
loaded: true, | ||
error: { | ||
url: payload.url, | ||
name: payload.name, | ||
message: payload.message | ||
} | ||
})), | ||
|
||
|
||
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
import { createReducer, on } from '@ngrx/store'; | ||
import { cargarUsuarios, cargarUsuariosSuccess, cargarUsuariosError } from '../actions'; | ||
import { Usuario } from "../../models/usuario.model"; | ||
|
||
export interface UsuariosState { | ||
users : Usuario[], | ||
loaded : boolean, | ||
loading : boolean, | ||
error : any | ||
} | ||
|
||
export const usuariosInitialState: UsuariosState = { | ||
users : [], | ||
loaded : false, | ||
loading : false, | ||
error : null | ||
}; | ||
|
||
export const usuariosReducer = createReducer( | ||
|
||
usuariosInitialState, | ||
|
||
on(cargarUsuarios, (state) => ({...state, loading: true })), | ||
|
||
on(cargarUsuariosSuccess, (state, { usuarios } ) => ({ | ||
...state, | ||
loading: false, | ||
loaded: true, | ||
users: [...usuarios] | ||
})), | ||
|
||
on(cargarUsuariosError, (state, { payload } ) => ({ | ||
...state, | ||
loading: false, | ||
loaded: true, | ||
error: { | ||
url: payload.url, | ||
name: payload.name, | ||
message: payload.message | ||
} | ||
})), | ||
|
||
|
||
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.