Skip to content

Commit

Permalink
Added redux for state management (#16)
Browse files Browse the repository at this point in the history
  • Loading branch information
muhsin-k authored and pranavrajs committed Nov 29, 2019
1 parent ae74ab9 commit 5983156
Show file tree
Hide file tree
Showing 14 changed files with 156 additions and 26 deletions.
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@ build/
.gradle
local.properties
*.iml
android/.project
android/.settings
android/app/.settings
android/app/bin
android/app/.project
android/app/.classpath

# node.js
#
Expand Down
2 changes: 1 addition & 1 deletion .prettierrc.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
module.exports = {
bracketSpacing: false,
bracketSpacing: true,
jsxBracketSameLine: true,
singleQuote: true,
trailingComma: 'all',
Expand Down
8 changes: 7 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,17 @@
"lint": "eslint ."
},
"dependencies": {
"@react-native-community/async-storage": "^1.6.3",
"react": "16.9.0",
"react-native": "0.61.5",
"react-native-gesture-handler": "^1.5.1",
"react-navigation": "^4.0.10",
"react-navigation-stack": "^1.10.3"
"react-navigation-stack": "^1.10.3",
"react-redux": "^7.1.3",
"redux": "^4.0.4",
"redux-logger": "^3.0.6",
"redux-persist": "^6.0.0",
"redux-thunk": "^2.3.0"
},
"devDependencies": {
"@babel/core": "^7.6.2",
Expand Down
5 changes: 5 additions & 0 deletions src/actions/locale.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { SET_LOCALE } from '../constants/actions';

export const setLocale = value => dispatch => {
dispatch({ type: SET_LOCALE, payload: value });
};
14 changes: 12 additions & 2 deletions src/app.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
import React, {Component} from 'react';
import React, { Component } from 'react';
import { Provider } from 'react-redux';

import { PersistGate } from 'redux-persist/integration/react';

import Router from './router';
import { store, persistor } from './store';

export default class Chatwoot extends Component {
render() {
return <Router />;
return (
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<Router />
</PersistGate>
</Provider>
);
}
}
1 change: 1 addition & 0 deletions src/constants/actions.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const SET_LOCALE = 'SET_LOCALE';
8 changes: 8 additions & 0 deletions src/reducer/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { combineReducers } from 'redux';
import locale from './locale';

const rootReducer = combineReducers({
locale,
});

export default (state, action) => rootReducer(state, action);
17 changes: 17 additions & 0 deletions src/reducer/locale.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
const initialState = {
value: 'en',
isLocaleSet: false,
};
export default (state = initialState, action) => {
switch (action.type) {
case 'SET_LOCALE':
return {
...state,
value: action.payload,
isLocaleSet: true,
};

default:
return state;
}
};
12 changes: 6 additions & 6 deletions src/router.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import React from 'react';
import {createAppContainer} from 'react-navigation';
import {createStackNavigator} from 'react-navigation-stack';
import { createAppContainer } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';

import Home from './screens/Home/Home';
import HomeScreen from './screens/HomeScreen/HomeScreen';

const createNavigationStack = ({initialRouteName}) =>
const createNavigationStack = ({ initialRouteName }) =>
createStackNavigator({
Home: {screen: Home},
Home: { screen: HomeScreen },
});

class RootApp extends React.Component {
render() {
const App = createAppContainer(
createNavigationStack({initialRouteName: 'Home'}),
createNavigationStack({ initialRouteName: 'Home' }),
);
return <App />;
}
Expand Down
14 changes: 0 additions & 14 deletions src/screens/Home/Home.js

This file was deleted.

15 changes: 15 additions & 0 deletions src/screens/HomeScreen/HomeScreen.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import React, { Component } from 'react';
import { View, Text } from 'react-native';
import styles from './HomeScreen.style';

class HomeScreen extends Component {
render() {
return (
<View style={styles.mainView}>
<Text>Chatwoot</Text>
</View>
);
}
}

export default HomeScreen;
8 changes: 8 additions & 0 deletions src/screens/HomeScreen/HomeScreen.style.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { StyleSheet } from 'react-native';
export default StyleSheet.create({
mainView: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
});
21 changes: 21 additions & 0 deletions src/store.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import AsyncStorage from '@react-native-community/async-storage';
import { createStore, applyMiddleware } from 'redux';
import { createLogger } from 'redux-logger';
import { persistStore, persistReducer } from 'redux-persist';

import rootReducer from './reducer';
// Middleware: Redux Persist Config
const persistConfig = {
key: 'root',
storage: AsyncStorage,
whitelist: [],
blacklist: [],
};
// Middleware: Redux Persist Persisted Reducer
const persistedReducer = persistReducer(persistConfig, rootReducer);
// Redux: Store
const store = createStore(persistedReducer, applyMiddleware(createLogger()));
// Middleware: Redux Persist Persister
let persistor = persistStore(store);

export { store, persistor };
51 changes: 49 additions & 2 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -614,7 +614,7 @@
pirates "^4.0.0"
source-map-support "^0.5.16"

"@babel/runtime@^7.0.0", "@babel/runtime@^7.6.2":
"@babel/runtime@^7.0.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2":
version "7.7.4"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.4.tgz#b23a856751e4bf099262f867767889c0e3fe175b"
integrity sha512-r24eVUUr0QqNZa+qrImUk8fn5SPhHq+IfYvIoIMg0do3GdK9sMdiLKP3GYVVaxpPKORgm8KRKaNTEhAjgIpLMw==
Expand Down Expand Up @@ -863,6 +863,11 @@
"@nodelib/fs.scandir" "2.1.3"
fastq "^1.6.0"

"@react-native-community/async-storage@^1.6.3":
version "1.6.3"
resolved "https://registry.yarnpkg.com/@react-native-community/async-storage/-/async-storage-1.6.3.tgz#1a713e8c5cacd543ab8539080a5ce57ad917da88"
integrity sha512-67K2akX90uc252zKMYJt1wISvaEH6ARtdTI9bUkwmOFXVPyVk1DfPnaRmyUzcVdeCBOO1n0xv9YO2GSppIormQ==

"@react-native-community/cli-debugger-ui@^3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-3.0.0.tgz#d01d08d1e5ddc1633d82c7d84d48fff07bd39416"
Expand Down Expand Up @@ -2149,6 +2154,11 @@ dedent@^0.7.0:
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=

deep-diff@^0.3.5:
version "0.3.8"
resolved "https://registry.yarnpkg.com/deep-diff/-/deep-diff-0.3.8.tgz#c01de63efb0eec9798801d40c7e0dae25b582c84"
integrity sha1-wB3mPvsO7JeYgB1Ax+Da4ltYLIQ=

deep-extend@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
Expand Down Expand Up @@ -5825,6 +5835,18 @@ react-navigation@^4.0.10:
"@react-navigation/core" "^3.5.1"
"@react-navigation/native" "^3.6.2"

react-redux@^7.1.3:
version "7.1.3"
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.1.3.tgz#717a3d7bbe3a1b2d535c94885ce04cdc5a33fc79"
integrity sha512-uI1wca+ECG9RoVkWQFF4jDMqmaw0/qnvaSvOoL/GA4dNxf6LoV8sUAcNDvE5NWKs4hFpn0t6wswNQnY3f7HT3w==
dependencies:
"@babel/runtime" "^7.5.5"
hoist-non-react-statics "^3.3.0"
invariant "^2.2.4"
loose-envify "^1.4.0"
prop-types "^15.7.2"
react-is "^16.9.0"

react-refresh@^0.4.0:
version "0.4.2"
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.2.tgz#54a277a6caaac2803d88f1d6f13c1dcfbd81e334"
Expand Down Expand Up @@ -5913,6 +5935,31 @@ realpath-native@^1.1.0:
dependencies:
util.promisify "^1.0.0"

redux-logger@^3.0.6:
version "3.0.6"
resolved "https://registry.yarnpkg.com/redux-logger/-/redux-logger-3.0.6.tgz#f7555966f3098f3c88604c449cf0baf5778274bf"
integrity sha1-91VZZvMJjzyIYExEnPC69XeCdL8=
dependencies:
deep-diff "^0.3.5"

redux-persist@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-6.0.0.tgz#b4d2972f9859597c130d40d4b146fecdab51b3a8"
integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==

redux-thunk@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622"
integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==

redux@^4.0.4:
version "4.0.4"
resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.4.tgz#4ee1aeb164b63d6a1bcc57ae4aa0b6e6fa7a3796"
integrity sha512-vKv4WdiJxOWKxK0yRoaK3Y4pxxB0ilzVx6dszU2W8wLxlb2yikRph4iV/ymtdJ6ZxpBLFbyrxklnT5yBbQSl3Q==
dependencies:
loose-envify "^1.4.0"
symbol-observable "^1.2.0"

regenerate-unicode-properties@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e"
Expand Down Expand Up @@ -6725,7 +6772,7 @@ symbol-observable@1.0.1:
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=

symbol-observable@^1.1.0:
symbol-observable@^1.1.0, symbol-observable@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
Expand Down

0 comments on commit 5983156

Please sign in to comment.