From fcb0fe5aaa28de10aa8e8376f60afb9545081e04 Mon Sep 17 00:00:00 2001 From: Rakesh Medpalli Date: Fri, 30 Aug 2019 15:58:11 +0530 Subject: [PATCH 1/2] Code structure added --- EXPO/.expo/packager-info.json | 12 +- EXPO/package-lock.json | 15 +++ EXPO/package.json | 2 + EXPO/screens/HomeScreen.js | 139 +++++++++++++------- EXPO/src/local-database/database-manager.js | 32 +++++ EXPO/src/network/api-constant.js | 6 + EXPO/src/network/api-header-constant.js | 5 + EXPO/src/network/network-manager.js | 21 +++ EXPO/src/utils/colors-constants.js | 11 ++ EXPO/src/utils/string-constant.js | 9 ++ EXPO/src/utils/utility.js | 21 +++ 11 files changed, 216 insertions(+), 57 deletions(-) create mode 100644 EXPO/src/local-database/database-manager.js create mode 100644 EXPO/src/network/api-constant.js create mode 100644 EXPO/src/network/api-header-constant.js create mode 100644 EXPO/src/network/network-manager.js create mode 100644 EXPO/src/utils/colors-constants.js create mode 100644 EXPO/src/utils/string-constant.js create mode 100644 EXPO/src/utils/utility.js diff --git a/EXPO/.expo/packager-info.json b/EXPO/.expo/packager-info.json index ca20b5e..7391ba7 100644 --- a/EXPO/.expo/packager-info.json +++ b/EXPO/.expo/packager-info.json @@ -1,9 +1,9 @@ { "devToolsPort": 19002, - "expoServerPort": 19000, - "packagerPort": 19001, - "packagerPid": 71365, - "expoServerNgrokUrl": "https://qq-bic.webo.expo.exp.direct", - "packagerNgrokUrl": "https://packager.qq-bic.webo.expo.exp.direct", - "ngrokPid": 71379 + "expoServerPort": null, + "packagerPort": null, + "packagerPid": null, + "expoServerNgrokUrl": null, + "packagerNgrokUrl": null, + "ngrokPid": null } \ No newline at end of file diff --git a/EXPO/package-lock.json b/EXPO/package-lock.json index cbe729d..c155bcd 100644 --- a/EXPO/package-lock.json +++ b/EXPO/package-lock.json @@ -3496,6 +3496,21 @@ "expo-permissions-interface": "~2.0.0" } }, + "expo-sqlite": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/expo-sqlite/-/expo-sqlite-6.0.0.tgz", + "integrity": "sha512-M8heovLeJoq7tb4f7PipDu0dqHSklbI2EqNvDM8XLjSZdSv6CqCMHg5Kvx0L9CLYTchjzktDPClZKjgvtGOVug==", + "requires": { + "@expo/websql": "^1.0.1", + "@types/websql": "^0.0.27", + "lodash": "^4.17.11" + } + }, + "expo-sqlite-orm": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/expo-sqlite-orm/-/expo-sqlite-orm-1.5.1.tgz", + "integrity": "sha512-wRi6eB9arwICqVQXzY4zZVATUJtrRR9iT9Lbb3cBZKY1vQUz95FaUpubP55aDw+irMD7iqO8H5jpeec5iKgKwA==" + }, "expo-task-manager": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/expo-task-manager/-/expo-task-manager-1.0.0.tgz", diff --git a/EXPO/package.json b/EXPO/package.json index 0c3b6c2..429682e 100644 --- a/EXPO/package.json +++ b/EXPO/package.json @@ -13,6 +13,8 @@ "dependencies": { "@expo/samples": "2.1.1", "expo": "^32.0.0", + "expo-sqlite": "^6.0.0", + "expo-sqlite-orm": "^1.5.1", "react": "16.5.0", "react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz", "react-navigation": "^3.0.9" diff --git a/EXPO/screens/HomeScreen.js b/EXPO/screens/HomeScreen.js index 0d3548e..467ec74 100644 --- a/EXPO/screens/HomeScreen.js +++ b/EXPO/screens/HomeScreen.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React from "react"; import { Image, Platform, @@ -6,27 +6,47 @@ import { StyleSheet, Text, TouchableOpacity, - View, -} from 'react-native'; -import { WebBrowser } from 'expo'; + View +} from "react-native"; +import { WebBrowser } from "expo"; -import { MonoText } from '../components/StyledText'; +import { MonoText } from "../components/StyledText"; +import NetworkManager from "../src/network/network-manager"; export default class HomeScreen extends React.Component { static navigationOptions = { - header: null, + header: null }; + componentDidMount() { + this.callAPI(); + } + callAPI() { + NetworkManager.requestGET("https://reqres.in/api/users/?page=1") + .then(response => { + if (response.status === 200) { + console.log("Success" + JSON.stringify(response)); + } else { + console.log("failed" + JSON.stringify(response)); + } + }) + .catch(error => { + console.log("Error" + error); + }); + } render() { return ( - + @@ -37,8 +57,12 @@ export default class HomeScreen extends React.Component { Get started by opening - - screens/HomeScreen.js + + + screens/HomeScreen.js + @@ -47,17 +71,28 @@ export default class HomeScreen extends React.Component { - - Help, it didn’t automatically reload! + + + Help, it didn’t automatically reload! + - This is a tab bar. You can edit it in: + + This is a tab bar. You can edit it in: + - - navigation/MainTabNavigator.js + + + navigation/MainTabNavigator.js + @@ -74,8 +109,8 @@ export default class HomeScreen extends React.Component { return ( - Development mode is enabled, your app will be slower but you can use useful development - tools. {learnMoreButton} + Development mode is enabled, your app will be slower but you can use + useful development tools. {learnMoreButton} ); } else { @@ -88,12 +123,14 @@ export default class HomeScreen extends React.Component { } _handleLearnMorePress = () => { - WebBrowser.openBrowserAsync('https://docs.expo.io/versions/latest/guides/development-mode'); + WebBrowser.openBrowserAsync( + "https://docs.expo.io/versions/latest/guides/development-mode" + ); }; _handleHelpPress = () => { WebBrowser.openBrowserAsync( - 'https://docs.expo.io/versions/latest/guides/up-and-running.html#can-t-see-your-changes' + "https://docs.expo.io/versions/latest/guides/up-and-running.html#can-t-see-your-changes" ); }; } @@ -101,88 +138,88 @@ export default class HomeScreen extends React.Component { const styles = StyleSheet.create({ container: { flex: 1, - backgroundColor: '#fff', + backgroundColor: "#fff" }, developmentModeText: { marginBottom: 20, - color: 'rgba(0,0,0,0.4)', + color: "rgba(0,0,0,0.4)", fontSize: 14, lineHeight: 19, - textAlign: 'center', + textAlign: "center" }, contentContainer: { - paddingTop: 30, + paddingTop: 30 }, welcomeContainer: { - alignItems: 'center', + alignItems: "center", marginTop: 10, - marginBottom: 20, + marginBottom: 20 }, welcomeImage: { width: 100, height: 80, - resizeMode: 'contain', + resizeMode: "contain", marginTop: 3, - marginLeft: -10, + marginLeft: -10 }, getStartedContainer: { - alignItems: 'center', - marginHorizontal: 50, + alignItems: "center", + marginHorizontal: 50 }, homeScreenFilename: { - marginVertical: 7, + marginVertical: 7 }, codeHighlightText: { - color: 'rgba(96,100,109, 0.8)', + color: "rgba(96,100,109, 0.8)" }, codeHighlightContainer: { - backgroundColor: 'rgba(0,0,0,0.05)', + backgroundColor: "rgba(0,0,0,0.05)", borderRadius: 3, - paddingHorizontal: 4, + paddingHorizontal: 4 }, getStartedText: { fontSize: 17, - color: 'rgba(96,100,109, 1)', + color: "rgba(96,100,109, 1)", lineHeight: 24, - textAlign: 'center', + textAlign: "center" }, tabBarInfoContainer: { - position: 'absolute', + position: "absolute", bottom: 0, left: 0, right: 0, ...Platform.select({ ios: { - shadowColor: 'black', + shadowColor: "black", shadowOffset: { height: -3 }, shadowOpacity: 0.1, - shadowRadius: 3, + shadowRadius: 3 }, android: { - elevation: 20, - }, + elevation: 20 + } }), - alignItems: 'center', - backgroundColor: '#fbfbfb', - paddingVertical: 20, + alignItems: "center", + backgroundColor: "#fbfbfb", + paddingVertical: 20 }, tabBarInfoText: { fontSize: 17, - color: 'rgba(96,100,109, 1)', - textAlign: 'center', + color: "rgba(96,100,109, 1)", + textAlign: "center" }, navigationFilename: { - marginTop: 5, + marginTop: 5 }, helpContainer: { marginTop: 15, - alignItems: 'center', + alignItems: "center" }, helpLink: { - paddingVertical: 15, + paddingVertical: 15 }, helpLinkText: { fontSize: 14, - color: '#2e78b7', - }, + color: "#2e78b7" + } }); diff --git a/EXPO/src/local-database/database-manager.js b/EXPO/src/local-database/database-manager.js new file mode 100644 index 0000000..3827a49 --- /dev/null +++ b/EXPO/src/local-database/database-manager.js @@ -0,0 +1,32 @@ +import { SQLite } from "expo-sqlite"; +import { BaseModel, types } from "expo-sqlite-orm"; +import { DB_CONSTANTS } from "../utils/string-constant"; + +export default class DatabaseManager extends BaseModel { + constructor(obj) { + super(obj); + } + + static get database() { + return async () => SQLite.openDatabase(DB_CONSTANTS.DB_NAME); + } + + static get tableName() { + return DB_CONSTANTS.TABLE_NAME; + } + + static get columnMapping() { + return { + id: { type: types.INTEGER, primary_key: true }, + title: { type: types.TEXT, not_null: true }, + description: { type: types.TEXT }, + timestamp: { type: types.INTEGER, default: () => Date.now() } + }; + } + + static fetchRecords(query) { + return query(options); + } +} + +//Reference - https://www.npmjs.com/package/expo-sqlite-orm/v/1.4.1 diff --git a/EXPO/src/network/api-constant.js b/EXPO/src/network/api-constant.js new file mode 100644 index 0000000..ebd81d6 --- /dev/null +++ b/EXPO/src/network/api-constant.js @@ -0,0 +1,6 @@ +export const APIConst = { + BaseURL: "https://google.com", + URNConst: { + ShorURN: "/test" + } +}; diff --git a/EXPO/src/network/api-header-constant.js b/EXPO/src/network/api-header-constant.js new file mode 100644 index 0000000..854a37b --- /dev/null +++ b/EXPO/src/network/api-header-constant.js @@ -0,0 +1,5 @@ +export const Headers = { + Accept: 'application/json', + 'Content-Type': 'application/json', + }; + \ No newline at end of file diff --git a/EXPO/src/network/network-manager.js b/EXPO/src/network/network-manager.js new file mode 100644 index 0000000..d7832f7 --- /dev/null +++ b/EXPO/src/network/network-manager.js @@ -0,0 +1,21 @@ +import { Headers } from "./api-header-constant"; + +export default class NetworkManager { + static requestGET(url) { + return fetch(url); + } + + static requestPOST(url, body, headers = Headers) { + return fetch(url, { + method: "POST", + headers: headers, + body: JSON.stringify(body) + }); + } + + static requestHEAD(url) { + return fetch(url, { + method: "HEAD" + }); + } +} diff --git a/EXPO/src/utils/colors-constants.js b/EXPO/src/utils/colors-constants.js new file mode 100644 index 0000000..d1ceb08 --- /dev/null +++ b/EXPO/src/utils/colors-constants.js @@ -0,0 +1,11 @@ +const COLORS = { + tintColor: "#fff", + backgroundColor: "rgba(255,255,255,0.8)", + progressColor: "rgba(0, 100, 251,0.8)", + tabDefaultColor: "#969292", + topNavigationColor: "black", + grayColor: "rgba(148,148,148,0.8)", + blueColor: "rgba(0, 100, 251,0.8)" +}; + +export default COLORS; diff --git a/EXPO/src/utils/string-constant.js b/EXPO/src/utils/string-constant.js new file mode 100644 index 0000000..5b962d4 --- /dev/null +++ b/EXPO/src/utils/string-constant.js @@ -0,0 +1,9 @@ +export const STRING_CONSTANTS = { + OK_MSG: "Ok", + IOS: "ios" +}; + +export const DB_CONSTANTS = { + DB_NAME: "DatabaseName.db", + TABLE_NAME: "TableName" +}; diff --git a/EXPO/src/utils/utility.js b/EXPO/src/utils/utility.js new file mode 100644 index 0000000..4cbb4b3 --- /dev/null +++ b/EXPO/src/utils/utility.js @@ -0,0 +1,21 @@ +import { Platform, Alert } from "react-native"; +import { STRING_CONSTANTS } from "./string-constant"; + +export default class Utility { + static isIOS() { + return Platform.OS === STRING_CONSTANTS.IOS; + } + static showAlertWithMessage(title, message, navigation = false) { + Alert.alert( + title, + message, + [ + { + text: STRING_CONSTANTS.OK_MSG, + onPress: () => console.log("Ok pressed") + } + ], + { cancelable: false } + ); + } +} From a235f07b6529a6dbcb8ab2e401ee912c0df3a9dd Mon Sep 17 00:00:00 2001 From: Rakesh Medpalli Date: Tue, 3 Sep 2019 18:05:40 +0530 Subject: [PATCH 2/2] Removed Example code --- EXPO/screens/HomeScreen.js | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/EXPO/screens/HomeScreen.js b/EXPO/screens/HomeScreen.js index 467ec74..bb64d55 100644 --- a/EXPO/screens/HomeScreen.js +++ b/EXPO/screens/HomeScreen.js @@ -17,23 +17,6 @@ export default class HomeScreen extends React.Component { static navigationOptions = { header: null }; - componentDidMount() { - this.callAPI(); - } - - callAPI() { - NetworkManager.requestGET("https://reqres.in/api/users/?page=1") - .then(response => { - if (response.status === 200) { - console.log("Success" + JSON.stringify(response)); - } else { - console.log("failed" + JSON.stringify(response)); - } - }) - .catch(error => { - console.log("Error" + error); - }); - } render() { return (