master
!Root 2022-03-03 19:23:01 +03:30
parent 668258b342
commit 1660d02935
15 changed files with 144 additions and 245 deletions

View File

@ -9,12 +9,12 @@ import com.facebook.react.ReactApplication;
import com.zoontek.rnpermissions.RNPermissionsPackage;
import com.github.wumke.RNImmediatePhoneCall.RNImmediatePhoneCallPackage;
import in.sriraman.sharedpreferences.RNSharedPreferencesReactPackage;
import com.github.amarcruz.rnlog.RNLogPackage;
import com.wix.reactnativenotifications.RNNotificationsPackage;
import com.react.SmsPackage;
// import com.github.amarcruz.rnlog.RNLogPackage;
// import com.wix.reactnativenotifications.RNNotificationsPackage;
// import com.react.SmsPackage;
import com.oblador.vectoricons.VectorIconsPackage;
import com.reactnativecommunity.asyncstorage.AsyncStoragePackage;
import com.centaurwarchief.smslistener.SmsListenerPackage;
// import com.centaurwarchief.smslistener.SmsListenerPackage;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;

View File

@ -4,31 +4,13 @@ project(':react-native-permissions').projectDir = new File(rootProject.projectDi
include ':react-native-immediate-phone-call'
project(':react-native-immediate-phone-call').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-immediate-phone-call/android')
include ':react-native-shared-preferences'
project(':react-native-shared-preferences').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-shared-preferences/android')
include ':react-native-android-log'
project(':react-native-android-log').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-android-log/android')
include ':react-native-background-job'
project(':react-native-background-job').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-background-job/android')
include ':react-native-endless-background-service-without-notification'
project(':react-native-endless-background-service-without-notification').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-endless-background-service-without-notification/android')
include ':react-native-background-job'
project(':react-native-background-job').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-background-job/android')
include ':react-native-notifications'
project(':react-native-notifications').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-notifications/lib/android/app')
include ':@voximplant_react-native-foreground-service'
project(':@voximplant_react-native-foreground-service').projectDir = new File(rootProject.projectDir, '../node_modules/@voximplant/react-native-foreground-service/android')
include ':react-native-background-job'
project(':react-native-background-job').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-background-job/android')
include ':react-native-get-sms-android-v2'
project(':react-native-get-sms-android-v2').projectDir = new File(rootProject.projectDir, '../src/module/sms/android')
include ':react-native-vector-icons'
project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android')
include ':react-native-sms-android'
project(':react-native-sms-android').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-sms-android/android')
include ':@react-native-async-storage_async-storage'
project(':@react-native-async-storage_async-storage').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-async-storage/async-storage/android')
include ':react-native-sms-android'
project(':react-native-sms-android').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-sms-android/android')
project(':react-native-shared-preferences').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-shared-preferences/android')
include ':react-native-get-sms-android-v2'
project(':react-native-get-sms-android-v2').projectDir = new File(rootProject.projectDir, '../src/module/sms/android')
include ':react-native-android-sms-listener'
project(':react-native-android-sms-listener').projectDir = new File(rootProject.projectDir, '../src/module/sms-listener/android')
apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)

View File

@ -2,14 +2,22 @@
* @format
*/
import React, { useEffect, useState } from 'react';
import { AppRegistry, I18nManager, Text as RNText, StatusBar, BackHandler, View } from 'react-native';
import {
AppRegistry,
I18nManager,
Text as RNText,
StatusBar,
BackHandler,
View,
ToastAndroid,
} from 'react-native';
import { name as appName } from './app.json';
import { App } from './src/App';
// redux
import { Provider as ReduxProvider } from 'react-redux';
import { ReduxStore } from './src/provider/store';
// core
import { usePermissionReadSMS, usePermissionSendSMS } from './src/core/permission';
import { usePermissionReadSMS, usePermissionReceiveSMS, usePermissionSendSMS } from './src/core/permission';
// material
import { Provider as PaperProvider, Button, Text } from 'react-native-paper';
import { Theme } from './src/core/theme';
@ -19,29 +27,39 @@ RNText.defaultProps.style = { fontFamily: 'font' };
import { NavigationContainer } from '@react-navigation/native';
import Log from 'react-native-android-log';
Log.setLevel(Log.VERBOSE);
const Index = () => {
I18nManager.forceRTL(true);
const [ready, setReady] = useState(false);
useEffect(() => {
console.log('Asking permissions');
ask();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
const ask = () => {
usePermissionReadSMS()
.then((value) => {
if (value) return usePermissionSendSMS();
else BackHandler.exitApp();
else kill();
})
.then((value) => {
if (value) return usePermissionReceiveSMS();
else kill();
})
.then((value) => {
if (value) setReady(true);
else BackHandler.exitApp();
else kill();
});
};
const kill = () => {
console.error('index.js/kill');
BackHandler.exitApp();
ToastAndroid.show('دسترسی ها داده نشده است.', 3000);
};
const Waiting = () => (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center', padding: 30 }}>
<Text style={{ fontSize: 20, textAlign: 'center' }}>در انتظار ارائه دادن دسترسی ها</Text>

View File

@ -18,17 +18,11 @@
"babel-plugin-require-context-hook": "^1.0.0",
"react": "17.0.2",
"react-native": "0.67.3",
"react-native-android-log": "^1.1.0",
"react-native-android-sms-listener": "^0.8.0",
"react-native-get-sms-android-v2": "^2.1.0",
"react-native-immediate-phone-call": "^2.0.0",
"react-native-notifications": "^4.2.2",
"react-native-pager-view": "^5.4.11",
"react-native-paper": "^4.11.2",
"react-native-permissions": "^3.3.0",
"react-native-shared-preferences": "^1.0.2",
"react-native-snap-carousel": "^3.9.1",
"react-native-swiper-flatlist": "^3.0.16",
"react-native-tab-view": "^3.1.1",
"react-native-vector-icons": "^9.1.0",
"react-redux": "^7.2.6",

View File

@ -1,5 +1,5 @@
import React, { useEffect } from 'react';
import { View } from 'react-native';
import { View, ToastAndroid } from 'react-native';
// material
import { Text } from 'react-native-paper';
import { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';
@ -22,12 +22,11 @@ const Tab = createMaterialTopTabNavigator();
export const App = () => {
const [devices, setDevices] = useDeviceList();
const [deviceActive, setDeviceActive] = useDeviceActive();
const [, setReports] = useReports();
const [, setSelectedReport] = useSelectedReport();
const [reports, setReports] = useReports();
const [selectedReport, setSelectedReport] = useSelectedReport();
useEffect(() => {
onInit();
onForground();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
@ -40,28 +39,70 @@ export const App = () => {
const onInit = async () => {
try {
// load data from storage
const [DeviceList, DeviceActive] = await Promise.all([
const [_deviceList, _deviceActive] = await Promise.all([
Storage.ListDevice(),
Storage.GetDeviceActive(),
]);
// set devices or java via shared
const _str_devices = useDevicesAsString(DeviceList);
const _str_devices = useDevicesAsString(_deviceList);
Shared.SendDevices(_str_devices);
// set devices to redux
setDevices(DeviceList);
setDevices(_deviceList);
// set device active to redux
setDeviceActive(DeviceActive);
setDeviceActive(_deviceActive);
setTimeout(() => {
console.log(`Selected device is : ${deviceActive}/${_deviceActive}`);
// start forground service
onForground();
}, 0);
} catch (error) {
console.error('App.js/onInit');
console.error(error);
}
};
const onForground = async () => {
console.log('forground/1');
useSMSListener((message) => {
console.log(message.originatingAddress);
});
try {
console.log('forground/start');
useSMSListener((message) => {
setTimeout(async () => {
try {
// load data from storage
const [_deviceList, _deviceActive] = await Promise.all([
Storage.ListDevice(),
Storage.GetDeviceActive(),
]);
console.log('forground/recived'); // if active device availabe fetch data fro sms
console.log(_deviceActive);
if (_deviceActive !== -1) {
console.log('We have an active device');
// if sent message was for active device
if (message.originatingAddress === _deviceList[_deviceActive].phone) {
console.log('We have a new report');
const _data = useSMSData(message.body); // convert string sms data to readable report data
let _reports = [_data].concat(reports); // push to first index
setReports(_reports);
if (selectedReport !== -1) {
// inc selected report
let _selectedReport = selectedReport;
_selectedReport += 1;
setSelectedReport(_selectedReport);
} else {
setSelectedReport(0);
}
ToastAndroid.show('گزارش جدید دریافت و اضافه شد', 3000);
}
}
} catch (error) {
console.error('App.js/onForground');
console.error(error);
}
}, 0);
});
} catch (error) {
console.error('App.js/onForground');
console.error(error);
}
};
const onActiveDeviceChange = async () => {
@ -81,9 +122,11 @@ export const App = () => {
}
setReports(_reports.reverse());
setSelectedReport(0); // select last report as selected report
ToastAndroid.show('گزارشات با موفقیت خوانده شدند.', 3000);
}
}
} catch (error) {
console.error('App.js/onActiveDevuceChange');
console.error(error);
}
};

View File

@ -1,5 +1,3 @@
export * from './appbar';
export * from './selection';
export * from './slideitem';
export * from './slider';
export * from './view';

View File

@ -1,38 +0,0 @@
import React from 'react';
import { TouchableHighlight, StyleSheet } from 'react-native';
import { Text, useTheme } from 'react-native-paper';
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
export const SlideItem = ({ icon, label }) => {
const { colors } = useTheme();
return (
<TouchableHighlight onPress={undefined} style={[styles.item, { backgroundColor: colors.primary }]}>
<>
<MaterialCommunityIcons name={icon} size={46} color="#000000" />
<Text style={styles.label}>{label}</Text>
</>
</TouchableHighlight>
);
};
const styles = StyleSheet.create({
item: {
flexDirection: 'column',
alignItems: 'center',
justifyContent: 'center',
paddingHorizontal: 24,
paddingVertical: 32,
borderRadius: 50,
borderWidth: 5,
borderColor: '#000',
width: 120,
overflow: 'hidden',
},
label: {
marginTop: 20,
color: '#000000',
fontFamily: 'font-bold',
fontSize: 16,
},
});

View File

@ -1,19 +0,0 @@
import React from 'react';
import { View, Dimensions } from 'react-native';
import Carousel from 'react-native-snap-carousel';
import { SlideItem } from './slideitem';
import { Slides } from '../database/slides';
const { width } = Dimensions.get('window');
export const Slider = ({ onChange }) => (
<View style={{ marginVertical: 30 }}>
<Carousel
onSnapToItem={onChange}
sliderWidth={width}
itemWidth={130}
data={Slides}
renderItem={({ item }) => <SlideItem {...item} />}
/>
</View>
);

View File

@ -6,26 +6,31 @@ const dyanmic = require('../dynamic.json');
* @returns {{status: boolean, icon: any, label: string}[]}
*/
export const useDyanmic = (report) => {
let output = [];
try {
let output = [];
for (let item of report.data) {
let config = getDynamicByKey(item.key);
if (config) {
let _output = {
status: item.status,
icon: '',
label: config.translate,
};
for (let item of report.data) {
let config = getDynamicByKey(item.key);
if (config) {
let _output = {
status: item.status,
icon: '',
label: config.translate,
};
if (config.type === 'icon') {
_output.icon = item.status ? config.iconok : config.iconerr;
}
if (config.type === 'icon') {
_output.icon = item.status ? config.iconok : config.iconerr;
output.push(_output);
}
output.push(_output);
}
}
return output;
return output;
} catch (error) {
console.error('Dynamic.js');
console.error(error);
return [];
}
};
/**

View File

@ -11,8 +11,8 @@ export const usePermissionReadSMS = async () => {
});
return granted === PermissionsAndroid.RESULTS.GRANTED;
} catch (err) {
console.warn(err);
return false
console.error(err);
return false;
}
};
@ -27,7 +27,23 @@ export const usePermissionSendSMS = async () => {
});
return granted === PermissionsAndroid.RESULTS.GRANTED;
} catch (err) {
console.warn(err);
return false;
console.error(err);
return false;
}
};
export const usePermissionReceiveSMS = async () => {
try {
const granted = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.RECEIVE_SMS, {
title: 'آلارم هوشمند',
message: 'ما نیازمند دسترسی به دریافت پیامک هستیم.',
buttonNeutral: 'خروج',
buttonNegative: 'لغو',
buttonPositive: 'تایید',
});
return granted === PermissionsAndroid.RESULTS.GRANTED;
} catch (err) {
console.error(err);
return false;
}
};

View File

@ -10,7 +10,12 @@ class CShared {
* @param {string} devices list of devices as string
*/
SendDevices(devices) {
SharedPreferences.setItem('devices', devices);
try {
SharedPreferences.setItem('devices', devices);
} catch (error) {
console.error('share.js');
console.error(error);
}
}
}

View File

@ -55,12 +55,12 @@ public class SmsListenerModule extends ReactContextBaseJavaModule implements Lif
@Override
public void onHostPause() {
// unregisterReceiver(mReceiver);
unregisterReceiver(mReceiver);
}
@Override
public void onHostDestroy() {
// unregisterReceiver(mReceiver);
unregisterReceiver(mReceiver);
}
@Override

View File

@ -18,7 +18,7 @@ export const useDeviceList = () => {
/**
* use device active to get and set active device index state
* @returns {number, (index: number): void}
* @returns {[number, (index: number)=> void]}
*/
export const useDeviceActive = () => {
const dispatch = useDispatch();

View File

@ -13,6 +13,7 @@ export const ReduxDeviceSlice = createSlice({
reducers: {
setActive: (state, action) => {
state.active = action.payload;
console.log('redux/active => ' + state.active);
},
setList: (state, action) => {
state.list = action.payload;

118
yarn.lock
View File

@ -1702,7 +1702,7 @@ array.prototype.flatmap@^1.2.5:
define-properties "^1.1.3"
es-abstract "^1.19.0"
asap@~2.0.3, asap@~2.0.6:
asap@~2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
@ -2329,11 +2329,6 @@ core-js-compat@^3.21.0:
browserslist "^4.19.1"
semver "7.0.0"
core-js@^1.0.0:
version "1.2.7"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
core-util-is@~1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
@ -2571,13 +2566,6 @@ encodeurl@~1.0.2:
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
encoding@^0.1.11:
version "0.1.13"
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
dependencies:
iconv-lite "^0.6.2"
end-of-stream@^1.1.0:
version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
@ -3003,19 +2991,6 @@ fb-watchman@^2.0.0:
dependencies:
bser "2.1.1"
fbjs@^0.8.4:
version "0.8.18"
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.18.tgz#9835e0addb9aca2eff53295cd79ca1cfc7c9662a"
integrity sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==
dependencies:
core-js "^1.0.0"
isomorphic-fetch "^2.1.1"
loose-envify "^1.0.0"
object-assign "^4.1.0"
promise "^7.1.1"
setimmediate "^1.0.5"
ua-parser-js "^0.7.30"
file-entry-cache@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
@ -3422,13 +3397,6 @@ iconv-lite@0.4.24:
dependencies:
safer-buffer ">= 2.1.2 < 3"
iconv-lite@^0.6.2:
version "0.6.3"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
ignore@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
@ -3717,7 +3685,7 @@ is-shared-array-buffer@^1.0.1:
resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6"
integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==
is-stream@^1.0.1, is-stream@^1.1.0:
is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
@ -3792,14 +3760,6 @@ isobject@^3.0.0, isobject@^3.0.1:
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
isomorphic-fetch@^2.1.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=
dependencies:
node-fetch "^1.0.1"
whatwg-fetch ">=0.10.0"
istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3"
@ -4991,14 +4951,6 @@ node-dir@^0.1.17:
dependencies:
minimatch "^3.0.2"
node-fetch@^1.0.1:
version "1.7.3"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==
dependencies:
encoding "^0.1.11"
is-stream "^1.0.1"
node-fetch@^2.2.0, node-fetch@^2.6.0:
version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
@ -5084,7 +5036,7 @@ ob1@0.66.2:
resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.66.2.tgz#8caf548202cf2688944bae47db405a08bca17a61"
integrity sha512-RFewnL/RjE0qQBOuM+2bbY96zmJPIge/aDtsiDbLSb+MOiK8CReAhBHDgL+zrA3F1hQk00lMWpUwYcep750plA==
object-assign@^4.1.0, object-assign@^4.1.1:
object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
@ -5448,13 +5400,6 @@ progress@^2.0.0:
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
promise@^7.1.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==
dependencies:
asap "~2.0.3"
promise@^8.0.3:
version "8.1.0"
resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e"
@ -5470,7 +5415,7 @@ prompts@^2.0.1, prompts@^2.4.0:
kleur "^3.0.3"
sisteransi "^1.0.5"
prop-types@^15.6.1, prop-types@^15.7.2, prop-types@^15.8.1:
prop-types@^15.7.2, prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@ -5512,14 +5457,6 @@ range-parser@~1.2.1:
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
react-addons-shallow-compare@15.6.2:
version "15.6.2"
resolved "https://registry.yarnpkg.com/react-addons-shallow-compare/-/react-addons-shallow-compare-15.6.2.tgz#198a00b91fc37623db64a28fd17b596ba362702f"
integrity sha1-GYoAuR/DdiPbZKKP0XtZa6NicC8=
dependencies:
fbjs "^0.8.4"
object-assign "^4.1.0"
react-devtools-core@4.19.1:
version "4.19.1"
resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.19.1.tgz#bc37c2ef2f48f28c6af4c7292be9dca1b63deace"
@ -5547,16 +5484,6 @@ react-is@^16.13.0, react-is@^16.13.1, react-is@^16.7.0:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
react-native-android-log@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/react-native-android-log/-/react-native-android-log-1.1.0.tgz#44b3fb16d15ffc2cbc6155a365aae745e3bed21a"
integrity sha512-1b6i/9JjQGV23oZ2qT9L5nkNbGiwoe+d1xjUQxJpLekemGlBDnlBPA7LdfUqMEAgqM9EGGupbiKnP+xXA4UiKg==
react-native-android-sms-listener@^0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/react-native-android-sms-listener/-/react-native-android-sms-listener-0.8.0.tgz#3e69a642b32f8cbec1f28b2b477677b07e6ce89e"
integrity sha512-jRAsSjQFeJKTF5ljo67UMzpUUo4P3Doq2n/uyCrBg7MowXyIMY5ALwIzs72w6oalnXUnq9izvYXeU40vLFLz6Q==
react-native-codegen@^0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.0.8.tgz#b7796a54074139d956fff2862cf1285db43c891b"
@ -5566,11 +5493,6 @@ react-native-codegen@^0.0.8:
jscodeshift "^0.11.0"
nullthrows "^1.1.1"
react-native-get-sms-android-v2@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/react-native-get-sms-android-v2/-/react-native-get-sms-android-v2-2.1.0.tgz#80bfb0e3c40665d3b085c867c54c0b9364cd7821"
integrity sha512-zqSuyAcLA4Vh7Kr2zvUjD7/jOlggCVnl4uUaZFRa44nba9XU1XeGorB/38JYMlNNjJHCIlNiPhq213afYHCGWg==
react-native-immediate-phone-call@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/react-native-immediate-phone-call/-/react-native-immediate-phone-call-2.0.0.tgz#eb79431553188a36e8e9cbb6719c28cbb317ac86"
@ -5581,11 +5503,6 @@ react-native-iphone-x-helper@^1.3.1:
resolved "https://registry.yarnpkg.com/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz#20c603e9a0e765fd6f97396638bdeb0e5a60b010"
integrity sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg==
react-native-notifications@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/react-native-notifications/-/react-native-notifications-4.2.2.tgz#7bbafda0876328511726a2584ec5347919d0aa68"
integrity sha512-GvLI75KPDGBogzCrH0BE3g7oiUWRCZe30KFjAtzvLE7pg/OLvG8OKBHBqfhf97ITJcIvGhs/TrjfYUIslKVWEA==
react-native-pager-view@^5.4.11:
version "5.4.11"
resolved "https://registry.yarnpkg.com/react-native-pager-view/-/react-native-pager-view-5.4.11.tgz#677540293c7b4e0e022efb45727ef9b4efa35409"
@ -5610,19 +5527,6 @@ react-native-shared-preferences@^1.0.2:
resolved "https://registry.yarnpkg.com/react-native-shared-preferences/-/react-native-shared-preferences-1.0.2.tgz#952a02ab1e5418d48682cf1af96e2ee3fbf2a279"
integrity sha512-iLpHYE1kokUnPn9Y3Za301DkgDujjKMHKVUS9KOhHzIipc2mkzfFSo2bFAUYCfR2M4u0uZMpuVQviR19qypeHg==
react-native-snap-carousel@^3.9.1:
version "3.9.1"
resolved "https://registry.yarnpkg.com/react-native-snap-carousel/-/react-native-snap-carousel-3.9.1.tgz#6fd9bd8839546c2c6043a41d2035afbc6fe0443e"
integrity sha512-xWEGusacIgK1YaDXLi7Gao2+ISLoGPVEBR8fcMf4tOOJQufutlNwkoLu0l6B8Qgsrre0nTxoVZikRgGRDWlLaQ==
dependencies:
prop-types "^15.6.1"
react-addons-shallow-compare "15.6.2"
react-native-swiper-flatlist@^3.0.16:
version "3.0.16"
resolved "https://registry.yarnpkg.com/react-native-swiper-flatlist/-/react-native-swiper-flatlist-3.0.16.tgz#626770e36479793ace806888d84bbd2d0a496465"
integrity sha512-8Mkh5DnGP7x42GBI870vpiliAdXAJObi8uDdqCjd3cWJBDgVv1xmo3y11CZzqpf6241EyddX0LygSt1Rv61LYg==
react-native-tab-view@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-3.1.1.tgz#1f8d7a835ab4f5b1b1407ec8dddc1053b53fa3c6"
@ -5973,7 +5877,7 @@ safe-regex@^1.1.0:
dependencies:
ret "~0.1.10"
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
"safer-buffer@>= 2.1.2 < 3":
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
@ -6093,11 +5997,6 @@ set-value@^2.0.0, set-value@^2.0.1:
is-plain-object "^2.0.3"
split-string "^3.0.1"
setimmediate@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
setprototypeof@1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
@ -6682,11 +6581,6 @@ typedarray-to-buffer@^3.1.5:
dependencies:
is-typedarray "^1.0.0"
ua-parser-js@^0.7.30:
version "0.7.31"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6"
integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==
uglify-es@^3.1.9:
version "3.3.9"
resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677"
@ -6892,7 +6786,7 @@ whatwg-encoding@^1.0.5:
dependencies:
iconv-lite "0.4.24"
whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0:
whatwg-fetch@^3.0.0:
version "3.6.2"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c"
integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==