Skip to content
This repository was archived by the owner on Feb 1, 2024. It is now read-only.

Commit 5e0ee98

Browse files
committed
feat: redux data example implementation
1 parent 52c651c commit 5e0ee98

File tree

3 files changed

+51
-10
lines changed

3 files changed

+51
-10
lines changed

src/screens/home/HomeScreen.tsx

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import CardItem from "./components/card-item/CardItem";
1717
import { SCREENS } from "@shared-constants";
1818
import Text from "@shared-components/text-wrapper/TextWrapper";
1919
import fonts from "@fonts";
20+
import UserService from "./services/userService";
2021

2122
const profileURI =
2223
// eslint-disable-next-line max-len
@@ -29,6 +30,19 @@ const HomeScreen: React.FC<HomeScreenProps> = () => {
2930
const { colors } = theme;
3031
const styles = useMemo(() => createStyles(theme), [theme]);
3132

33+
React.useEffect(() => {
34+
const mockUserData = {
35+
id: "301395-3150134",
36+
username: "FreakyCoder",
37+
fullname: "Kuray",
38+
email: "freakycoder@gmail.com",
39+
socialType: "google",
40+
creationDate: 1652631678000,
41+
photo: null,
42+
};
43+
UserService.setUserData(mockUserData);
44+
}, []);
45+
3246
const handleItemPress = () => {
3347
NavigationService.push(SCREENS.DETAIL);
3448
};
@@ -37,15 +51,15 @@ const HomeScreen: React.FC<HomeScreenProps> = () => {
3751
/* Render Methods */
3852
/* -------------------------------------------------------------------------- */
3953

40-
const MenuButton = () => (
54+
const renderMenuButton = () => (
4155
<RNBounceable>
4256
<Icon name="menu" type="Ionicons" color={colors.iconBlack} size={30} />
4357
</RNBounceable>
4458
);
4559

46-
const Header = () => (
60+
const renderHeader = () => (
4761
<View style={styles.header}>
48-
<MenuButton />
62+
{renderMenuButton()}
4963
<Image
5064
resizeMode="cover"
5165
source={{ uri: profileURI }}
@@ -54,7 +68,7 @@ const HomeScreen: React.FC<HomeScreenProps> = () => {
5468
</View>
5569
);
5670

57-
const List = () => (
71+
const renderList = () => (
5872
<View style={styles.listContainer}>
5973
<FlatList
6074
data={MockData}
@@ -65,7 +79,7 @@ const HomeScreen: React.FC<HomeScreenProps> = () => {
6579
</View>
6680
);
6781

68-
const Welcome = () => (
82+
const renderWelcome = () => (
6983
<>
7084
<Text h1 bold color={colors.text}>
7185
Hello Kuray
@@ -79,17 +93,17 @@ const HomeScreen: React.FC<HomeScreenProps> = () => {
7993
</>
8094
);
8195

82-
const Content = () => (
96+
const renderContent = () => (
8397
<View style={styles.contentContainer}>
84-
<Welcome />
85-
<List />
98+
{renderWelcome()}
99+
{renderList()}
86100
</View>
87101
);
88102

89103
return (
90104
<SafeAreaView style={styles.container}>
91-
<Header />
92-
<Content />
105+
{renderHeader()}
106+
{renderContent()}
93107
</SafeAreaView>
94108
);
95109
};
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { IUser } from "@services/models/index";
2+
import { ReduxServices } from "@services/redux/ReduxService";
3+
import {
4+
setUserData,
5+
resetUserData,
6+
} from "../../../services/redux/user/UserReducers";
7+
8+
class UserServiceState {
9+
setUserData = (userData: IUser) => {
10+
userData && ReduxServices.dispatchAction(setUserData(userData));
11+
};
12+
resetUserData = () => {
13+
ReduxServices.dispatchAction(resetUserData());
14+
};
15+
}
16+
17+
const UserService = new UserServiceState();
18+
19+
export default UserService;

src/screens/profile/ProfileScreen.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,27 @@ import { useTheme } from "@react-navigation/native";
66
*/
77
import createStyles from "./ProfileScreen.style";
88
import Text from "@shared-components/text-wrapper/TextWrapper";
9+
import { useSelector } from "react-redux";
10+
import { MainState } from "@services/redux/RootReducer";
11+
import { IUser } from "@services/models";
912

1013
interface ProfileScreenProps {}
1114

1215
const ProfileScreen: React.FC<ProfileScreenProps> = () => {
1316
const theme = useTheme();
1417
const { colors } = theme;
1518
const styles = useMemo(() => createStyles(theme), [theme]);
19+
const userData = useSelector(
20+
(state: MainState) => state.user.userData as IUser,
21+
);
1622

1723
return (
1824
<View style={styles.container}>
1925
<Text h1 color={colors.text}>
2026
Profile
2127
</Text>
28+
<Text>{userData.username}</Text>
29+
<Text>{userData.email}</Text>
2230
</View>
2331
);
2432
};

0 commit comments

Comments
 (0)