@ -1,17 +1,9 @@
// redux/actions/moveAction.ts
// redux/actions/moveAction.ts
import { CREATE_MOVE , DELETE_MOVE , GET_MOVES , UPDATE_MOVE } from '../constants' ;
import { FETCH_MOVES } from '../constants' ;
import { Move } from "../../entities/Move" ;
import { Move } from "../../entities/Move" ;
import { Dispatch } from "redux" ;
import { Dispatch } from "redux" ;
import { API_BASE_URL } from "../../config" ;
import { API_BASE_URL } from "../../config" ;
import { RootState } from "../store" ;
export const setMoves = ( moves : Move [ ] ) = > {
return {
type : FETCH_MOVES ,
payload : moves ,
} ;
}
export const createMove = ( move : Move ) = > {
export const createMove = ( move : Move ) = > {
return async ( dispatch : Dispatch ) = > {
return async ( dispatch : Dispatch ) = > {
@ -24,7 +16,7 @@ export const createMove = (move: Move) => {
body : JSON.stringify ( move ) ,
body : JSON.stringify ( move ) ,
} ) ;
} ) ;
const data = await response . json ( ) ;
const data = await response . json ( ) ;
dispatch ( setMoves ( data ) ) ;
dispatch ( { type : CREATE_MOVE , payload : data } ) ;
}
}
catch ( error ) {
catch ( error ) {
console . error ( error ) ;
console . error ( error ) ;
@ -37,7 +29,7 @@ export const getMoves = () => {
try {
try {
const response = await fetch ( ` ${ API_BASE_URL } /move ` ) ;
const response = await fetch ( ` ${ API_BASE_URL } /move ` ) ;
const data = await response . json ( ) ;
const data = await response . json ( ) ;
dispatch ( setMoves ( data ) ) ;
dispatch ( { type : GET_MOVES , payload : data } ) ;
}
}
catch ( error ) {
catch ( error ) {
console . error ( error ) ;
console . error ( error ) ;
@ -46,7 +38,7 @@ export const getMoves = () => {
}
}
export const updateMove = ( id : string , move : Move ) = > {
export const updateMove = ( id : string , move : Move ) = > {
return async ( dispatch : Dispatch , getState : ( ) = > RootState ) = > {
return async ( dispatch : Dispatch ) = > {
try {
try {
const response = await fetch ( ` ${ API_BASE_URL } /move/ ${ id } ` , {
const response = await fetch ( ` ${ API_BASE_URL } /move/ ${ id } ` , {
method : 'PUT' ,
method : 'PUT' ,
@ -56,8 +48,7 @@ export const updateMove = (id: string, move: Move) => {
body : JSON.stringify ( move ) ,
body : JSON.stringify ( move ) ,
} ) ;
} ) ;
const updatedMove = await response . json ( ) ;
const updatedMove = await response . json ( ) ;
const moves = getState ( ) . move . moves . map ( ( m : Move ) = > m . id === id ? updatedMove : m ) ;
dispatch ( { type : UPDATE_MOVE , payload : updatedMove } ) ;
dispatch ( setMoves ( moves ) ) ;
}
}
catch ( error ) {
catch ( error ) {
console . error ( error ) ;
console . error ( error ) ;
@ -66,17 +57,15 @@ export const updateMove = (id: string, move: Move) => {
}
}
export const deleteMove = ( id : string ) = > {
export const deleteMove = ( id : string ) = > {
return async ( dispatch : Dispatch , getState : ( ) = > RootState ) = > {
return async ( dispatch : Dispatch ) = > {
try {
try {
await fetch ( ` ${ API_BASE_URL } /move/ ${ id } ` , {
await fetch ( ` ${ API_BASE_URL } /move/ ${ id } ` , {
method : 'DELETE' ,
method : 'DELETE' ,
} ) ;
} ) ;
const moves = getState ( ) . move . moves . filter ( ( m : Move ) = > m . id !== id ) ;
dispatch ( { type : DELETE_MOVE , payload : id } ) ;
dispatch ( setMoves ( moves ) ) ;
}
}
catch ( error ) {
catch ( error ) {
console . error ( error ) ;
console . error ( error ) ;
}
}
}
}
}
}