backup
parent
668258b342
commit
1660d02935
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
32
index.js
32
index.js
|
@ -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>
|
||||
|
|
|
@ -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",
|
||||
|
|
69
src/App.js
69
src/App.js
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
export * from './appbar';
|
||||
export * from './selection';
|
||||
export * from './slideitem';
|
||||
export * from './slider';
|
||||
export * from './view';
|
||||
|
|
|
@ -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,
|
||||
},
|
||||
});
|
|
@ -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>
|
||||
);
|
|
@ -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 [];
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
118
yarn.lock
|
@ -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==
|
||||
|
|
Loading…
Reference in New Issue