first commit
6
.buckconfig
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
[android]
|
||||||
|
target = Google Inc.:Google APIs:23
|
||||||
|
|
||||||
|
[maven_repositories]
|
||||||
|
central = https://repo1.maven.org/maven2
|
4
.eslintrc.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
extends: '@react-native-community',
|
||||||
|
};
|
65
.flowconfig
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
[ignore]
|
||||||
|
; We fork some components by platform
|
||||||
|
.*/*[.]android.js
|
||||||
|
|
||||||
|
; Ignore "BUCK" generated dirs
|
||||||
|
<PROJECT_ROOT>/\.buckd/
|
||||||
|
|
||||||
|
; Ignore polyfills
|
||||||
|
node_modules/react-native/Libraries/polyfills/.*
|
||||||
|
|
||||||
|
; Flow doesn't support platforms
|
||||||
|
.*/Libraries/Utilities/LoadingView.js
|
||||||
|
|
||||||
|
[untyped]
|
||||||
|
.*/node_modules/@react-native-community/cli/.*/.*
|
||||||
|
|
||||||
|
[include]
|
||||||
|
|
||||||
|
[libs]
|
||||||
|
node_modules/react-native/interface.js
|
||||||
|
node_modules/react-native/flow/
|
||||||
|
|
||||||
|
[options]
|
||||||
|
emoji=true
|
||||||
|
|
||||||
|
exact_by_default=true
|
||||||
|
|
||||||
|
format.bracket_spacing=false
|
||||||
|
|
||||||
|
module.file_ext=.js
|
||||||
|
module.file_ext=.json
|
||||||
|
module.file_ext=.ios.js
|
||||||
|
|
||||||
|
munge_underscores=true
|
||||||
|
|
||||||
|
module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/node_modules/react-native/\1'
|
||||||
|
module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/Image/RelativeImageStub'
|
||||||
|
|
||||||
|
suppress_type=$FlowIssue
|
||||||
|
suppress_type=$FlowFixMe
|
||||||
|
suppress_type=$FlowFixMeProps
|
||||||
|
suppress_type=$FlowFixMeState
|
||||||
|
|
||||||
|
[lints]
|
||||||
|
sketchy-null-number=warn
|
||||||
|
sketchy-null-mixed=warn
|
||||||
|
sketchy-number=warn
|
||||||
|
untyped-type-import=warn
|
||||||
|
nonstrict-import=warn
|
||||||
|
deprecated-type=warn
|
||||||
|
unsafe-getters-setters=warn
|
||||||
|
unnecessary-invariant=warn
|
||||||
|
signature-verification-failure=warn
|
||||||
|
|
||||||
|
[strict]
|
||||||
|
deprecated-type
|
||||||
|
nonstrict-import
|
||||||
|
sketchy-null
|
||||||
|
unclear-type
|
||||||
|
unsafe-getters-setters
|
||||||
|
untyped-import
|
||||||
|
untyped-type-import
|
||||||
|
|
||||||
|
[version]
|
||||||
|
^0.158.0
|
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
*.pbxproj -text
|
59
.gitignore
vendored
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
# OSX
|
||||||
|
#
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# Xcode
|
||||||
|
#
|
||||||
|
build/
|
||||||
|
*.pbxuser
|
||||||
|
!default.pbxuser
|
||||||
|
*.mode1v3
|
||||||
|
!default.mode1v3
|
||||||
|
*.mode2v3
|
||||||
|
!default.mode2v3
|
||||||
|
*.perspectivev3
|
||||||
|
!default.perspectivev3
|
||||||
|
xcuserdata
|
||||||
|
*.xccheckout
|
||||||
|
*.moved-aside
|
||||||
|
DerivedData
|
||||||
|
*.hmap
|
||||||
|
*.ipa
|
||||||
|
*.xcuserstate
|
||||||
|
|
||||||
|
# Android/IntelliJ
|
||||||
|
#
|
||||||
|
build/
|
||||||
|
.idea
|
||||||
|
.gradle
|
||||||
|
local.properties
|
||||||
|
*.iml
|
||||||
|
|
||||||
|
# node.js
|
||||||
|
#
|
||||||
|
node_modules/
|
||||||
|
npm-debug.log
|
||||||
|
yarn-error.log
|
||||||
|
|
||||||
|
# BUCK
|
||||||
|
buck-out/
|
||||||
|
\.buckd/
|
||||||
|
*.keystore
|
||||||
|
!debug.keystore
|
||||||
|
|
||||||
|
# fastlane
|
||||||
|
#
|
||||||
|
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
|
||||||
|
# screenshots whenever they are needed.
|
||||||
|
# For more information about the recommended setup visit:
|
||||||
|
# https://docs.fastlane.tools/best-practices/source-control/
|
||||||
|
|
||||||
|
*/fastlane/report.xml
|
||||||
|
*/fastlane/Preview.html
|
||||||
|
*/fastlane/screenshots
|
||||||
|
|
||||||
|
# Bundle artifact
|
||||||
|
*.jsbundle
|
||||||
|
|
||||||
|
# CocoaPods
|
||||||
|
/ios/Pods/
|
6
.prettierrc.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
module.exports = {
|
||||||
|
bracketSpacing: false,
|
||||||
|
jsxBracketSameLine: true,
|
||||||
|
singleQuote: true,
|
||||||
|
trailingComma: 'all',
|
||||||
|
};
|
1
.watchmanconfig
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
162
App.js
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
/**
|
||||||
|
* Sample React Native App
|
||||||
|
* https://github.com/facebook/react-native
|
||||||
|
*
|
||||||
|
* @format
|
||||||
|
* @flow strict-local
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React, { useEffect } from 'react';
|
||||||
|
import moment from 'moment';
|
||||||
|
import messaging from '@react-native-firebase/messaging';
|
||||||
|
import AsyncStorage from '@react-native-community/async-storage';
|
||||||
|
import { StyleSheet, ScrollView, View, Text, StatusBar } from 'react-native';
|
||||||
|
import { SafeAreaProvider } from 'react-native-safe-area-context';
|
||||||
|
import { colors } from './src/assets/styles/colors-theme';
|
||||||
|
import Router from './router';
|
||||||
|
import { Provider } from 'mobx-react';
|
||||||
|
import { ModalPortal } from 'react-native-modals';
|
||||||
|
import Store from './src/stores/index';
|
||||||
|
import { NavigationContainer, useFocusEffect } from '@react-navigation/native';
|
||||||
|
import { createStackNavigator, HeaderBackButton } from '@react-navigation/stack';
|
||||||
|
import { createMaterialBottomTabNavigator } from '@react-navigation/material-bottom-tabs';
|
||||||
|
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
|
||||||
|
import {
|
||||||
|
Header,
|
||||||
|
LearnMoreLinks,
|
||||||
|
Colors,
|
||||||
|
DebugInstructions,
|
||||||
|
ReloadInstructions,
|
||||||
|
} from 'react-native/Libraries/NewAppScreen';
|
||||||
|
import Icon from 'react-native-vector-icons/dist/MaterialCommunityIcons';
|
||||||
|
import SplashScreen from './src/pages/splash/splashScreen';
|
||||||
|
import Main from './src/pages/main/main';
|
||||||
|
import buyHistory from './src/pages/buyHistory/buyHistory';
|
||||||
|
import Favorite from './src/pages/favorite/favorite';
|
||||||
|
import Profile from './src/pages/profile/profile';
|
||||||
|
import BuyHistory from './src/pages/buyHistory/buyHistory';
|
||||||
|
|
||||||
|
Icon.loadFont();
|
||||||
|
console.disableYellowBox = true;
|
||||||
|
const Stack = createStackNavigator();
|
||||||
|
const BottomTab = createBottomTabNavigator();
|
||||||
|
const BottomTabScreen = () => (
|
||||||
|
<BottomTab.Navigator
|
||||||
|
screenOptions={({ route }) => ({
|
||||||
|
tabBarIcon: ({ focused, color, size }) => {
|
||||||
|
let iconName;
|
||||||
|
switch (route.name) {
|
||||||
|
case 'Main':
|
||||||
|
iconName = 'home-variant';
|
||||||
|
break;
|
||||||
|
case 'BuyHistory':
|
||||||
|
iconName = 'cart';
|
||||||
|
break;
|
||||||
|
case 'Favorite':
|
||||||
|
iconName = 'heart';
|
||||||
|
break;
|
||||||
|
case 'Profile':
|
||||||
|
iconName = 'account-circle';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<Icon
|
||||||
|
name={iconName}
|
||||||
|
size={size}
|
||||||
|
color={color}
|
||||||
|
style={{ marginTop: 5 }}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
})}
|
||||||
|
tabBarOptions={{
|
||||||
|
activeTintColor: 'tomato',
|
||||||
|
inactiveTintColor: 'gray',
|
||||||
|
}}>
|
||||||
|
<Stack.Screen
|
||||||
|
name="Main"
|
||||||
|
component={Main}
|
||||||
|
options={{ tabBarLabel: '主頁' }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="Favorite"
|
||||||
|
component={Favorite}
|
||||||
|
options={{ tabBarLabel: '我的清單' }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="BuyHistory"
|
||||||
|
component={BuyHistory}
|
||||||
|
options={{ tabBarLabel: '購買記錄' }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="Profile"
|
||||||
|
component={Profile}
|
||||||
|
options={{ tabBarLabel: '賬號/設定' }}
|
||||||
|
/>
|
||||||
|
</BottomTab.Navigator>
|
||||||
|
);
|
||||||
|
const App: () => React$Node = () => {
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Provider {...Store}>
|
||||||
|
|
||||||
|
<SafeAreaProvider>
|
||||||
|
<StatusBar
|
||||||
|
animated={true}
|
||||||
|
barStyle={'default'}
|
||||||
|
backgroundColor={'white'}
|
||||||
|
translucent={true}
|
||||||
|
/>
|
||||||
|
<NavigationContainer
|
||||||
|
onStateChange={state => Store.appStore.setRouterState(state)}
|
||||||
|
ref={navigatorRef => Store.appStore.setRouterRef(navigatorRef)}>
|
||||||
|
<Router />
|
||||||
|
</NavigationContainer>
|
||||||
|
<ModalPortal />
|
||||||
|
</SafeAreaProvider>
|
||||||
|
</Provider>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
scrollView: {
|
||||||
|
backgroundColor: Colors.lighter,
|
||||||
|
},
|
||||||
|
engine: {
|
||||||
|
position: 'absolute',
|
||||||
|
right: 0,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
backgroundColor: colors.bgc,
|
||||||
|
},
|
||||||
|
sectionContainer: {
|
||||||
|
marginTop: 32,
|
||||||
|
paddingHorizontal: 24,
|
||||||
|
},
|
||||||
|
sectionTitle: {
|
||||||
|
fontSize: 24,
|
||||||
|
fontWeight: '600',
|
||||||
|
color: Colors.black,
|
||||||
|
},
|
||||||
|
sectionDescription: {
|
||||||
|
marginTop: 8,
|
||||||
|
fontSize: 18,
|
||||||
|
fontWeight: '400',
|
||||||
|
color: Colors.dark,
|
||||||
|
},
|
||||||
|
highlight: {
|
||||||
|
fontWeight: '700',
|
||||||
|
},
|
||||||
|
footer: {
|
||||||
|
color: Colors.dark,
|
||||||
|
fontSize: 12,
|
||||||
|
fontWeight: '600',
|
||||||
|
padding: 4,
|
||||||
|
paddingRight: 12,
|
||||||
|
textAlign: 'right',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default App;
|
170
MyTabBar.js
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import {
|
||||||
|
SafeAreaView,
|
||||||
|
Text,
|
||||||
|
View,
|
||||||
|
TouchableOpacity,
|
||||||
|
Image,
|
||||||
|
TextInput,
|
||||||
|
Keyboard,
|
||||||
|
} from 'react-native';
|
||||||
|
import { inject, observer } from 'mobx-react';
|
||||||
|
import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
|
||||||
|
import Toast, { DURATION } from 'react-native-easy-toast';
|
||||||
|
import Icon from 'react-native-vector-icons/dist/MaterialCommunityIcons';
|
||||||
|
import { observable } from 'mobx';
|
||||||
|
import { colors } from './src/assets/styles/colors-theme';
|
||||||
|
import { s, vs, ms } from 'react-native-size-matters';
|
||||||
|
import DeviceInfo from 'react-native-device-info';
|
||||||
|
Icon.loadFont();
|
||||||
|
@inject('appStore')
|
||||||
|
@observer
|
||||||
|
export default class MyTabBar extends React.Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.store = props.appStore;
|
||||||
|
}
|
||||||
|
|
||||||
|
langLabelReturn(label) {
|
||||||
|
switch (label) {
|
||||||
|
case 'main':
|
||||||
|
return this.store.text.main;
|
||||||
|
break;
|
||||||
|
case 'myfavourite':
|
||||||
|
return this.store.text.myfavourite;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'ShoppingCart':
|
||||||
|
return this.store.text.shoppingcart;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'shoppingHistory':
|
||||||
|
return this.store.text.shoppingHistory;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'acAndSetting':
|
||||||
|
return this.store.text.acAndSetting;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
var { state, descriptors, navigation, logined } = this.props;
|
||||||
|
return (
|
||||||
|
<View style={{ flexDirection: 'row', backgroundColor: 'white' }}>
|
||||||
|
{state.routes.map((route, index) => {
|
||||||
|
const { options } = descriptors[route.key];
|
||||||
|
const label =
|
||||||
|
options.tabBarLabel !== undefined
|
||||||
|
? options.tabBarLabel
|
||||||
|
: options.title !== undefined
|
||||||
|
? options.title
|
||||||
|
: route.name;
|
||||||
|
let iconName;
|
||||||
|
switch (route.name) {
|
||||||
|
case 'Main':
|
||||||
|
iconName = 'home-outline';
|
||||||
|
break;
|
||||||
|
case 'BuyHistory':
|
||||||
|
iconName = 'history';
|
||||||
|
break;
|
||||||
|
case 'ShoppingCart':
|
||||||
|
iconName = 'shopping-outline';
|
||||||
|
break;
|
||||||
|
case 'Favorite':
|
||||||
|
iconName = 'heart-outline';
|
||||||
|
break;
|
||||||
|
case 'Profile':
|
||||||
|
iconName = 'account-outline';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
const isFocused = state.index === index;
|
||||||
|
|
||||||
|
const onPress = () => {
|
||||||
|
const event = navigation.emit({
|
||||||
|
type: 'tabPress',
|
||||||
|
target: route.key,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!isFocused && !event.defaultPrevented) {
|
||||||
|
this.store.catalogueSelected = null;
|
||||||
|
console.log(route.name);
|
||||||
|
if (route.name == 'Profile' && !this.store.logined) {
|
||||||
|
navigation.navigate('Signin');
|
||||||
|
} else if (route.name == 'Favorite' && !this.store.logined) {
|
||||||
|
navigation.navigate('Signin');
|
||||||
|
} else if (route.name == 'BuyHistory' && !this.store.logined) {
|
||||||
|
navigation.navigate('Signin');
|
||||||
|
} else {
|
||||||
|
navigation.navigate(route.name);
|
||||||
|
}
|
||||||
|
} else if (isFocused && route.name == 'Main') {
|
||||||
|
this.store.catalogueSelected = null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const onLongPress = () => {
|
||||||
|
navigation.emit({
|
||||||
|
type: 'tabLongPress',
|
||||||
|
target: route.key,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<TouchableOpacity
|
||||||
|
accessibilityRole="button"
|
||||||
|
accessibilityStates={isFocused ? ['selected'] : []}
|
||||||
|
accessibilityLabel={options.tabBarAccessibilityLabel}
|
||||||
|
testID={options.tabBarTestID}
|
||||||
|
onPress={onPress}
|
||||||
|
onLongPress={onLongPress}
|
||||||
|
style={{
|
||||||
|
flex: 1,
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
marginTop: 5,
|
||||||
|
marginBottom: 5,
|
||||||
|
}}>
|
||||||
|
<Icon
|
||||||
|
name={iconName}
|
||||||
|
size={28}
|
||||||
|
color={isFocused ? colors.mainColor : 'black'}
|
||||||
|
/>
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
color: isFocused ? colors.mainColor : 'black',
|
||||||
|
fontSize: 12,
|
||||||
|
}}>
|
||||||
|
{this.langLabelReturn(label)}
|
||||||
|
</Text>
|
||||||
|
{label == 'ShoppingCart' ? (
|
||||||
|
<View
|
||||||
|
style={{
|
||||||
|
justifyContent: 'center',
|
||||||
|
alignItems: 'center',
|
||||||
|
position: 'absolute',
|
||||||
|
|
||||||
|
right: DeviceInfo.isTablet() ? s(30) : s(24),
|
||||||
|
}}>
|
||||||
|
<Icon name="circle" color={colors.mainColor} size={18} />
|
||||||
|
<Text
|
||||||
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
top: 4,
|
||||||
|
fontSize: 8,
|
||||||
|
color: 'white',
|
||||||
|
}}>
|
||||||
|
{this.store.shoppingCartList.length}
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
) : (
|
||||||
|
<View />
|
||||||
|
)}
|
||||||
|
</TouchableOpacity>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
95
README.md
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
## Pure Mall
|
||||||
|
|
||||||
|
## Description
|
||||||
|
The mobile application is an online shopping platform that offers various features such as coupons, online payment, notifications, group shopping formation, group shopping discounts, monthly sales targets with shopping incentives, point rewards, and the ability for teams to use their exclusive points to redeem gifts. users can also check the shopping records of other members in their shopping group.
|
||||||
|
|
||||||
|
### Screenshot
|
||||||
|
|
||||||
|
<img src="./src/assets/screenshot/1.png" width="20%" height="20%">
|
||||||
|
<img src="./src/assets/screenshot/2.png" width="20%" height="20%">
|
||||||
|
<img src="./src/assets/screenshot/3.png" width="20%" height="20%">
|
||||||
|
<img src="./src/assets/screenshot/4.png" width="20%" height="20%">
|
||||||
|
<img src="./src/assets/screenshot/5.png" width="20%" height="20%">
|
||||||
|
<img src="./src/assets/screenshot/6.png" width="20%" height="20%">
|
||||||
|
<img src="./src/assets/screenshot/7.png" width="20%" height="20%">
|
||||||
|
<img src="./src/assets/screenshot/banner.png" >
|
||||||
|
|
||||||
|
This is a new [**React Native**](https://reactnative.dev) project, bootstrapped using [`@react-native-community/cli`](https://github.com/react-native-community/cli).
|
||||||
|
|
||||||
|
# Getting Started
|
||||||
|
|
||||||
|
>**Note**: Make sure you have completed the [React Native - Environment Setup](https://reactnative.dev/docs/environment-setup) instructions till "Creating a new application" step, before proceeding.
|
||||||
|
|
||||||
|
## Step 1: Start the Metro Server
|
||||||
|
|
||||||
|
First, you will need to start **Metro**, the JavaScript _bundler_ that ships _with_ React Native.
|
||||||
|
|
||||||
|
To start Metro, run the following command from the _root_ of your React Native project:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# using npm
|
||||||
|
npm start
|
||||||
|
|
||||||
|
# OR using Yarn
|
||||||
|
yarn start
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step 2: Start your Application
|
||||||
|
|
||||||
|
Let Metro Bundler run in its _own_ terminal. Open a _new_ terminal from the _root_ of your React Native project. Run the following command to start your _Android_ or _iOS_ app:
|
||||||
|
|
||||||
|
### For Android
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# using npm
|
||||||
|
npm run android
|
||||||
|
|
||||||
|
# OR using Yarn
|
||||||
|
yarn android
|
||||||
|
```
|
||||||
|
|
||||||
|
### For iOS
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# using npm
|
||||||
|
npm run ios
|
||||||
|
|
||||||
|
# OR using Yarn
|
||||||
|
yarn ios
|
||||||
|
```
|
||||||
|
|
||||||
|
If everything is set up _correctly_, you should see your new app running in your _Android Emulator_ or _iOS Simulator_ shortly provided you have set up your emulator/simulator correctly.
|
||||||
|
|
||||||
|
This is one way to run your app — you can also run it directly from within Android Studio and Xcode respectively.
|
||||||
|
|
||||||
|
## Step 3: Modifying your App
|
||||||
|
|
||||||
|
Now that you have successfully run the app, let's modify it.
|
||||||
|
|
||||||
|
1. Open `App.tsx` in your text editor of choice and edit some lines.
|
||||||
|
2. For **Android**: Press the <kbd>R</kbd> key twice or select **"Reload"** from the **Developer Menu** (<kbd>Ctrl</kbd> + <kbd>M</kbd> (on Window and Linux) or <kbd>Cmd ⌘</kbd> + <kbd>M</kbd> (on macOS)) to see your changes!
|
||||||
|
|
||||||
|
For **iOS**: Hit <kbd>Cmd ⌘</kbd> + <kbd>R</kbd> in your iOS Simulator to reload the app and see your changes!
|
||||||
|
|
||||||
|
## Congratulations! :tada:
|
||||||
|
|
||||||
|
You've successfully run and modified your React Native App. :partying_face:
|
||||||
|
|
||||||
|
### Now what?
|
||||||
|
|
||||||
|
- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
|
||||||
|
- If you're curious to learn more about React Native, check out the [Introduction to React Native](https://reactnative.dev/docs/getting-started).
|
||||||
|
|
||||||
|
# Troubleshooting
|
||||||
|
|
||||||
|
If you can't get this to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.
|
||||||
|
|
||||||
|
# Learn More
|
||||||
|
|
||||||
|
To learn more about React Native, take a look at the following resources:
|
||||||
|
|
||||||
|
- [React Native Website](https://reactnative.dev) - learn more about React Native.
|
||||||
|
- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment.
|
||||||
|
- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**.
|
||||||
|
- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts.
|
||||||
|
- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native.
|
14
__tests__/App-test.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* @format
|
||||||
|
*/
|
||||||
|
|
||||||
|
import 'react-native';
|
||||||
|
import React from 'react';
|
||||||
|
import App from '../App';
|
||||||
|
|
||||||
|
// Note: test renderer must be required after react-native.
|
||||||
|
import renderer from 'react-test-renderer';
|
||||||
|
|
||||||
|
it('renders correctly', () => {
|
||||||
|
renderer.create(<App />);
|
||||||
|
});
|
3
appVersion.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
export default {
|
||||||
|
version: '1.0',
|
||||||
|
};
|
8
babel.config.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
module.exports = {
|
||||||
|
presets: ['module:metro-react-native-babel-preset'],
|
||||||
|
plugins: [
|
||||||
|
['@babel/plugin-transform-flow-strip-types'],
|
||||||
|
['@babel/plugin-proposal-decorators', {legacy: true}],
|
||||||
|
['@babel/plugin-proposal-class-properties', {loose: true}],
|
||||||
|
],
|
||||||
|
};
|
67
index.js
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
/**
|
||||||
|
* @format
|
||||||
|
*/
|
||||||
|
import React from 'react';
|
||||||
|
import { AppRegistry, Platform } from 'react-native';
|
||||||
|
import App from './App';
|
||||||
|
import { name as appName } from './app.json';
|
||||||
|
import codePush from 'react-native-code-push';
|
||||||
|
import moment from 'moment';
|
||||||
|
import messaging from '@react-native-firebase/messaging';
|
||||||
|
import AsyncStorage from '@react-native-community/async-storage';
|
||||||
|
var CheckisHeadless = true
|
||||||
|
messaging().setBackgroundMessageHandler(async remoteMessage => {
|
||||||
|
var notificationRecord = {
|
||||||
|
notifications: [],
|
||||||
|
unread: 0,
|
||||||
|
}
|
||||||
|
const data = {
|
||||||
|
id: remoteMessage.messageId,
|
||||||
|
date: moment().valueOf(),
|
||||||
|
title: remoteMessage.notification.title,
|
||||||
|
message: remoteMessage.notification.body,
|
||||||
|
read: false,
|
||||||
|
}
|
||||||
|
console.log(data)
|
||||||
|
try {
|
||||||
|
const jsonValue = await AsyncStorage.getItem('notification')
|
||||||
|
if (jsonValue != null) {
|
||||||
|
notificationRecord = JSON.parse(jsonValue)
|
||||||
|
}
|
||||||
|
console.log(notificationRecord)
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e)
|
||||||
|
}
|
||||||
|
|
||||||
|
await notificationRecord.notifications.push(data);
|
||||||
|
notificationRecord.unread += 1;
|
||||||
|
console.log(notificationRecord)
|
||||||
|
try {
|
||||||
|
const saveItem = JSON.stringify(notificationRecord)
|
||||||
|
await AsyncStorage.setItem('notification', saveItem)
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e)
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function HeadlessCheck({ isHeadless }) {
|
||||||
|
console.log(isHeadless)
|
||||||
|
if (isHeadless) {
|
||||||
|
// App has been launched in the background by iOS, ignore
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return <App />
|
||||||
|
}
|
||||||
|
// HeadlessCheck()=> {
|
||||||
|
// return codePush(App);
|
||||||
|
// }
|
||||||
|
function RealApp() {
|
||||||
|
return codePush(App);
|
||||||
|
}
|
||||||
|
|
||||||
|
AppRegistry.registerComponent(appName, () => RealApp());
|
17
metro.config copy.js
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
/**
|
||||||
|
* Metro configuration for React Native
|
||||||
|
* https://github.com/facebook/react-native
|
||||||
|
*
|
||||||
|
* @format
|
||||||
|
*/
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
transformer: {
|
||||||
|
getTransformOptions: async () => ({
|
||||||
|
transform: {
|
||||||
|
experimentalImportSupport: false,
|
||||||
|
inlineRequires: false,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
};
|
17
metro.config.js
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
/**
|
||||||
|
* Metro configuration for React Native
|
||||||
|
* https://github.com/facebook/react-native
|
||||||
|
*
|
||||||
|
* @format
|
||||||
|
*/
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
transformer: {
|
||||||
|
getTransformOptions: async () => ({
|
||||||
|
transform: {
|
||||||
|
experimentalImportSupport: false,
|
||||||
|
inlineRequires: false,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
};
|
32562
package-lock.json
generated
Normal file
95
package.json
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
{
|
||||||
|
"name": "puremall",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"android": "react-native run-android",
|
||||||
|
"ios": "react-native run-ios",
|
||||||
|
"start": "react-native start",
|
||||||
|
"test": "jest",
|
||||||
|
"lint": "eslint ."
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/plugin-proposal-decorators": "^7.12.1",
|
||||||
|
"@invertase/react-native-apple-authentication": "^2.1.2",
|
||||||
|
"@react-native-community/async-storage": "^1.12.1",
|
||||||
|
"@react-native-community/datetimepicker": "^3.5.2",
|
||||||
|
"@react-native-community/masked-view": "^0.1.10",
|
||||||
|
"@react-native-firebase/app": "^11.2.0",
|
||||||
|
"@react-native-firebase/messaging": "^11.2.0",
|
||||||
|
"@react-native-google-signin/google-signin": "^8.1.0",
|
||||||
|
"@react-navigation/bottom-tabs": "^5.11.2",
|
||||||
|
"@react-navigation/material-bottom-tabs": "^5.3.10",
|
||||||
|
"@react-navigation/native": "^5.8.10",
|
||||||
|
"@react-navigation/stack": "^5.12.8",
|
||||||
|
"axios": "^0.21.0",
|
||||||
|
"babel-plugin-transform-decorators-legacy": "^1.3.5",
|
||||||
|
"buffer": "^6.0.3",
|
||||||
|
"date-time-format-timezone": "^1.0.22",
|
||||||
|
"lodash": "^4.17.20",
|
||||||
|
"lottie-ios": "^3.2.3",
|
||||||
|
"lottie-react-native": "^4.0.3",
|
||||||
|
"mobx": "^5.15.4",
|
||||||
|
"mobx-react": "^6.2.2",
|
||||||
|
"moment": "^2.29.1",
|
||||||
|
"qs": "^6.9.4",
|
||||||
|
"query-string": "^6.13.7",
|
||||||
|
"react": "16.13.1",
|
||||||
|
"react-native": "0.63.4",
|
||||||
|
"react-native-app-intro-slider": "^4.0.4",
|
||||||
|
"react-native-base64": "^0.1.0",
|
||||||
|
"react-native-circular-progress": "^1.3.7",
|
||||||
|
"react-native-code-push": "^7.0.1",
|
||||||
|
"react-native-confirmation-code-field": "^6.5.1",
|
||||||
|
"react-native-countdown-component": "^2.7.1",
|
||||||
|
"react-native-credit-card-input": "^0.4.1",
|
||||||
|
"react-native-date-picker": "^4.1.1",
|
||||||
|
"react-native-device-info": "^8.4.8",
|
||||||
|
"react-native-dialog": "^8.2.0",
|
||||||
|
"react-native-easy-toast": "^1.2.0",
|
||||||
|
"react-native-elements": "^3.4.2",
|
||||||
|
"react-native-fast-image": "^8.3.4",
|
||||||
|
"react-native-gallery-swiper": "^1.26.4",
|
||||||
|
"react-native-general-statusbar": "^1.0.1",
|
||||||
|
"react-native-gesture-handler": "^1.10.3",
|
||||||
|
"react-native-htmlview": "^0.16.0",
|
||||||
|
"react-native-image-picker": "^3.2.1",
|
||||||
|
"react-native-image-viewing": "^0.2.0",
|
||||||
|
"react-native-keyboard-aware-scroll-view": "^0.9.3",
|
||||||
|
"react-native-loading-spinner-overlay": "^2.0.0",
|
||||||
|
"react-native-modal": "^12.0.2",
|
||||||
|
"react-native-modal-datetime-picker": "^10.2.0",
|
||||||
|
"react-native-modalize": "^2.0.8",
|
||||||
|
"react-native-modals": "^0.22.3",
|
||||||
|
"react-native-paper": "^4.4.1",
|
||||||
|
"react-native-popup-menu": "^0.15.9",
|
||||||
|
"react-native-progress": "^4.1.2",
|
||||||
|
"react-native-reanimated": "^1.13.2",
|
||||||
|
"react-native-safe-area-context": "^3.1.9",
|
||||||
|
"react-native-safe-area-view": "^1.1.1",
|
||||||
|
"react-native-screens": "^2.15.0",
|
||||||
|
"react-native-size-matters": "^0.3.1",
|
||||||
|
"react-native-status-bar-height": "^2.6.0",
|
||||||
|
"react-native-svg": "^12.1.1",
|
||||||
|
"react-native-swiper": "^1.6.0",
|
||||||
|
"react-native-switch-pro": "^1.0.5",
|
||||||
|
"react-native-tab-view": "^2.15.2",
|
||||||
|
"react-native-textinput-effects": "^0.6.1",
|
||||||
|
"react-native-uuid": "^1.4.9",
|
||||||
|
"react-native-vector-icons": "^7.1.0",
|
||||||
|
"underscore": "^1.12.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@babel/core": "^7.8.4",
|
||||||
|
"@babel/runtime": "^7.8.4",
|
||||||
|
"@react-native-community/eslint-config": "^1.1.0",
|
||||||
|
"babel-jest": "^25.1.0",
|
||||||
|
"eslint": "^6.5.1",
|
||||||
|
"jest": "^25.1.0",
|
||||||
|
"metro-react-native-babel-preset": "^0.59.0",
|
||||||
|
"react-test-renderer": "16.13.1"
|
||||||
|
},
|
||||||
|
"jest": {
|
||||||
|
"preset": "react-native"
|
||||||
|
}
|
||||||
|
}
|
336
router.js
Normal file
@@ -0,0 +1,336 @@
|
|||||||
|
/**
|
||||||
|
* Sample React Native App
|
||||||
|
* https://github.com/facebook/react-native
|
||||||
|
*
|
||||||
|
* @format
|
||||||
|
* @flow strict-local
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
import React, { useEffect } from 'react';
|
||||||
|
import messaging from '@react-native-firebase/messaging';
|
||||||
|
import { colors } from './src/assets/styles/colors-theme';
|
||||||
|
import {
|
||||||
|
StyleSheet,
|
||||||
|
ScrollView,
|
||||||
|
View,
|
||||||
|
Text,
|
||||||
|
StatusBar,
|
||||||
|
TouchableOpacity,
|
||||||
|
} from 'react-native';
|
||||||
|
import SafeAreaView from 'react-native-safe-area-view';
|
||||||
|
import { Provider } from 'mobx-react';
|
||||||
|
import Store from './src/stores/index';
|
||||||
|
import { NavigationContainer, useFocusEffect } from '@react-navigation/native';
|
||||||
|
import { createStackNavigator, HeaderBackButton } from '@react-navigation/stack';
|
||||||
|
import { createMaterialBottomTabNavigator } from '@react-navigation/material-bottom-tabs';
|
||||||
|
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
|
||||||
|
import {
|
||||||
|
Header,
|
||||||
|
LearnMoreLinks,
|
||||||
|
Colors,
|
||||||
|
DebugInstructions,
|
||||||
|
ReloadInstructions,
|
||||||
|
} from 'react-native/Libraries/NewAppScreen';
|
||||||
|
import Icon from 'react-native-vector-icons/dist/MaterialCommunityIcons';
|
||||||
|
import SplashScreen from './src/pages/splash/splashScreen';
|
||||||
|
import Main from './src/pages/main/main';
|
||||||
|
import Search from './src/pages/search/search';
|
||||||
|
import Favorite from './src/pages/favorite/favorite';
|
||||||
|
import MyTabBar from './MyTabBar';
|
||||||
|
import Order from './src/pages/order/order';
|
||||||
|
import Profile from './src/pages/profile/profile';
|
||||||
|
import Setting from './src/pages/profile/Setting';
|
||||||
|
import AddName from './src/pages/profile/addName';
|
||||||
|
import CreditCard from './src/pages/profile/creditCard';
|
||||||
|
import AddressSetting from './src/pages/profile/addressSetting';
|
||||||
|
import BuyHistory from './src/pages/buyHistory/buyHistory';
|
||||||
|
import HistoryDetails from './src/pages/buyHistory/historyDetails';
|
||||||
|
import ProductsDetails from './src/pages/productsDetails/productsDetails';
|
||||||
|
import ShoppingCart from './src/pages/shoppingCart/shoppingCart';
|
||||||
|
import Signin from './src/pages/signin/signin';
|
||||||
|
import Signup from './src/pages/signup/signup';
|
||||||
|
import News from './src/pages/news/news';
|
||||||
|
import SignUpVerify from './src/pages/signup/signUpVerify';
|
||||||
|
import ForgotPassword from './src/pages/signup/forgotPassword';
|
||||||
|
import GroupDetails from './src/pages/group/groupDetails';
|
||||||
|
import RedeemGifts from './src/pages/group/redeemGifts';
|
||||||
|
import ManageMembers from './src/pages/group/manageMembers';
|
||||||
|
import SalesRecord from './src/pages/group/salesRecord';
|
||||||
|
import GroupList from './src/pages/group/groupList';
|
||||||
|
import RedeemRecord from './src/pages/profile/redeemRecord'
|
||||||
|
import FullScreen from './src/pages/fullScreen/fullScreen'
|
||||||
|
import Notification from './src/pages/notificaation/notification'
|
||||||
|
import Tutorial from './src/pages/tutorial/tutorial'
|
||||||
|
Icon.loadFont();
|
||||||
|
|
||||||
|
const Stack = createStackNavigator();
|
||||||
|
const BottomTab = createBottomTabNavigator();
|
||||||
|
|
||||||
|
import { inject, observer } from 'mobx-react';
|
||||||
|
|
||||||
|
@inject('appStore')
|
||||||
|
@observer
|
||||||
|
class Router extends React.Component {
|
||||||
|
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.store = props.appStore;
|
||||||
|
// this.handleFrontNotification = this.handleFrontNotification.bind(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
handleFrontNotification() {
|
||||||
|
const unsubscribe = messaging().onMessage(async remoteMessage => {
|
||||||
|
console.log('A new FCM message arrived!', JSON.stringify(remoteMessage));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async componentDidMount() {
|
||||||
|
this.messageListener = messaging().onMessage(async message => this.store.saveNotification(message))
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillUnmount() {
|
||||||
|
this.messageListener();
|
||||||
|
}
|
||||||
|
BottomTabScreen = () => {
|
||||||
|
return (
|
||||||
|
<BottomTab.Navigator
|
||||||
|
tabBar={props => <MyTabBar {...props} logined={this.store.logined} />}>
|
||||||
|
<Stack.Screen
|
||||||
|
name="Main"
|
||||||
|
component={Main}
|
||||||
|
options={{ tabBarLabel: 'main' }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="BuyHistory"
|
||||||
|
component={BuyHistory}
|
||||||
|
options={{ tabBarLabel: 'shoppingHistory' }}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Stack.Screen
|
||||||
|
name="ShoppingCart"
|
||||||
|
component={ShoppingCart}
|
||||||
|
options={{ tabBarLabel: 'ShoppingCart' }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="Favorite"
|
||||||
|
component={Favorite}
|
||||||
|
options={{ tabBarLabel: 'myfavourite' }}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Stack.Screen
|
||||||
|
name="Profile"
|
||||||
|
component={Profile}
|
||||||
|
options={{ tabBarLabel: 'acAndSetting' }}
|
||||||
|
/>
|
||||||
|
</BottomTab.Navigator>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<SafeAreaView style={{ flex: 1,backgroundColor:'white' }}>
|
||||||
|
<Stack.Navigator initialRouteName="SplashScreen">
|
||||||
|
{!this.store.splash ? (
|
||||||
|
<>
|
||||||
|
<Stack.Screen
|
||||||
|
name="SplashScreen"
|
||||||
|
component={SplashScreen}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
<Stack.Screen
|
||||||
|
name="BottomTabScreen"
|
||||||
|
component={this.BottomTabScreen}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="ProductsDetails"
|
||||||
|
component={ProductsDetails}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Stack.Screen
|
||||||
|
name="Signin"
|
||||||
|
component={Signin}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="Signup"
|
||||||
|
component={Signup}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="SignUpVerify"
|
||||||
|
component={SignUpVerify}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="AddName"
|
||||||
|
component={AddName}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="ForgotPassword"
|
||||||
|
component={ForgotPassword}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="ShoppingCart"
|
||||||
|
component={ShoppingCart}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="Order"
|
||||||
|
component={Order}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="News"
|
||||||
|
component={News}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="HistoryDetails"
|
||||||
|
component={HistoryDetails}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Stack.Screen
|
||||||
|
name="CreditCard"
|
||||||
|
component={CreditCard}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="AddressSetting"
|
||||||
|
component={AddressSetting}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="Setting"
|
||||||
|
component={Setting}
|
||||||
|
options={{ headerShown: false }}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="Search"
|
||||||
|
component={Search}
|
||||||
|
options={{
|
||||||
|
headerShown: false,
|
||||||
|
// animationEnabled: false,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="GroupDetails"
|
||||||
|
component={GroupDetails}
|
||||||
|
options={{
|
||||||
|
headerShown: false,
|
||||||
|
// animationEnabled: false,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="GroupList"
|
||||||
|
component={GroupList}
|
||||||
|
options={{
|
||||||
|
headerShown: false,
|
||||||
|
// animationEnabled: false,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="RedeemGifts"
|
||||||
|
component={RedeemGifts}
|
||||||
|
options={{
|
||||||
|
headerShown: false,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="ManageMembers"
|
||||||
|
component={ManageMembers}
|
||||||
|
options={{
|
||||||
|
headerShown: false,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="SalesRecord"
|
||||||
|
component={SalesRecord}
|
||||||
|
options={{
|
||||||
|
headerShown: false,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="RedeemRecord"
|
||||||
|
component={RedeemRecord}
|
||||||
|
options={{
|
||||||
|
headerShown: false,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="FullScreen"
|
||||||
|
component={FullScreen}
|
||||||
|
options={{
|
||||||
|
headerShown: false,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="Notification"
|
||||||
|
component={Notification}
|
||||||
|
options={{
|
||||||
|
headerShown: false,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<Stack.Screen
|
||||||
|
name="Tutorial"
|
||||||
|
component={Tutorial}
|
||||||
|
options={{
|
||||||
|
headerShown: false,
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
</Stack.Navigator>
|
||||||
|
</SafeAreaView>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
scrollView: {
|
||||||
|
backgroundColor: Colors.lighter,
|
||||||
|
},
|
||||||
|
engine: {
|
||||||
|
position: 'absolute',
|
||||||
|
right: 0,
|
||||||
|
},
|
||||||
|
body: {
|
||||||
|
backgroundColor: Colors.white,
|
||||||
|
},
|
||||||
|
sectionContainer: {
|
||||||
|
marginTop: 32,
|
||||||
|
paddingHorizontal: 24,
|
||||||
|
},
|
||||||
|
sectionTitle: {
|
||||||
|
fontSize: 24,
|
||||||
|
fontWeight: '600',
|
||||||
|
color: Colors.black,
|
||||||
|
},
|
||||||
|
sectionDescription: {
|
||||||
|
marginTop: 8,
|
||||||
|
fontSize: 18,
|
||||||
|
fontWeight: '400',
|
||||||
|
color: Colors.dark,
|
||||||
|
},
|
||||||
|
highlight: {
|
||||||
|
fontWeight: '700',
|
||||||
|
},
|
||||||
|
footer: {
|
||||||
|
color: Colors.dark,
|
||||||
|
fontSize: 12,
|
||||||
|
fontWeight: '600',
|
||||||
|
padding: 4,
|
||||||
|
paddingRight: 12,
|
||||||
|
textAlign: 'right',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default Router;
|
BIN
src/assets/images/Alcoholic@2x.png
Executable file
After Width: | Height: | Size: 8.1 KiB |
BIN
src/assets/images/Alcoholic@3x.png
Executable file
After Width: | Height: | Size: 14 KiB |
1
src/assets/images/BFF1F6B722E6659C0BD539867C8BBAC8.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
F81D0BFFE116347EE09EF84A5EF84824DB8EE17AD9FF86FB240BFDFEA61EF0FD comodoca.com 5fd97c3b2d29c
|
BIN
src/assets/images/Bitmap.png
Normal file
After Width: | Height: | Size: 6.6 MiB |
BIN
src/assets/images/Frozenmeat@2x.png
Executable file
After Width: | Height: | Size: 9.4 KiB |
BIN
src/assets/images/Frozenmeat@3x.png
Executable file
After Width: | Height: | Size: 15 KiB |
BIN
src/assets/images/Icon_Magnifier@2x.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
src/assets/images/Icon_Magnifier@3x.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
src/assets/images/Icon_Magnifier_Small@2x.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
src/assets/images/Icon_Magnifier_Small@3x.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
src/assets/images/comment@2x.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
src/assets/images/comment@3x.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
src/assets/images/craft@2x.png
Executable file
After Width: | Height: | Size: 601 B |
BIN
src/assets/images/craft@3x.png
Executable file
After Width: | Height: | Size: 783 B |
BIN
src/assets/images/creditcardicon@2x.png
Executable file
After Width: | Height: | Size: 1.4 KiB |
BIN
src/assets/images/creditcardicon@3x.png
Executable file
After Width: | Height: | Size: 1.9 KiB |
BIN
src/assets/images/drink@2x.png
Executable file
After Width: | Height: | Size: 9.6 KiB |
BIN
src/assets/images/drink@3x.png
Executable file
After Width: | Height: | Size: 16 KiB |
BIN
src/assets/images/facebook@2x.png
Executable file
After Width: | Height: | Size: 3.9 KiB |
BIN
src/assets/images/facebook@3x.png
Executable file
After Width: | Height: | Size: 6.9 KiB |
BIN
src/assets/images/favourite@2x.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
src/assets/images/favourite@3x.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
src/assets/images/foodcat@2x.png
Normal file
After Width: | Height: | Size: 8.1 KiB |
BIN
src/assets/images/foodcat@3x.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
src/assets/images/frozenfood@2x.png
Executable file
After Width: | Height: | Size: 5.3 KiB |
BIN
src/assets/images/frozenfood@3x.png
Executable file
After Width: | Height: | Size: 7.7 KiB |
BIN
src/assets/images/fruit@2x.png
Executable file
After Width: | Height: | Size: 5.1 KiB |
BIN
src/assets/images/fruit@3x.png
Executable file
After Width: | Height: | Size: 9.1 KiB |
BIN
src/assets/images/goldenApple@2x.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
src/assets/images/goldenApple@3x.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
src/assets/images/google@2x.png
Executable file
After Width: | Height: | Size: 2.2 KiB |
BIN
src/assets/images/google@3x.png
Executable file
After Width: | Height: | Size: 3.2 KiB |
BIN
src/assets/images/illustration@2x.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
src/assets/images/illustration@3x.png
Normal file
After Width: | Height: | Size: 36 KiB |
48
src/assets/images/imageIndex.js
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
export const images = {
|
||||||
|
productCatalogue: {
|
||||||
|
alcoholic: require('./Alcoholic.png'),
|
||||||
|
frozenmeat: require('./Frozenmeat.png'),
|
||||||
|
drink: require('./drink.png'),
|
||||||
|
frozenfood: require('./frozenfood.png'),
|
||||||
|
fruit: require('./fruit.png'),
|
||||||
|
pasta: require('./pasta.png'),
|
||||||
|
seafood: require('./seafood.png'),
|
||||||
|
sneck: require('./sneck.png'),
|
||||||
|
vegetables: require('./vegetables.png'),
|
||||||
|
},
|
||||||
|
main: {
|
||||||
|
mostcheapstar: require('./mostcheapstar.png'),
|
||||||
|
ranking: require('./ranking.png'),
|
||||||
|
whiteStar: require('./whitestar.png'),
|
||||||
|
yellowStar: require('./yellowstar.png'),
|
||||||
|
goldenApple: require('./goldenApple.png'),
|
||||||
|
youmaylike: require('./youmaylike.png'),
|
||||||
|
template: require('./template.png'),
|
||||||
|
foodcat: require('./foodcat.png'),
|
||||||
|
},
|
||||||
|
details: {
|
||||||
|
share: require('./share.png'),
|
||||||
|
favourite: require('./favourite.png'),
|
||||||
|
comment: require('./comment.png'),
|
||||||
|
},
|
||||||
|
signIn: {
|
||||||
|
illustration: require('./illustration.png'),
|
||||||
|
facebook: require('./facebook.png'),
|
||||||
|
google: require('./google.png'),
|
||||||
|
bitMap: require('./Bitmap.png'),
|
||||||
|
logo: require('./logo.png'),
|
||||||
|
},
|
||||||
|
profile: {
|
||||||
|
creditCardIcon: require('./creditcardicon.png'),
|
||||||
|
profileShare: require('./profileshare.png'),
|
||||||
|
},
|
||||||
|
search: {
|
||||||
|
greenMagnifier: require('./Icon_Magnifier.png'),
|
||||||
|
smallGreenMagnifier: require('./Icon_Magnifier_Small.png'),
|
||||||
|
},
|
||||||
|
tutorial:{
|
||||||
|
tut1:require('./tut1.png'),
|
||||||
|
tut2:require('./tut2.png'),
|
||||||
|
tut3:require('./tut3.png'),
|
||||||
|
}
|
||||||
|
};
|
BIN
src/assets/images/logo@2x.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
src/assets/images/logo@3x.png
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
src/assets/images/mostcheapstar@2x.png
Executable file
After Width: | Height: | Size: 2.6 KiB |
BIN
src/assets/images/mostcheapstar@3x.png
Executable file
After Width: | Height: | Size: 3.9 KiB |
BIN
src/assets/images/noimage.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
src/assets/images/pasta@2x.png
Executable file
After Width: | Height: | Size: 10 KiB |
BIN
src/assets/images/pasta@3x.png
Executable file
After Width: | Height: | Size: 18 KiB |
BIN
src/assets/images/profileshare@2x.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
src/assets/images/profileshare@3x.png
Normal file
After Width: | Height: | Size: 6.7 KiB |
BIN
src/assets/images/puremall301.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
src/assets/images/puremall601.png
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
src/assets/images/ranking@2x.png
Executable file
After Width: | Height: | Size: 1.4 KiB |
BIN
src/assets/images/ranking@3x.png
Executable file
After Width: | Height: | Size: 2.0 KiB |
BIN
src/assets/images/seafood@2x.png
Executable file
After Width: | Height: | Size: 10 KiB |
BIN
src/assets/images/seafood@3x.png
Executable file
After Width: | Height: | Size: 17 KiB |
BIN
src/assets/images/search@2x.png
Executable file
After Width: | Height: | Size: 742 B |
BIN
src/assets/images/search@3x.png
Executable file
After Width: | Height: | Size: 1.0 KiB |
BIN
src/assets/images/share@2x.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
src/assets/images/share@3x.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
src/assets/images/sneck@2x.png
Executable file
After Width: | Height: | Size: 8.9 KiB |
BIN
src/assets/images/sneck@3x.png
Executable file
After Width: | Height: | Size: 14 KiB |
BIN
src/assets/images/template.png
Normal file
After Width: | Height: | Size: 1.5 MiB |
BIN
src/assets/images/tut1.png
Normal file
After Width: | Height: | Size: 583 KiB |
BIN
src/assets/images/tut2.png
Normal file
After Width: | Height: | Size: 910 KiB |
BIN
src/assets/images/tut3.png
Normal file
After Width: | Height: | Size: 695 KiB |
BIN
src/assets/images/vegetables@2x.png
Executable file
After Width: | Height: | Size: 5.5 KiB |
BIN
src/assets/images/vegetables@3x.png
Executable file
After Width: | Height: | Size: 9.6 KiB |
BIN
src/assets/images/whitestar@2x.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
src/assets/images/whitestar@3x.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
src/assets/images/yellowstar@2x.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
src/assets/images/yellowstar@3x.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
src/assets/images/youmaylike@2x.png
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
src/assets/images/youmaylike@3x.png
Normal file
After Width: | Height: | Size: 16 KiB |
981
src/assets/lottie/782-check-mark-success.json
Normal file
@@ -0,0 +1,981 @@
|
|||||||
|
{
|
||||||
|
"v": "4.10.1",
|
||||||
|
"fr": 30,
|
||||||
|
"ip": 0,
|
||||||
|
"op": 40,
|
||||||
|
"w": 80,
|
||||||
|
"h": 80,
|
||||||
|
"nm": "Success Checkmark",
|
||||||
|
"ddd": 0,
|
||||||
|
"assets": [],
|
||||||
|
"layers": [
|
||||||
|
{
|
||||||
|
"ddd": 0,
|
||||||
|
"ind": 1,
|
||||||
|
"ty": 4,
|
||||||
|
"nm": "Check Mark",
|
||||||
|
"sr": 1,
|
||||||
|
"ks": {
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 11
|
||||||
|
},
|
||||||
|
"r": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 10
|
||||||
|
},
|
||||||
|
"p": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
40,
|
||||||
|
40,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"a": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
-1.312,
|
||||||
|
6,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 1
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"ix": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ao": 0,
|
||||||
|
"shapes": [
|
||||||
|
{
|
||||||
|
"ty": "gr",
|
||||||
|
"it": [
|
||||||
|
{
|
||||||
|
"ind": 0,
|
||||||
|
"ty": "sh",
|
||||||
|
"ix": 1,
|
||||||
|
"ks": {
|
||||||
|
"a": 0,
|
||||||
|
"k": {
|
||||||
|
"i": [
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"o": [
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"v": [
|
||||||
|
[
|
||||||
|
-15.75,
|
||||||
|
8
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-8,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
[
|
||||||
|
13.125,
|
||||||
|
-4
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"c": false
|
||||||
|
},
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"nm": "Path 1",
|
||||||
|
"mn": "ADBE Vector Shape - Group",
|
||||||
|
"hd": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ty": "tm",
|
||||||
|
"s": {
|
||||||
|
"a": 1,
|
||||||
|
"k": [
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": [
|
||||||
|
0.667
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": [
|
||||||
|
0.333
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"n": [
|
||||||
|
"0p667_1_0p333_0"
|
||||||
|
],
|
||||||
|
"t": 25,
|
||||||
|
"s": [
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
100
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 33
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ix": 1
|
||||||
|
},
|
||||||
|
"e": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 3
|
||||||
|
},
|
||||||
|
"m": 1,
|
||||||
|
"ix": 2,
|
||||||
|
"nm": "Trim Paths 1",
|
||||||
|
"mn": "ADBE Vector Filter - Trim",
|
||||||
|
"hd": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ty": "st",
|
||||||
|
"c": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"ix": 3
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 4
|
||||||
|
},
|
||||||
|
"w": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 3,
|
||||||
|
"ix": 5
|
||||||
|
},
|
||||||
|
"lc": 2,
|
||||||
|
"lj": 2,
|
||||||
|
"nm": "Stroke 1",
|
||||||
|
"mn": "ADBE Vector Graphic - Stroke",
|
||||||
|
"hd": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ty": "tr",
|
||||||
|
"p": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"a": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 1
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
100,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"ix": 3
|
||||||
|
},
|
||||||
|
"r": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 6
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 7
|
||||||
|
},
|
||||||
|
"sk": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 4
|
||||||
|
},
|
||||||
|
"sa": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 5
|
||||||
|
},
|
||||||
|
"nm": "Transform"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"nm": "Shape 1",
|
||||||
|
"np": 3,
|
||||||
|
"cix": 2,
|
||||||
|
"ix": 1,
|
||||||
|
"mn": "ADBE Vector Group",
|
||||||
|
"hd": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ip": 0,
|
||||||
|
"op": 40,
|
||||||
|
"st": 0,
|
||||||
|
"bm": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ddd": 0,
|
||||||
|
"ind": 2,
|
||||||
|
"ty": 4,
|
||||||
|
"nm": "Circle Flash",
|
||||||
|
"sr": 1,
|
||||||
|
"ks": {
|
||||||
|
"o": {
|
||||||
|
"a": 1,
|
||||||
|
"k": [
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": [
|
||||||
|
0.833
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
0.833
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": [
|
||||||
|
0.167
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
0.167
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"n": [
|
||||||
|
"0p833_0p833_0p167_0p167"
|
||||||
|
],
|
||||||
|
"t": 25,
|
||||||
|
"s": [
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
98
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": [
|
||||||
|
0.833
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
0.833
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": [
|
||||||
|
0.167
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
0.167
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"n": [
|
||||||
|
"0p833_0p833_0p167_0p167"
|
||||||
|
],
|
||||||
|
"t": 30,
|
||||||
|
"s": [
|
||||||
|
98
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 38
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ix": 11
|
||||||
|
},
|
||||||
|
"r": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 10
|
||||||
|
},
|
||||||
|
"p": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
40,
|
||||||
|
40,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"a": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 1
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"a": 1,
|
||||||
|
"k": [
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": [
|
||||||
|
0.667,
|
||||||
|
0.667,
|
||||||
|
0.667
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": [
|
||||||
|
0.333,
|
||||||
|
0.333,
|
||||||
|
0.333
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"n": [
|
||||||
|
"0p667_1_0p333_0",
|
||||||
|
"0p667_1_0p333_0",
|
||||||
|
"0p667_1_0p333_0"
|
||||||
|
],
|
||||||
|
"t": 25,
|
||||||
|
"s": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
100
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 30
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ix": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ao": 0,
|
||||||
|
"shapes": [
|
||||||
|
{
|
||||||
|
"d": 1,
|
||||||
|
"ty": "el",
|
||||||
|
"s": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
64,
|
||||||
|
64
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"p": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 3
|
||||||
|
},
|
||||||
|
"nm": "Ellipse Path 1",
|
||||||
|
"mn": "ADBE Vector Shape - Ellipse",
|
||||||
|
"hd": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ty": "fl",
|
||||||
|
"c": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0.529866635799,
|
||||||
|
0.961458325386,
|
||||||
|
0.448091417551,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"ix": 4
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 5
|
||||||
|
},
|
||||||
|
"r": 1,
|
||||||
|
"nm": "Fill 1",
|
||||||
|
"mn": "ADBE Vector Graphic - Fill",
|
||||||
|
"hd": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ip": 0,
|
||||||
|
"op": 40,
|
||||||
|
"st": 0,
|
||||||
|
"bm": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ddd": 0,
|
||||||
|
"ind": 3,
|
||||||
|
"ty": 4,
|
||||||
|
"nm": "Circle Stroke",
|
||||||
|
"sr": 1,
|
||||||
|
"ks": {
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 11
|
||||||
|
},
|
||||||
|
"r": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 10
|
||||||
|
},
|
||||||
|
"p": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
39.022,
|
||||||
|
39.022,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"a": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 1
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"a": 1,
|
||||||
|
"k": [
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": [
|
||||||
|
0.667,
|
||||||
|
0.667,
|
||||||
|
0.667
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": [
|
||||||
|
0.333,
|
||||||
|
0.333,
|
||||||
|
0.333
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"n": [
|
||||||
|
"0p667_1_0p333_0",
|
||||||
|
"0p667_1_0p333_0",
|
||||||
|
"0p667_1_0p333_0"
|
||||||
|
],
|
||||||
|
"t": 16,
|
||||||
|
"s": [
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
80,
|
||||||
|
80,
|
||||||
|
100
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": [
|
||||||
|
0.667,
|
||||||
|
0.667,
|
||||||
|
0.667
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": [
|
||||||
|
0.333,
|
||||||
|
0.333,
|
||||||
|
0.333
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"n": [
|
||||||
|
"0p667_1_0p333_0",
|
||||||
|
"0p667_1_0p333_0",
|
||||||
|
"0p667_1_0p333_0"
|
||||||
|
],
|
||||||
|
"t": 22,
|
||||||
|
"s": [
|
||||||
|
80,
|
||||||
|
80,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
120,
|
||||||
|
120,
|
||||||
|
100
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": [
|
||||||
|
0.667,
|
||||||
|
0.667,
|
||||||
|
0.667
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": [
|
||||||
|
0.333,
|
||||||
|
0.333,
|
||||||
|
0.333
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"n": [
|
||||||
|
"0p667_1_0p333_0",
|
||||||
|
"0p667_1_0p333_0",
|
||||||
|
"0p667_1_0p333_0"
|
||||||
|
],
|
||||||
|
"t": 25,
|
||||||
|
"s": [
|
||||||
|
120,
|
||||||
|
120,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
100
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 29
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ix": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ao": 0,
|
||||||
|
"shapes": [
|
||||||
|
{
|
||||||
|
"ty": "gr",
|
||||||
|
"it": [
|
||||||
|
{
|
||||||
|
"d": 1,
|
||||||
|
"ty": "el",
|
||||||
|
"s": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
60,
|
||||||
|
60
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"p": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 3
|
||||||
|
},
|
||||||
|
"nm": "Ellipse Path 1",
|
||||||
|
"mn": "ADBE Vector Shape - Ellipse",
|
||||||
|
"hd": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ty": "tm",
|
||||||
|
"s": {
|
||||||
|
"a": 1,
|
||||||
|
"k": [
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": [
|
||||||
|
0.667
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": [
|
||||||
|
0.333
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"n": [
|
||||||
|
"0p667_1_0p333_0"
|
||||||
|
],
|
||||||
|
"t": 0,
|
||||||
|
"s": [
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
100
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 16
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ix": 1
|
||||||
|
},
|
||||||
|
"e": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 3
|
||||||
|
},
|
||||||
|
"m": 1,
|
||||||
|
"ix": 2,
|
||||||
|
"nm": "Trim Paths 1",
|
||||||
|
"mn": "ADBE Vector Filter - Trim",
|
||||||
|
"hd": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ty": "st",
|
||||||
|
"c": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0.427450984716,
|
||||||
|
0.800000011921,
|
||||||
|
0.35686275363,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"ix": 3
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 4
|
||||||
|
},
|
||||||
|
"w": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 3,
|
||||||
|
"ix": 5
|
||||||
|
},
|
||||||
|
"lc": 2,
|
||||||
|
"lj": 2,
|
||||||
|
"nm": "Stroke 1",
|
||||||
|
"mn": "ADBE Vector Graphic - Stroke",
|
||||||
|
"hd": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ty": "tr",
|
||||||
|
"p": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0.978,
|
||||||
|
0.978
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"a": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 1
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
100,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"ix": 3
|
||||||
|
},
|
||||||
|
"r": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 6
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 7
|
||||||
|
},
|
||||||
|
"sk": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 4
|
||||||
|
},
|
||||||
|
"sa": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 5
|
||||||
|
},
|
||||||
|
"nm": "Transform"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"nm": "Ellipse 1",
|
||||||
|
"np": 3,
|
||||||
|
"cix": 2,
|
||||||
|
"ix": 1,
|
||||||
|
"mn": "ADBE Vector Group",
|
||||||
|
"hd": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ip": 0,
|
||||||
|
"op": 40,
|
||||||
|
"st": 0,
|
||||||
|
"bm": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ddd": 0,
|
||||||
|
"ind": 4,
|
||||||
|
"ty": 4,
|
||||||
|
"nm": "Circle Green Fill",
|
||||||
|
"sr": 1,
|
||||||
|
"ks": {
|
||||||
|
"o": {
|
||||||
|
"a": 1,
|
||||||
|
"k": [
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": [
|
||||||
|
0.833
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
0.833
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": [
|
||||||
|
0.167
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
0.167
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"n": [
|
||||||
|
"0p833_0p833_0p167_0p167"
|
||||||
|
],
|
||||||
|
"t": 21,
|
||||||
|
"s": [
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
98
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 28
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ix": 11
|
||||||
|
},
|
||||||
|
"r": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 10
|
||||||
|
},
|
||||||
|
"p": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
40,
|
||||||
|
40,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"a": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 1
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"a": 1,
|
||||||
|
"k": [
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": [
|
||||||
|
0.667,
|
||||||
|
0.667,
|
||||||
|
0.667
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": [
|
||||||
|
0.333,
|
||||||
|
0.333,
|
||||||
|
0.333
|
||||||
|
],
|
||||||
|
"y": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"n": [
|
||||||
|
"0p667_1_0p333_0",
|
||||||
|
"0p667_1_0p333_0",
|
||||||
|
"0p667_1_0p333_0"
|
||||||
|
],
|
||||||
|
"t": 21,
|
||||||
|
"s": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
100
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 28
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ix": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ao": 0,
|
||||||
|
"shapes": [
|
||||||
|
{
|
||||||
|
"d": 1,
|
||||||
|
"ty": "el",
|
||||||
|
"s": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
64,
|
||||||
|
64
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"p": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 3
|
||||||
|
},
|
||||||
|
"nm": "Ellipse Path 1",
|
||||||
|
"mn": "ADBE Vector Shape - Ellipse",
|
||||||
|
"hd": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ty": "fl",
|
||||||
|
"c": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0.427450984716,
|
||||||
|
0.800000011921,
|
||||||
|
0.35686275363,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"ix": 4
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 5
|
||||||
|
},
|
||||||
|
"r": 1,
|
||||||
|
"nm": "Fill 1",
|
||||||
|
"mn": "ADBE Vector Graphic - Fill",
|
||||||
|
"hd": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ip": 0,
|
||||||
|
"op": 40,
|
||||||
|
"st": 0,
|
||||||
|
"bm": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
708
src/assets/lottie/loading.json
Normal file
@@ -0,0 +1,708 @@
|
|||||||
|
{
|
||||||
|
"v": "5.6.10",
|
||||||
|
"fr": 120,
|
||||||
|
"ip": 0,
|
||||||
|
"op": 160,
|
||||||
|
"w": 1000,
|
||||||
|
"h": 1000,
|
||||||
|
"nm": "Composição 1",
|
||||||
|
"ddd": 0,
|
||||||
|
"assets": [],
|
||||||
|
"layers": [
|
||||||
|
{
|
||||||
|
"ddd": 0,
|
||||||
|
"ind": 1,
|
||||||
|
"ty": 4,
|
||||||
|
"nm": "Left",
|
||||||
|
"sr": 1,
|
||||||
|
"ks": {
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 11
|
||||||
|
},
|
||||||
|
"r": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 10
|
||||||
|
},
|
||||||
|
"p": {
|
||||||
|
"a": 1,
|
||||||
|
"k": [
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": 0.833,
|
||||||
|
"y": 0.833
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": 0.333,
|
||||||
|
"y": 0.333
|
||||||
|
},
|
||||||
|
"t": 0,
|
||||||
|
"s": [
|
||||||
|
650,
|
||||||
|
500,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
650,
|
||||||
|
500,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ti": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": 0.667,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": 0.333,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"t": 20,
|
||||||
|
"s": [
|
||||||
|
650,
|
||||||
|
500,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
650,
|
||||||
|
300,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
0,
|
||||||
|
-33.333,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ti": [
|
||||||
|
-3.333,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": 0.209,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": 0.333,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"t": 70,
|
||||||
|
"s": [
|
||||||
|
650,
|
||||||
|
300,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
650,
|
||||||
|
500,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
3.329,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ti": [
|
||||||
|
-0.005,
|
||||||
|
-0.047,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 120
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"a": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
-233,
|
||||||
|
-9,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 1
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"ix": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ao": 0,
|
||||||
|
"shapes": [
|
||||||
|
{
|
||||||
|
"ty": "gr",
|
||||||
|
"it": [
|
||||||
|
{
|
||||||
|
"d": 1,
|
||||||
|
"ty": "el",
|
||||||
|
"s": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
90,
|
||||||
|
90
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"p": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 3
|
||||||
|
},
|
||||||
|
"nm": "Caminho da elipse 1",
|
||||||
|
"mn": "ADBE Vector Shape - Ellipse",
|
||||||
|
"hd": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ty": "fl",
|
||||||
|
"c": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"ix": 4
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 5
|
||||||
|
},
|
||||||
|
"r": 1,
|
||||||
|
"bm": 0,
|
||||||
|
"nm": "Preenchimento 1",
|
||||||
|
"mn": "ADBE Vector Graphic - Fill",
|
||||||
|
"hd": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ty": "tr",
|
||||||
|
"p": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
-233,
|
||||||
|
-9
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"a": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 1
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
100,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"ix": 3
|
||||||
|
},
|
||||||
|
"r": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 6
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 7
|
||||||
|
},
|
||||||
|
"sk": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 4
|
||||||
|
},
|
||||||
|
"sa": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 5
|
||||||
|
},
|
||||||
|
"nm": "Transformar"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"nm": "Elipse 1",
|
||||||
|
"np": 3,
|
||||||
|
"cix": 2,
|
||||||
|
"bm": 0,
|
||||||
|
"ix": 1,
|
||||||
|
"mn": "ADBE Vector Group",
|
||||||
|
"hd": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ip": 0,
|
||||||
|
"op": 160,
|
||||||
|
"st": 0,
|
||||||
|
"bm": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ddd": 0,
|
||||||
|
"ind": 2,
|
||||||
|
"ty": 4,
|
||||||
|
"nm": "Center",
|
||||||
|
"sr": 1,
|
||||||
|
"ks": {
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 11
|
||||||
|
},
|
||||||
|
"r": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 10
|
||||||
|
},
|
||||||
|
"p": {
|
||||||
|
"a": 1,
|
||||||
|
"k": [
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": 0.607,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": 0.333,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"t": 10,
|
||||||
|
"s": [
|
||||||
|
500,
|
||||||
|
500,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
500,
|
||||||
|
300,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
0,
|
||||||
|
-33.333,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ti": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": 0.121,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": 0.333,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"t": 55,
|
||||||
|
"s": [
|
||||||
|
500,
|
||||||
|
300,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
500,
|
||||||
|
500,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ti": [
|
||||||
|
0,
|
||||||
|
-33.333,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 115
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"a": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
-233,
|
||||||
|
-9,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 1
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"ix": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ao": 0,
|
||||||
|
"shapes": [
|
||||||
|
{
|
||||||
|
"ty": "gr",
|
||||||
|
"it": [
|
||||||
|
{
|
||||||
|
"d": 1,
|
||||||
|
"ty": "el",
|
||||||
|
"s": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
90,
|
||||||
|
90
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"p": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 3
|
||||||
|
},
|
||||||
|
"nm": "Caminho da elipse 1",
|
||||||
|
"mn": "ADBE Vector Shape - Ellipse",
|
||||||
|
"hd": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ty": "fl",
|
||||||
|
"c": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"ix": 4
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 5
|
||||||
|
},
|
||||||
|
"r": 1,
|
||||||
|
"bm": 0,
|
||||||
|
"nm": "Preenchimento 1",
|
||||||
|
"mn": "ADBE Vector Graphic - Fill",
|
||||||
|
"hd": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ty": "tr",
|
||||||
|
"p": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
-233,
|
||||||
|
-9
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"a": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 1
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
100,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"ix": 3
|
||||||
|
},
|
||||||
|
"r": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 6
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 7
|
||||||
|
},
|
||||||
|
"sk": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 4
|
||||||
|
},
|
||||||
|
"sa": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 5
|
||||||
|
},
|
||||||
|
"nm": "Transformar"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"nm": "Elipse 1",
|
||||||
|
"np": 3,
|
||||||
|
"cix": 2,
|
||||||
|
"bm": 0,
|
||||||
|
"ix": 1,
|
||||||
|
"mn": "ADBE Vector Group",
|
||||||
|
"hd": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ip": 0,
|
||||||
|
"op": 160,
|
||||||
|
"st": 0,
|
||||||
|
"bm": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ddd": 0,
|
||||||
|
"ind": 3,
|
||||||
|
"ty": 4,
|
||||||
|
"nm": "Rigth",
|
||||||
|
"sr": 1,
|
||||||
|
"ks": {
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 11
|
||||||
|
},
|
||||||
|
"r": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 10
|
||||||
|
},
|
||||||
|
"p": {
|
||||||
|
"a": 1,
|
||||||
|
"k": [
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": 0.667,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": 0.333,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"t": 0,
|
||||||
|
"s": [
|
||||||
|
360,
|
||||||
|
500,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
360,
|
||||||
|
300,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
0,
|
||||||
|
-13.366,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ti": [
|
||||||
|
0,
|
||||||
|
36.899,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"i": {
|
||||||
|
"x": 0.163,
|
||||||
|
"y": 1
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"x": 0.333,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"t": 35,
|
||||||
|
"s": [
|
||||||
|
360,
|
||||||
|
300,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"e": [
|
||||||
|
360,
|
||||||
|
500,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"to": [
|
||||||
|
0,
|
||||||
|
-55.126,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ti": [
|
||||||
|
0,
|
||||||
|
-33.333,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": 95
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"a": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
-233,
|
||||||
|
-9,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 1
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
100,
|
||||||
|
100,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"ix": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ao": 0,
|
||||||
|
"shapes": [
|
||||||
|
{
|
||||||
|
"ty": "gr",
|
||||||
|
"it": [
|
||||||
|
{
|
||||||
|
"d": 1,
|
||||||
|
"ty": "el",
|
||||||
|
"s": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
90,
|
||||||
|
90
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"p": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 3
|
||||||
|
},
|
||||||
|
"nm": "Caminho da elipse 1",
|
||||||
|
"mn": "ADBE Vector Shape - Ellipse",
|
||||||
|
"hd": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ty": "fl",
|
||||||
|
"c": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"ix": 4
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 5
|
||||||
|
},
|
||||||
|
"r": 1,
|
||||||
|
"bm": 0,
|
||||||
|
"nm": "Preenchimento 1",
|
||||||
|
"mn": "ADBE Vector Graphic - Fill",
|
||||||
|
"hd": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ty": "tr",
|
||||||
|
"p": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
-233,
|
||||||
|
-9
|
||||||
|
],
|
||||||
|
"ix": 2
|
||||||
|
},
|
||||||
|
"a": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"ix": 1
|
||||||
|
},
|
||||||
|
"s": {
|
||||||
|
"a": 0,
|
||||||
|
"k": [
|
||||||
|
100,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"ix": 3
|
||||||
|
},
|
||||||
|
"r": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 6
|
||||||
|
},
|
||||||
|
"o": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 100,
|
||||||
|
"ix": 7
|
||||||
|
},
|
||||||
|
"sk": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 4
|
||||||
|
},
|
||||||
|
"sa": {
|
||||||
|
"a": 0,
|
||||||
|
"k": 0,
|
||||||
|
"ix": 5
|
||||||
|
},
|
||||||
|
"nm": "Transformar"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"nm": "Elipse 1",
|
||||||
|
"np": 3,
|
||||||
|
"cix": 2,
|
||||||
|
"bm": 0,
|
||||||
|
"ix": 1,
|
||||||
|
"mn": "ADBE Vector Group",
|
||||||
|
"hd": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ip": 0,
|
||||||
|
"op": 160,
|
||||||
|
"st": 0,
|
||||||
|
"bm": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"markers": []
|
||||||
|
}
|
BIN
src/assets/screenshot/1.png
Normal file
After Width: | Height: | Size: 2.4 MiB |
BIN
src/assets/screenshot/2.png
Normal file
After Width: | Height: | Size: 2.7 MiB |
BIN
src/assets/screenshot/3.png
Normal file
After Width: | Height: | Size: 1.3 MiB |
BIN
src/assets/screenshot/4.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
src/assets/screenshot/5.png
Normal file
After Width: | Height: | Size: 1.8 MiB |
BIN
src/assets/screenshot/6.png
Normal file
After Width: | Height: | Size: 5.6 MiB |
BIN
src/assets/screenshot/7.png
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
src/assets/screenshot/banner.png
Normal file
After Width: | Height: | Size: 359 KiB |
30
src/assets/styles/colors-theme.js
Executable file
@@ -0,0 +1,30 @@
|
|||||||
|
/**
|
||||||
|
* 控制全app的颜色
|
||||||
|
* @type {{statusBarColor: string}}
|
||||||
|
*/
|
||||||
|
export const colors = {
|
||||||
|
backgroundColor:'#4AB066',
|
||||||
|
labelColor: '#A4A3A7',
|
||||||
|
bgc: 'white',
|
||||||
|
catColor: '#D0B895',
|
||||||
|
historyListColor: '#F6EFE0',
|
||||||
|
statusBarColor: '#23A2FF',
|
||||||
|
inputBgc: '#E6E7E8',
|
||||||
|
signupInputBgc: '#F0E1C9',
|
||||||
|
shoppingcartColor: '#F0DEC1',
|
||||||
|
inputText: '#4D4D4D',
|
||||||
|
profileBg: '#D29686',
|
||||||
|
mainColor: '#3EB873',
|
||||||
|
otherGreen: '#6EB7A0',
|
||||||
|
maingray: '#888A8D',
|
||||||
|
lineColor: '#E5E5E5',
|
||||||
|
textColor: '#000000',
|
||||||
|
subTextColor: '#98AD86',
|
||||||
|
baseColor: '#1BBC9B',
|
||||||
|
line2Color: '#9EA3A6',
|
||||||
|
borderLineColor: '#E6E6E6',
|
||||||
|
loginButtonColor: '#3E9B42',
|
||||||
|
titleColor: '#57A75A',
|
||||||
|
grayTextColor: '#E9E9E9',
|
||||||
|
shoppingGroupColor: '#F7F7F7',
|
||||||
|
};
|
91
src/components/Loading.js
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
import React, {Component} from 'react';
|
||||||
|
import {
|
||||||
|
Platform,
|
||||||
|
StyleSheet,
|
||||||
|
Text,
|
||||||
|
View,
|
||||||
|
Modal,
|
||||||
|
ActivityIndicator,
|
||||||
|
} from 'react-native';
|
||||||
|
import Spinner from 'react-native-loading-spinner-overlay';
|
||||||
|
import {colors} from '../assets/styles/colors-theme';
|
||||||
|
import LottieView from 'lottie-react-native';
|
||||||
|
import {width, height} from '../services/screen';
|
||||||
|
|
||||||
|
export default class Loading extends Component {
|
||||||
|
state = {
|
||||||
|
spinner: false,
|
||||||
|
};
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
transparent={true}
|
||||||
|
animationType={'none'}
|
||||||
|
visible={this.props.loading}
|
||||||
|
onRequestClose={() => {
|
||||||
|
console.log('c lose modal');
|
||||||
|
}}>
|
||||||
|
<View style={styles.modalBackground}>
|
||||||
|
<View style={styles.activityIndicatorWrapper}>
|
||||||
|
{/* <ActivityIndicator animating={this.props.loading} /> */}
|
||||||
|
<LottieView
|
||||||
|
ref={animation => {
|
||||||
|
this.animation = animation;
|
||||||
|
}}
|
||||||
|
colorFilters={[
|
||||||
|
{
|
||||||
|
keypath: 'Left',
|
||||||
|
color: colors.mainColor,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
keypath: 'Center',
|
||||||
|
color: colors.mainColor,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
keypath: 'Rigth',
|
||||||
|
color: colors.mainColor,
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
style={{height: 150, width: 150}}
|
||||||
|
source={require('../assets/lottie/loading')}
|
||||||
|
autoPlay
|
||||||
|
loop
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</Modal>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const styles = StyleSheet.flatten({
|
||||||
|
wrapper: {
|
||||||
|
position: 'absolute',
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
width: width,
|
||||||
|
height: height,
|
||||||
|
},
|
||||||
|
loading: {
|
||||||
|
position: 'absolute',
|
||||||
|
top: height / 2 - 100,
|
||||||
|
left: width / 2 - 70,
|
||||||
|
width: 140,
|
||||||
|
height: 140,
|
||||||
|
},
|
||||||
|
modalBackground: {
|
||||||
|
flex: 1,
|
||||||
|
alignItems: 'center',
|
||||||
|
flexDirection: 'column',
|
||||||
|
justifyContent: 'center',
|
||||||
|
},
|
||||||
|
activityIndicatorWrapper: {
|
||||||
|
height: 200,
|
||||||
|
width: 200,
|
||||||
|
borderRadius: 10,
|
||||||
|
display: 'flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'space-around',
|
||||||
|
},
|
||||||
|
});
|