diff --git a/src/redux/post/reducer.ts b/src/redux/post/reducer.ts index 04adc126099ebab862bba4fec0ef1cd908bd24d6..a92bde82f296734838c450b11d3d8baed438f5fa 100644 --- a/src/redux/post/reducer.ts +++ b/src/redux/post/reducer.ts @@ -2,6 +2,7 @@ import { Instalike } from '@jmetterrothan/instalike'; import { Reducer } from 'redux'; import { PostAction, SET_POST } from './actions'; +import { SetLikeFeedAction, SetUnlikeFeedAction, LIKE_POST_FEED, UNLIKE_POST_FEED } from '../feed/actions' type PostState = { data?: Instalike.Post; @@ -11,10 +12,20 @@ const intialState: PostState = { data: undefined, }; -const postReducer: Reducer<PostState, PostAction> = (state = intialState, action) => { +const postReducer: Reducer<PostState, PostAction | SetLikeFeedAction | SetUnlikeFeedAction> = (state = intialState, action) => { switch (action.type) { case SET_POST: return { ...state, data: action.payload }; + case LIKE_POST_FEED: + if(state.data) { + return {...state, data: {...state.data, viewerHasLiked: true, likesCount: state.data.likesCount + 1 } }; + } + return state; + case UNLIKE_POST_FEED: + if(state.data) { + return {...state, data: {...state.data, viewerHasLiked: false, likesCount: state.data.likesCount - 1 } }; + } + return state; default: return state; }