From 8d91654a322e55be3812485f03334fa60e7fc901 Mon Sep 17 00:00:00 2001 From: analuizaff Date: Fri, 10 Jun 2022 11:59:54 -0300 Subject: [PATCH] sending data offline --- src/App.js | 70 ++++++++++++++++-- src/app.json | 7 +- src/app/api/Ingestion/sendFormAnswer.js | 30 +++++--- src/app/assets/appLogo.png | Bin 0 -> 73868 bytes .../forms/AssembleIngestionObject.js | 25 +++++-- src/app/screens/AccountScreen.js | 2 +- src/app/screens/MapFeedScreen.js | 2 +- src/app/screens/MapFormScreen.js | 2 +- src/app/screens/PluviometerRegisterScreen.js | 2 +- .../screens/PluviometerSharingDataScreen.js | 10 ++- src/app/screens/RainSharingDataScreen.js | 53 ++++++++----- .../screens/RiverFloodSharingDataScreen.js | 17 ++++- src/app/screens/SharingDataScreen.js | 16 ++-- src/app/screens/SharingFloodZonesScreen.js | 21 ++++-- src/app/utility/cache.js | 39 +++++++++- src/eas.json | 18 +++++ 16 files changed, 242 insertions(+), 72 deletions(-) create mode 100644 src/app/assets/appLogo.png create mode 100644 src/eas.json diff --git a/src/App.js b/src/App.js index 2a81ae2..f3b8b7a 100644 --- a/src/App.js +++ b/src/App.js @@ -4,7 +4,10 @@ import { NavigationContainer } from "@react-navigation/native"; import navigationTheme from "./app/navigation/navigationTheme"; import "./app/config/globals.js"; import AppLoading from "expo-app-loading"; -import FlashMessage from "react-native-flash-message"; +import FlashMessage, { + showMessage, + hideMessage, +} from "react-native-flash-message"; import AppNavigator from "./app/navigation/AppNavigator"; import EventLocationProvider from "./app/context/EventLocationContext"; import CurrentLocationProvider from "./app/context/CurrentLocationContext"; @@ -17,22 +20,76 @@ import { useFiltering } from "./app/hooks/useFiltering"; import NoInternetConnectionScreen from "./app/screens/NoInternetConnectionScreen"; import NetInfo, { useNetInfo } from "@react-native-community/netinfo"; import getPluviometerStation from "./app/hooks/usePluviometricStation"; +import cache from "./app/utility/cache"; +import sendFormAnswer from "./app/api/Ingestion/sendFormAnswer"; +import { connect } from "formik"; +import colors from "./app/config/colors"; +import { dimensions } from "./app/config/dimensions"; export default function App() { const [user, setUser] = useState(); const [pluviometerStation, setPluviometerStation] = useState(undefined); const [isReady, setIsReady] = useState(); + const [isReconnected, setIsReconnected] = useState(true); const netInfo = useNetInfo(); + function notImplemented(color, message, duration, autoHide) { + showMessage({ + message: message, + autoHide: autoHide, + duration: duration, + type: "default", + backgroundColor: color, // background color + color: colors.black, // text color + textStyle: { + textAlign: "center", + alignSelf: "center", + fontSize: dimensions.text.default, + }, + }); + } + + useEffect(async () => { + if (netInfo.isInternetReachable) { + const cachedForms = await cache.get("sendforms"); + if (!isReconnected) { + notImplemented( + colors.greenWarning, + "Conexão à internet restabelecida", + 3000, + true + ); + setIsReconnected(true); + } + + if (cachedForms) { + const arrayForms = JSON.parse(cachedForms); + arrayForms.forEach(async (element) => { + const isSent = await sendFormAnswer( + element, + netInfo.isInternetReachable, + null + ); + + if (isSent.ok) { + cache.clear("sendforms"); + } + }); + } + } else { + notImplemented(colors.blueWarning, "Sem conexão à internet", null, false); + setIsReconnected(false); + } + }, [netInfo.isInternetReachable]); + useEffect(() => { if (user?.username != null) { if (pluviometerStation == undefined) { getPluviometerStation(user.id, setPluviometerStation); } authStorage.setUser(user); - } - else{ + } else { setPluviometerStation(undefined); } }, [user]); @@ -43,7 +100,6 @@ export default function App() { } }, [pluviometerStation]); - const restoreUser = async () => { const storageUser = await authStorage.getUser(); if (storageUser) setUser(storageUser); @@ -59,9 +115,11 @@ export default function App() { onError={(e) => console.log(e)} /> ); - } else { + } else { if (global.formsSockets === undefined) - global.formsSockets = useFiltering(global.location || global.defaultLocation); + global.formsSockets = useFiltering( + global.location || global.defaultLocation + ); return ( formArray.push(element)); + } + formArray.push(ingestionObject); + cache.store("sendforms", formArray); + return { ok: true }; + } +} export default sendFormAnswer; diff --git a/src/app/assets/appLogo.png b/src/app/assets/appLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..4bb1444755e76da4c7ee9e3ef21f25da79d4942a GIT binary patch literal 73868 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 Sending data: ${code} = ${situation} => ${moment().format('DD/MM, h:mm:ss:SSS')}`) + console.log( + `----> Sending data: ${code} = ${situation} => ${moment().format( + "DD/MM, h:mm:ss:SSS" + )}` + ); const ingestionObject = { responseData: { array_to_json: [ @@ -34,7 +40,7 @@ async function AssembleIngestionObject( }, }; - return sendFormAnswer(ingestionObject); + return sendFormAnswer(ingestionObject, connection, formName); } const AssembleIngestionPluviometer = async ({ pluviometer, @@ -43,9 +49,14 @@ const AssembleIngestionPluviometer = async ({ user, date, time, + connection, + formName, }) => { - - console.log(`----> Sending data: PLUVIOMETER_FORM = ${pluviometer} => ${moment().format('DD/MM, h:mm:ss:SSS')}`) + console.log( + `----> Sending data: PLUVIOMETER_FORM = ${pluviometer} => ${moment().format( + "DD/MM, h:mm:ss:SSS" + )}` + ); const pluviometerObject = { responseData: { array_to_json: [ @@ -68,8 +79,8 @@ const AssembleIngestionPluviometer = async ({ ], }, }; - - const a = await sendFormAnswer(pluviometerObject); + + const a = await sendFormAnswer(pluviometerObject, connection, formName); return a; }; diff --git a/src/app/screens/AccountScreen.js b/src/app/screens/AccountScreen.js index b2e190b..20a7416 100644 --- a/src/app/screens/AccountScreen.js +++ b/src/app/screens/AccountScreen.js @@ -191,7 +191,7 @@ function AccountScreen(props) { return ( - + {/* */} - + {/* */} { (global.location) ? ( { return street + number + district; } else { //Quando o usuário não da permissão de acesso da localização o geoCode retorna um array vazio - return "Erro ao carregar endereço"; + return "Não foi possível carregar endereço"; } }; diff --git a/src/app/screens/PluviometerRegisterScreen.js b/src/app/screens/PluviometerRegisterScreen.js index b675665..ff99255 100644 --- a/src/app/screens/PluviometerRegisterScreen.js +++ b/src/app/screens/PluviometerRegisterScreen.js @@ -73,7 +73,7 @@ function LocationPicker({ {pluviometer.address ? pluviometer.address - : "Erro ao carregar endereço"} + : "Não foi possível carregar endereço"} )} diff --git a/src/app/screens/PluviometerSharingDataScreen.js b/src/app/screens/PluviometerSharingDataScreen.js index 8a80543..99eed19 100644 --- a/src/app/screens/PluviometerSharingDataScreen.js +++ b/src/app/screens/PluviometerSharingDataScreen.js @@ -15,6 +15,7 @@ import { formcode } from "../components/forms/FormsCode"; import { AssembleIngestionPluviometer } from "../components/forms/AssembleIngestionObject"; import OnSubmitAwaitModal from "../components/forms/OnSubmitAwaitModal"; import OnSubmitMessageModal from "../components/forms/OnSubmitMessageModal"; +import { useNetInfo } from "@react-native-community/netinfo"; const dims = scaleDimsFromWidth(85, 85, 25); @@ -45,6 +46,9 @@ function PluviometerSharingDataScreen(props) { const [showMessageModal, setShowMessageModal] = useState(false); const [apiMessage, setApiMessage] = useState(null); + const connection = useNetInfo().isInternetReachable; + const formName = "pluviometer"; + const sendForm = async ({ pluviometer, description, @@ -52,6 +56,8 @@ function PluviometerSharingDataScreen(props) { user, date, time, + connection, + formName, }) => { const isSent = await AssembleIngestionPluviometer({ pluviometer, @@ -60,6 +66,8 @@ function PluviometerSharingDataScreen(props) { user, date, time, + connection, + formName, }); if (isSent) { setApiMessage(isSent.ok); @@ -86,7 +94,7 @@ function PluviometerSharingDataScreen(props) { }} onSubmit={(values) => { setShowAwaitModal(true); - sendForm({ ...values, user, date, time }).then((isSent) => { + sendForm({ ...values, user, date, time, connection, formName }).then((isSent) => { setShowAwaitModal(false); setShowMessageModal(true); }); diff --git a/src/app/screens/RainSharingDataScreen.js b/src/app/screens/RainSharingDataScreen.js index 69dae1d..31acbd8 100644 --- a/src/app/screens/RainSharingDataScreen.js +++ b/src/app/screens/RainSharingDataScreen.js @@ -10,7 +10,11 @@ import colors from "../config/colors"; import { TouchableNativeFeedback } from "react-native-gesture-handler"; import { insertRainData } from "../database/databaseLoader"; import { showMessage } from "react-native-flash-message"; -import { scaleDimsFromWidth, dimensions, screen_height } from "../config/dimensions"; +import { + scaleDimsFromWidth, + dimensions, + screen_height, +} from "../config/dimensions"; import assets from "../config/assets"; import moment from "moment"; import { EventLocationContext } from "../context/EventLocationContext"; @@ -21,6 +25,8 @@ import { formcode } from "../components/forms/FormsCode"; import OnSubmitAwaitModal from "../components/forms/OnSubmitAwaitModal"; import OnSubmitMessageModal from "../components/forms/OnSubmitMessageModal"; +import { useNetInfo } from "@react-native-community/netinfo"; + const validationSchema = Yup.object().shape({ images: Yup.array(), description: Yup.string().label("Description"), @@ -49,7 +55,12 @@ function RainSharingDataScreen(props) { const [showAwaitModal, setShowAwaitModal] = useState(false); const [showMessageModal, setShowMessageModal] = useState(false); const [apiMessage, setApiMessage] = useState(null); + + const connection = useNetInfo().isInternetReachable; + const formName = "rain"; + console.log(connection); + const sendForm = async ( { images, description }, user, @@ -58,17 +69,21 @@ function RainSharingDataScreen(props) { location, date, time, - address + address, + connection, + formName ) => { const isSent = await AssembleIngestionObject( - { images, description }, + { images, description, connection, formName }, user, situation, code, location, date, time, - address + address, + connection, + formName ); setApiMessage(isSent.ok); @@ -77,16 +92,14 @@ function RainSharingDataScreen(props) { return ( - - - + + +
{ - setShowAwaitModal(false); - setShowMessageModal(true)}); - + setShowAwaitModal(false); + setShowMessageModal(true); + }); }} validationSchema={validationSchema} > diff --git a/src/app/screens/RiverFloodSharingDataScreen.js b/src/app/screens/RiverFloodSharingDataScreen.js index 1091763..31a6ead 100644 --- a/src/app/screens/RiverFloodSharingDataScreen.js +++ b/src/app/screens/RiverFloodSharingDataScreen.js @@ -20,6 +20,7 @@ import { formcode } from "../components/forms/FormsCode"; import { AssembleIngestionObject } from "../components/forms/AssembleIngestionObject"; import OnSubmitMessageModal from "../components/forms/OnSubmitMessageModal"; import OnSubmitAwaitModal from "../components/forms/OnSubmitAwaitModal"; +import { useNetInfo } from "@react-native-community/netinfo"; const validationSchema = Yup.object().shape({ images: Yup.array(), @@ -35,6 +36,9 @@ function RiverFloodSharingDataScreen(props) { const context = useContext(EventLocationContext); + const connection = useNetInfo().isInternetReachable; + const formName = "riverFlood"; + useEffect(() => { context.defaultLocation(); }, []); @@ -58,7 +62,9 @@ function RiverFloodSharingDataScreen(props) { location, date, time, - address + address, + connection, + formName ) => { const isSent = await AssembleIngestionObject( { images, description }, @@ -68,7 +74,9 @@ function RiverFloodSharingDataScreen(props) { location, date, time, - address + address, + connection, + formName ); setApiMessage(isSent.ok); @@ -109,7 +117,9 @@ function RiverFloodSharingDataScreen(props) { location, date, time, - address + address, + connection, + formName ).then((isSent) => { setShowAwaitModal(false); setShowMessageModal(true); @@ -128,7 +138,6 @@ function RiverFloodSharingDataScreen(props) { flexDirection="row" justifyContent="center" paddingBottom={16} - > - - + + {/* */} navigation.navigate("FloodSharingData", { user: currentUser }) } - active={isRegistered && connection} + active={isRegistered} inactiveOnPress={() => setShowLog(true)} /> @@ -78,7 +74,7 @@ function SharingDataScreen({ navigation }) { navigation.navigate("RainSharingData", { user: currentUser }) } SvgImage={assets.rainLevel.RainIcon} - active={isRegistered && connection} + active={isRegistered} inactiveOnPress={() => setShowLog(true)} /> @@ -100,7 +96,7 @@ function SharingDataScreen({ navigation }) { }) } SvgImage={assets.PluviometricDataIcon} - active={isRegistered && pluviometer && connection} + active={isRegistered && pluviometer} inactiveOnPress={() => { setShowLog(!isRegistered), setShowLogPluv(!pluviometer && isRegistered); @@ -113,7 +109,7 @@ function SharingDataScreen({ navigation }) { navigation.navigate("RiverFloodData", { user: currentUser }) } SvgImage={assets.riverLevel.RiverIcon} - active={isRegistered && connection} + active={isRegistered} inactiveOnPress={() => setShowLog(true)} /> diff --git a/src/app/screens/SharingFloodZonesScreen.js b/src/app/screens/SharingFloodZonesScreen.js index e6b063a..8e2afb0 100644 --- a/src/app/screens/SharingFloodZonesScreen.js +++ b/src/app/screens/SharingFloodZonesScreen.js @@ -19,6 +19,7 @@ import { formcode } from "../components/forms/FormsCode"; import { AssembleIngestionObject } from "../components/forms/AssembleIngestionObject"; import OnSubmitAwaitModal from "../components/forms/OnSubmitAwaitModal"; import OnSubmitMessageModal from "../components/forms/OnSubmitMessageModal"; +import { useNetInfo } from "@react-native-community/netinfo"; const validationSchema = Yup.object().shape({ images: Yup.array(), @@ -39,6 +40,9 @@ function SharingFloodZonesScreen(props) { const context = useContext(EventLocationContext); const address = context.eventLocation; + const connection = useNetInfo().isInternetReachable; + const formName = "floodZones"; + useEffect(() => { context.defaultLocation(); }, []); @@ -56,7 +60,9 @@ function SharingFloodZonesScreen(props) { location, date, time, - address + address, + connection, + formName ) => { const isSent = await AssembleIngestionObject( { images, description }, @@ -66,17 +72,18 @@ function SharingFloodZonesScreen(props) { location, date, time, - address + address, + connection, + formName ); setApiMessage(isSent.ok); return apiMessage; }; - return ( - + { setShowAwaitModal(false); setShowMessageModal(true); - }); + }); }} validationSchema={validationSchema} > diff --git a/src/app/utility/cache.js b/src/app/utility/cache.js index 61a1a2d..952728c 100644 --- a/src/app/utility/cache.js +++ b/src/app/utility/cache.js @@ -10,9 +10,11 @@ const store = async (key, value) => { value, timestamp: Date.now(), }; - await AsyncStorage.setItem(prefix + key, JSON.stringify(value)); - } catch (error) {} + // return true; + } catch (error) { + // return false; + } }; const isExpired = (item) => { @@ -20,6 +22,15 @@ const isExpired = (item) => { const storedTime = moment(item.timestamp); return now.diff(storedTime, "minutes") > expiryInMinutes; }; +const clear = async (key) => { + try { + await AsyncStorage.removeItem(prefix + key); + return true; + } catch (error) { + console.log(error); + return false; + } +}; const get = async (key) => { try { @@ -34,10 +45,34 @@ const get = async (key) => { return value; } catch (error) { console.log(error); + return null; } }; +const merge = async (key) => { + try { + await AsyncStorage.mergeItem(prefix + key, JSON.stringify(value)); + } catch (error) {} +}; + +const getAllKeys = async () => { + let keys = []; + try { + keys = await AsyncStorage.getAllKeys(); + return keys; + } catch (e) { + console.log(e); + } + + // console.log(keys) + // example console.log result: + // ['@MyApp_user', '@MyApp_key'] +}; + export default { store, get, + merge, + clear, + getAllKeys, }; diff --git a/src/eas.json b/src/eas.json new file mode 100644 index 0000000..6355467 --- /dev/null +++ b/src/eas.json @@ -0,0 +1,18 @@ +{ + "cli": { + "version": ">= 0.40.0" + }, + "build": { + "development": { + "developmentClient": true, + "distribution": "internal" + }, + "preview": { + "distribution": "internal" + }, + "production": {} + }, + "submit": { + "production": {} + } +}