From 08f03a2a37a1758309ef3ab11e7bf318a6d2c169 Mon Sep 17 00:00:00 2001 From: Roman-Ojha Date: Fri, 24 Jun 2022 22:02:30 +0545 Subject: [PATCH] fix(redux): added Profile page fixing #109 --- client/src/services/redux/action.ts | 3 ++ .../pages/profile/profilePageData/action.ts | 48 +++++++++++++++++++ .../pages/profile/profilePageData/reducer.ts | 42 ++++++++++++++++ .../pages/profile/profilePageData/types.ts | 39 +++++++++++++++ .../profile/rootUserProfileData/action.ts | 15 ++++++ .../profile/rootUserProfileData/reducer.ts | 24 ++++++++++ .../profile/rootUserProfileData/types.ts | 14 ++++++ .../pages/profile/userProfilePost/action.ts | 15 ++++++ .../pages/profile/userProfilePost/reducer.ts | 21 ++++++++ .../pages/profile/userProfilePost/types.ts | 12 +++++ .../src/services/redux/pages/stories/types.ts | 2 - client/src/services/redux/reducer.ts | 6 +++ 12 files changed, 239 insertions(+), 2 deletions(-) create mode 100644 client/src/services/redux/pages/profile/profilePageData/action.ts create mode 100644 client/src/services/redux/pages/profile/profilePageData/reducer.ts create mode 100644 client/src/services/redux/pages/profile/profilePageData/types.ts create mode 100644 client/src/services/redux/pages/profile/rootUserProfileData/action.ts create mode 100644 client/src/services/redux/pages/profile/rootUserProfileData/reducer.ts create mode 100644 client/src/services/redux/pages/profile/rootUserProfileData/types.ts create mode 100644 client/src/services/redux/pages/profile/userProfilePost/action.ts create mode 100644 client/src/services/redux/pages/profile/userProfilePost/reducer.ts create mode 100644 client/src/services/redux/pages/profile/userProfilePost/types.ts diff --git a/client/src/services/redux/action.ts b/client/src/services/redux/action.ts index bc4cbdc9..61b1a980 100644 --- a/client/src/services/redux/action.ts +++ b/client/src/services/redux/action.ts @@ -5,3 +5,6 @@ export * from "./components/notificationBox/action"; export * from "./components/followedByUser/action"; export * from "./pages/video/action"; export * from "./pages/stories/action"; +export * from "./pages/profile/profilePageData/action"; +export * from "./pages/profile/rootUserProfileData/action"; +export * from "./pages/profile/userProfilePost/action"; diff --git a/client/src/services/redux/pages/profile/profilePageData/action.ts b/client/src/services/redux/pages/profile/profilePageData/action.ts new file mode 100644 index 00000000..556a494b --- /dev/null +++ b/client/src/services/redux/pages/profile/profilePageData/action.ts @@ -0,0 +1,48 @@ +import { + ProfilePageAction, + ProfilePageDataActionTypes, + ProfilePageDataState, +} from "./types"; +import { Dispatch } from "react"; + +export const profilePageDataAction = (data: ProfilePageDataState) => { + return (dispatch: Dispatch) => { + dispatch({ + type: ProfilePageDataActionTypes.PROFILE_PAGE_DATA_ACTION, + payload: data, + }); + }; +}; + +export const setProfilePageFriends = ( + data: ProfilePageDataState["friends"] +) => { + return (dispatch: Dispatch) => { + dispatch({ + type: ProfilePageDataActionTypes.SET_PROFILE_PAGE_FRIENDS, + payload: data, + }); + }; +}; + +export const setProfilePageFollowers = ( + data: ProfilePageDataState["followers"] +) => { + return (dispatch: Dispatch) => { + dispatch({ + type: ProfilePageDataActionTypes.SET_PROFILE_PAGE_FOLLOWERS, + payload: data, + }); + }; +}; + +export const setProfilePageFollowings = ( + data: ProfilePageDataState["followings"] +) => { + return (dispatch: Dispatch) => { + dispatch({ + type: ProfilePageDataActionTypes.SET_PROFILE_PAGE_FOLLOWINGS, + payload: data, + }); + }; +}; diff --git a/client/src/services/redux/pages/profile/profilePageData/reducer.ts b/client/src/services/redux/pages/profile/profilePageData/reducer.ts new file mode 100644 index 00000000..1794e993 --- /dev/null +++ b/client/src/services/redux/pages/profile/profilePageData/reducer.ts @@ -0,0 +1,42 @@ +import { + ProfilePageAction, + ProfilePageDataActionTypes, + ProfilePageDataState, +} from "./types"; + +const initialState: ProfilePageDataState = { + userID: "", + post: [], + friends: [], + followings: [], + followers: [], +}; + +const profilePageDataReducer = ( + state: ProfilePageDataState = initialState, + action: ProfilePageAction +) => { + switch (action.type) { + case ProfilePageDataActionTypes.PROFILE_PAGE_DATA_ACTION: + return action.payload; + case ProfilePageDataActionTypes.SET_PROFILE_PAGE_FRIENDS: + return { + ...state, + friends: action.payload, + }; + case ProfilePageDataActionTypes.SET_PROFILE_PAGE_FOLLOWERS: + return { + ...state, + followers: action.payload, + }; + case ProfilePageDataActionTypes.SET_PROFILE_PAGE_FOLLOWINGS: + return { + ...state, + followings: action.payload, + }; + default: + return state; + } +}; + +export default profilePageDataReducer; diff --git a/client/src/services/redux/pages/profile/profilePageData/types.ts b/client/src/services/redux/pages/profile/profilePageData/types.ts new file mode 100644 index 00000000..2b03e34f --- /dev/null +++ b/client/src/services/redux/pages/profile/profilePageData/types.ts @@ -0,0 +1,39 @@ +export interface ProfilePageDataState { + userID: string; + post: []; + friends: []; + followings: []; + followers: []; +} + +export enum ProfilePageDataActionTypes { + PROFILE_PAGE_DATA_ACTION = "profilePageDataAction", + SET_PROFILE_PAGE_FRIENDS = "setProfilePageFriends", + SET_PROFILE_PAGE_FOLLOWERS = "setProfilePageFollowers", + SET_PROFILE_PAGE_FOLLOWINGS = "setProfilePageFollowings", +} +export interface ProfilePageDataAction { + type: ProfilePageDataActionTypes.PROFILE_PAGE_DATA_ACTION; + payload: any; +} + +export interface SetProfilePageFriendsAction { + type: ProfilePageDataActionTypes.SET_PROFILE_PAGE_FRIENDS; + payload: any; +} + +export interface SetProfilePageFollowersAction { + type: ProfilePageDataActionTypes.SET_PROFILE_PAGE_FOLLOWERS; + payload: any; +} + +export interface SetProfilePageFollowingAction { + type: ProfilePageDataActionTypes.SET_PROFILE_PAGE_FOLLOWINGS; + payload: any; +} + +export type ProfilePageAction = + | ProfilePageDataAction + | SetProfilePageFollowersAction + | SetProfilePageFriendsAction + | SetProfilePageFollowingAction; diff --git a/client/src/services/redux/pages/profile/rootUserProfileData/action.ts b/client/src/services/redux/pages/profile/rootUserProfileData/action.ts new file mode 100644 index 00000000..66ec36f3 --- /dev/null +++ b/client/src/services/redux/pages/profile/rootUserProfileData/action.ts @@ -0,0 +1,15 @@ +import { + RootUserProfileDataAction, + RootUserProfileDataActionTypes, + RootUserProfileDataState, +} from "./types"; +import { Dispatch } from "react"; + +export const setRootUserProfileDataState = (data: RootUserProfileDataState) => { + return (dispatch: Dispatch) => { + dispatch({ + type: RootUserProfileDataActionTypes.SET_ROOT_USER_PROFILE_DATA_STATE, + payload: data, + }); + }; +}; diff --git a/client/src/services/redux/pages/profile/rootUserProfileData/reducer.ts b/client/src/services/redux/pages/profile/rootUserProfileData/reducer.ts new file mode 100644 index 00000000..4c5178b6 --- /dev/null +++ b/client/src/services/redux/pages/profile/rootUserProfileData/reducer.ts @@ -0,0 +1,24 @@ +import { + RootUserProfileDataAction, + RootUserProfileDataActionTypes, + RootUserProfileDataState, +} from "./types"; + +const initialState: RootUserProfileDataState = { + fetchedRootUserProfileData: false, + getRootUserProfileData: false, +}; + +const rootUserProfileDataState = ( + state: RootUserProfileDataState = initialState, + action: RootUserProfileDataAction +) => { + switch (action.type) { + case RootUserProfileDataActionTypes.SET_ROOT_USER_PROFILE_DATA_STATE: + return action.payload; + default: + return state; + } +}; + +export default rootUserProfileDataState; diff --git a/client/src/services/redux/pages/profile/rootUserProfileData/types.ts b/client/src/services/redux/pages/profile/rootUserProfileData/types.ts new file mode 100644 index 00000000..70a2b62d --- /dev/null +++ b/client/src/services/redux/pages/profile/rootUserProfileData/types.ts @@ -0,0 +1,14 @@ +export interface RootUserProfileDataState { + fetchedRootUserProfileData: boolean; + getRootUserProfileData: boolean; +} + +export enum RootUserProfileDataActionTypes { + SET_ROOT_USER_PROFILE_DATA_STATE = "setRootUserProfileDataState", +} +export interface SetRootUserProfileDataState { + type: RootUserProfileDataActionTypes.SET_ROOT_USER_PROFILE_DATA_STATE; + payload: RootUserProfileDataState; +} + +export type RootUserProfileDataAction = SetRootUserProfileDataState; diff --git a/client/src/services/redux/pages/profile/userProfilePost/action.ts b/client/src/services/redux/pages/profile/userProfilePost/action.ts new file mode 100644 index 00000000..e6456f6f --- /dev/null +++ b/client/src/services/redux/pages/profile/userProfilePost/action.ts @@ -0,0 +1,15 @@ +import { + UserProfilePostActionTypes, + UserProfilePostState, + UserProfilePostAction, +} from "./types"; +import { Dispatch } from "react"; + +export const userProfilePost = (data: UserProfilePostState) => { + return (dispatch: Dispatch) => { + dispatch({ + type: UserProfilePostActionTypes.SET_USER_PROFILE_POST, + payload: data, + }); + }; +}; diff --git a/client/src/services/redux/pages/profile/userProfilePost/reducer.ts b/client/src/services/redux/pages/profile/userProfilePost/reducer.ts new file mode 100644 index 00000000..ce0e8b3f --- /dev/null +++ b/client/src/services/redux/pages/profile/userProfilePost/reducer.ts @@ -0,0 +1,21 @@ +import { + UserProfilePostAction, + UserProfilePostActionTypes, + UserProfilePostState, +} from "./types"; + +const initialState: UserProfilePostState = []; +// this store the user Post data +const setUserProfilePostReducer = ( + state: UserProfilePostState = initialState, + action: UserProfilePostAction +) => { + switch (action.type) { + case UserProfilePostActionTypes.SET_USER_PROFILE_POST: + return action.payload; + default: + return state; + } +}; + +export default setUserProfilePostReducer; diff --git a/client/src/services/redux/pages/profile/userProfilePost/types.ts b/client/src/services/redux/pages/profile/userProfilePost/types.ts new file mode 100644 index 00000000..1c7263ce --- /dev/null +++ b/client/src/services/redux/pages/profile/userProfilePost/types.ts @@ -0,0 +1,12 @@ +export interface UserProfilePostState {} + +export enum UserProfilePostActionTypes { + SET_USER_PROFILE_POST = "userProfilePost", +} + +export interface SetUserProfilePostAction { + type: UserProfilePostActionTypes.SET_USER_PROFILE_POST; + payload: UserProfilePostState; +} + +export type UserProfilePostAction = SetUserProfilePostAction; diff --git a/client/src/services/redux/pages/stories/types.ts b/client/src/services/redux/pages/stories/types.ts index 10c4cf4d..1764d928 100644 --- a/client/src/services/redux/pages/stories/types.ts +++ b/client/src/services/redux/pages/stories/types.ts @@ -1,5 +1,3 @@ -import { YoutubeVideos } from "../../../../interface/youtubeVideos"; - export interface StoriesPageState { storyIndex: number; data: []; diff --git a/client/src/services/redux/reducer.ts b/client/src/services/redux/reducer.ts index 2a3e37db..c9ba153e 100644 --- a/client/src/services/redux/reducer.ts +++ b/client/src/services/redux/reducer.ts @@ -6,6 +6,9 @@ import followedByUserReducer from "./components/followedByUser/reducer"; import notificationBoxReducer from "./components/notificationBox/reducer"; import videoPageDataReducer from "./pages/video/reducer"; import userStoriesReducer from "./pages/stories/reducer"; +import profilePageDataReducer from "./pages/profile/profilePageData/reducer"; +import rootUserProfileDataState from "./pages/profile/rootUserProfileData/reducer"; +import setUserProfilePostReducer from "./pages/profile/userProfilePost/reducer"; const reducer = combineReducers({ setUserProfileDetailReducer, @@ -15,6 +18,9 @@ const reducer = combineReducers({ videoPageDataReducer, userStoriesReducer, followedByUserReducer, + profilePageDataReducer, + rootUserProfileDataState, + setUserProfilePostReducer, }); export default reducer;