Browse Source

Added app intro slider on first startup

keplyx 4 years ago
parent
commit
5c73dc8715
5 changed files with 125 additions and 209 deletions
  1. 108
    13
      App.js
  2. 1
    1
      app.json
  3. 9
    195
      package-lock.json
  4. 2
    0
      package.json
  5. 5
    0
      utils/AsyncStorageManager.js

+ 108
- 13
App.js View File

@@ -1,21 +1,85 @@
1 1
 // @flow
2 2
 
3 3
 import React from 'react';
4
-import {StyleProvider, Root, View} from 'native-base';
4
+import {Root, StyleProvider, Text} from 'native-base';
5
+import {Ionicons} from '@expo/vector-icons';
6
+import {StyleSheet, View, Image} from 'react-native'
5 7
 import AppNavigator from './navigation/AppNavigator';
6 8
 import ThemeManager from './utils/ThemeManager';
7 9
 import LocaleManager from './utils/LocaleManager';
8 10
 import * as Font from 'expo-font';
11
+import {LinearGradient} from 'expo-linear-gradient';
12
+import AppIntroSlider from 'react-native-app-intro-slider';
9 13
 // edited native-base-shoutem-theme according to
10 14
 // https://github.com/GeekyAnts/theme/pull/5/files/91f67c55ca6e65fe3af779586b506950c9f331be#diff-4cfc2dd4d5dae7954012899f2268a422
11 15
 // to allow for dynamic theme switching
12 16
 import {clearThemeCache} from 'native-base-shoutem-theme';
13 17
 import AsyncStorageManager from "./utils/AsyncStorageManager";
18
+import CustomMaterialIcon from "./components/CustomMaterialIcon";
19
+
20
+const styles = StyleSheet.create({
21
+    mainContent: {
22
+        flex: 1,
23
+        alignItems: 'center',
24
+        justifyContent: 'center',
25
+        paddingBottom: 100
26
+    },
27
+    image: {
28
+        width: 200,
29
+        height: 200,
30
+    },
31
+    text: {
32
+        color: 'rgba(255, 255, 255, 0.8)',
33
+        backgroundColor: 'transparent',
34
+        textAlign: 'center',
35
+        paddingHorizontal: 16,
36
+    },
37
+    title: {
38
+        fontSize: 22,
39
+        color: 'white',
40
+        backgroundColor: 'transparent',
41
+        textAlign: 'center',
42
+        marginBottom: 16,
43
+    },
44
+});
45
+
46
+const slides = [
47
+    {
48
+        key: '1',
49
+        title: 'L\'application de l\'Amicale',
50
+        text: 'Toutes les informations du campus de Toulouse',
51
+        image: require('./assets/amicale.png'),
52
+        colors: ['#ff8a6d', '#aa1c0d'],
53
+    },
54
+    {
55
+        key: '2',
56
+        title: 'N\'oubliez plus votre linge',
57
+        text: 'Visualisez les disponibilités des machines et rajoutez des alarmes',
58
+        icon: 'washing-machine',
59
+        colors: ['#9cd6d3', '#3186be'],
60
+    },
61
+    {
62
+        key: '3',
63
+        title: 'Le proximo',
64
+        text: 'Regardez le stock de la supérette de l\'INSA depuis n\'importe où' ,
65
+        icon: 'shopping',
66
+        colors: ['#f9a967', '#da5204'],
67
+    },
68
+    {
69
+        key: '4',
70
+        title: 'Toujours en développement',
71
+        text: 'D\'autres fonctionnalités seront disponibles prochainement',
72
+        icon: 'settings-outline',
73
+        colors: ['#9be238', '#1e6a22'],
74
+    },
75
+];
76
+
14 77
 
15 78
 type Props = {};
16 79
 
17 80
 type State = {
18 81
     isLoading: boolean,
82
+    showIntro: boolean,
19 83
     currentTheme: ?Object,
20 84
 };
21 85
 
@@ -23,6 +87,7 @@ export default class App extends React.Component<Props, State> {
23 87
 
24 88
     state = {
25 89
         isLoading: true,
90
+        showIntro: true,
26 91
         currentTheme: null,
27 92
     };
28 93
 
@@ -44,7 +109,8 @@ export default class App extends React.Component<Props, State> {
44 109
         ThemeManager.getInstance().setUpdateThemeCallback(() => this.updateTheme());
45 110
         this.setState({
46 111
             isLoading: false,
47
-            currentTheme: ThemeManager.getCurrentTheme()
112
+            currentTheme: ThemeManager.getCurrentTheme(),
113
+            showIntro: AsyncStorageManager.getInstance().preferences.showIntro.current === '1'
48 114
         });
49 115
     }
50 116
 
@@ -59,6 +125,34 @@ export default class App extends React.Component<Props, State> {
59 125
         clearThemeCache();
60 126
     }
61 127
 
128
+
129
+    getIntroRenderItem(item: Object, dimensions: Object) {
130
+        return (
131
+            <LinearGradient
132
+                style={[
133
+                    styles.mainContent,
134
+                    dimensions,
135
+                ]}
136
+                colors={item.colors}
137
+                start={{x: 0, y: 0.1}}
138
+                end={{x: 0.1, y: 1}}
139
+            >
140
+                {item.image !== undefined ?
141
+                    <Image source={item.image} style={styles.image}/>
142
+                    : <CustomMaterialIcon icon={item.icon} color={'#fff'} fontSize={200} width={200}/>}
143
+                <View style={{marginTop: 20}}>
144
+                    <Text style={styles.title}>{item.title}</Text>
145
+                    <Text style={styles.text}>{item.text}</Text>
146
+                </View>
147
+            </LinearGradient>
148
+        );
149
+    }
150
+
151
+    onIntroDone() {
152
+        this.setState({showIntro: false});
153
+        AsyncStorageManager.getInstance().savePref(AsyncStorageManager.getInstance().preferences.showIntro.key, '0');
154
+    }
155
+
62 156
     /**
63 157
      * Renders the app based on loading state
64 158
      *
@@ -68,16 +162,17 @@ export default class App extends React.Component<Props, State> {
68 162
         if (this.state.isLoading) {
69 163
             return <View/>;
70 164
         }
71
-        // console.log('rendering');
72
-        // console.log(this.state.currentTheme.variables.containerBgColor);
73
-        return (
74
-            <Root>
75
-                <StyleProvider style={this.state.currentTheme}>
76
-
77
-                    <AppNavigator/>
78
-
79
-                </StyleProvider>
80
-            </Root>
81
-        );
165
+        if (this.state.showIntro) {
166
+            return <AppIntroSlider renderItem={({item, dimensions}) => this.getIntroRenderItem(item, dimensions)}
167
+                                   slides={slides} onDone={() => this.onIntroDone()} bottomButton showSkipButton/>;
168
+        } else {
169
+            return (
170
+                <Root>
171
+                    <StyleProvider style={this.state.currentTheme}>
172
+                        <AppNavigator/>
173
+                    </StyleProvider>
174
+                </Root>
175
+            );
176
+        }
82 177
     }
83 178
 }

+ 1
- 1
app.json View File

@@ -9,7 +9,7 @@
9 9
       "android",
10 10
       "web"
11 11
     ],
12
-    "version": "0.0.3",
12
+    "version": "0.0.4",
13 13
     "orientation": "portrait",
14 14
     "icon": "./assets/icon.png",
15 15
     "primaryColor": "#e42612",

+ 9
- 195
package-lock.json View File

@@ -1551,11 +1551,6 @@
1551 1551
       "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
1552 1552
       "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw="
1553 1553
     },
1554
-    "array-find-index": {
1555
-      "version": "1.0.2",
1556
-      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
1557
-      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E="
1558
-    },
1559 1554
     "array-map": {
1560 1555
       "version": "0.0.0",
1561 1556
       "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
@@ -2271,27 +2266,6 @@
2271 2266
         "which": "^1.2.9"
2272 2267
       }
2273 2268
     },
2274
-    "css-in-js-utils": {
2275
-      "version": "2.0.1",
2276
-      "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz",
2277
-      "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==",
2278
-      "requires": {
2279
-        "hyphenate-style-name": "^1.0.2",
2280
-        "isobject": "^3.0.1"
2281
-      },
2282
-      "dependencies": {
2283
-        "isobject": {
2284
-          "version": "3.0.1",
2285
-          "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
2286
-          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
2287
-        }
2288
-      }
2289
-    },
2290
-    "debounce": {
2291
-      "version": "1.2.0",
2292
-      "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz",
2293
-      "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg=="
2294
-    },
2295 2269
     "debug": {
2296 2270
       "version": "4.1.1",
2297 2271
       "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
@@ -2315,14 +2289,6 @@
2315 2289
       "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.6.0.tgz",
2316 2290
       "integrity": "sha1-Dm2o8M5Sg471zsXI+TlrDBtko8s="
2317 2291
     },
2318
-    "deep-assign": {
2319
-      "version": "3.0.0",
2320
-      "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-3.0.0.tgz",
2321
-      "integrity": "sha512-YX2i9XjJ7h5q/aQ/IM9PEwEnDqETAIYbggmdDB3HLTlSgo1CxPsj6pvhPG68rq6SVE0+p+6Ywsm5fTYNrYtBWw==",
2322
-      "requires": {
2323
-        "is-obj": "^1.0.0"
2324
-      }
2325
-    },
2326 2292
     "define-property": {
2327 2293
       "version": "2.0.2",
2328 2294
       "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
@@ -2624,6 +2590,11 @@
2624 2590
           "requires": {
2625 2591
             "lodash": "^4.17.4"
2626 2592
           }
2593
+        },
2594
+        "expo-linear-gradient": {
2595
+          "version": "5.0.1",
2596
+          "resolved": "https://registry.npmjs.org/expo-linear-gradient/-/expo-linear-gradient-5.0.1.tgz",
2597
+          "integrity": "sha512-5dKn9JIXmXXHq6itC/Jpqo65Tkgjwacyw1kpD8sekoFTEVfT6ciFd2djqIcciUqIa57FF/5d2q54mUvjoqD/TA=="
2627 2598
         }
2628 2599
       }
2629 2600
     },
@@ -3865,14 +3836,6 @@
3865 3836
       "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
3866 3837
       "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w=="
3867 3838
     },
3868
-    "html-parse-stringify2": {
3869
-      "version": "2.0.1",
3870
-      "resolved": "https://registry.npmjs.org/html-parse-stringify2/-/html-parse-stringify2-2.0.1.tgz",
3871
-      "integrity": "sha1-3FZwtyksoVi3vJFsmmc1rIhyg0o=",
3872
-      "requires": {
3873
-        "void-elements": "^2.0.1"
3874
-      }
3875
-    },
3876 3839
     "http-errors": {
3877 3840
       "version": "1.7.3",
3878 3841
       "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
@@ -3885,24 +3848,11 @@
3885 3848
         "toidentifier": "1.0.0"
3886 3849
       }
3887 3850
     },
3888
-    "hyphenate-style-name": {
3889
-      "version": "1.0.3",
3890
-      "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz",
3891
-      "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ=="
3892
-    },
3893 3851
     "i18n-js": {
3894 3852
       "version": "3.3.0",
3895 3853
       "resolved": "https://registry.npmjs.org/i18n-js/-/i18n-js-3.3.0.tgz",
3896 3854
       "integrity": "sha512-+m8jh84IIWlFwEJgwrWCkeIwIES9ilJKBOj5qx8ZTLLmlPz7bjKnCdxf254wRf6M4pkQHtgXGT9r9lGk0e9aug=="
3897 3855
     },
3898
-    "i18next": {
3899
-      "version": "17.0.4",
3900
-      "resolved": "https://registry.npmjs.org/i18next/-/i18next-17.0.4.tgz",
3901
-      "integrity": "sha512-+lwmv3FT8Sv/HwVPjkR6rtEFhgOqt9L/CTehzyxvL/NdkeUYbFZJfE57MsBToB6LFWg3d0sZJIVgYqCpWzUyLQ==",
3902
-      "requires": {
3903
-        "@babel/runtime": "^7.3.1"
3904
-      }
3905
-    },
3906 3856
     "iconv-lite": {
3907 3857
       "version": "0.4.24",
3908 3858
       "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -3949,14 +3899,6 @@
3949 3899
       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
3950 3900
       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
3951 3901
     },
3952
-    "inline-style-prefixer": {
3953
-      "version": "5.1.0",
3954
-      "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-5.1.0.tgz",
3955
-      "integrity": "sha512-giteQHPMrApQOSjNSjteO5ZGSGMRf9gas14fRy2lg2buSc1nRnj6o6xuNds5cMTKrkncyrTu3gJn/yflFMVdmg==",
3956
-      "requires": {
3957
-        "css-in-js-utils": "^2.0.0"
3958
-      }
3959
-    },
3960 3902
     "inquirer": {
3961 3903
       "version": "3.3.0",
3962 3904
       "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
@@ -4093,11 +4035,6 @@
4093 4035
         "kind-of": "^3.0.2"
4094 4036
       }
4095 4037
     },
4096
-    "is-obj": {
4097
-      "version": "1.0.1",
4098
-      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
4099
-      "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8="
4100
-    },
4101 4038
     "is-plain-object": {
4102 4039
       "version": "2.0.4",
4103 4040
       "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
@@ -4284,14 +4221,6 @@
4284 4221
         "invert-kv": "^1.0.0"
4285 4222
       }
4286 4223
     },
4287
-    "linkify-it": {
4288
-      "version": "1.2.4",
4289
-      "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-1.2.4.tgz",
4290
-      "integrity": "sha1-B3NSbDF8j9E71TTuHRgP+Iq/iBo=",
4291
-      "requires": {
4292
-        "uc.micro": "^1.0.1"
4293
-      }
4294
-    },
4295 4224
     "load-json-file": {
4296 4225
       "version": "2.0.0",
4297 4226
       "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
@@ -4440,11 +4369,6 @@
4440 4369
         "buffer-alloc": "^1.1.0"
4441 4370
       }
4442 4371
     },
4443
-    "mdurl": {
4444
-      "version": "1.0.1",
4445
-      "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
4446
-      "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
4447
-    },
4448 4372
     "mem": {
4449 4373
       "version": "1.1.0",
4450 4374
       "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
@@ -5107,11 +5031,6 @@
5107 5031
       "resolved": "https://registry.npmjs.org/noop-fn/-/noop-fn-1.0.0.tgz",
5108 5032
       "integrity": "sha1-XzPUfxPSFQ35PgywNmmemC94/78="
5109 5033
     },
5110
-    "normalize-css-color": {
5111
-      "version": "1.0.2",
5112
-      "resolved": "https://registry.npmjs.org/normalize-css-color/-/normalize-css-color-1.0.2.tgz",
5113
-      "integrity": "sha1-Apkel8zOxmI/5XOvu/Deah8+n40="
5114
-    },
5115 5034
     "normalize-package-data": {
5116 5035
       "version": "2.5.0",
5117 5036
       "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@@ -5800,15 +5719,6 @@
5800 5719
         "warning": "^3.0.0"
5801 5720
       }
5802 5721
     },
5803
-    "react-i18next": {
5804
-      "version": "10.11.4",
5805
-      "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-10.11.4.tgz",
5806
-      "integrity": "sha512-/CWXaf3a5BLNeVnBGxzWOIZLQgSNEc2LWHX4ZaJb7ww0xgY0S5K9HRAMzJIHeHGe7jfpSraprD66VDblWb4ZXA==",
5807
-      "requires": {
5808
-        "@babel/runtime": "^7.3.1",
5809
-        "html-parse-stringify2": "2.0.1"
5810
-      }
5811
-    },
5812 5722
     "react-is": {
5813 5723
       "version": "16.8.6",
5814 5724
       "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz",
@@ -5935,13 +5845,10 @@
5935 5845
         }
5936 5846
       }
5937 5847
     },
5938
-    "react-native-animatable": {
5939
-      "version": "1.3.2",
5940
-      "resolved": "https://registry.npmjs.org/react-native-animatable/-/react-native-animatable-1.3.2.tgz",
5941
-      "integrity": "sha512-rmah3KQ63ft8DxkzFUwJSuZeq+oSYwldoGF4DTOR5WM2WR5wiWLgBAtrAHlI3Di3by323uOR21s+MlqPcHz2Kw==",
5942
-      "requires": {
5943
-        "prop-types": "^15.5.10"
5944
-      }
5848
+    "react-native-app-intro-slider": {
5849
+      "version": "3.0.0",
5850
+      "resolved": "https://registry.npmjs.org/react-native-app-intro-slider/-/react-native-app-intro-slider-3.0.0.tgz",
5851
+      "integrity": "sha512-2XXUYnSeMYZTLhdRYHSwv8mhoyuEaYxmQfXrWQInH1QvjsnJtKgvORI3bJuJN+tNPg3aut6JYYCNOFsI5of32A=="
5945 5852
     },
5946 5853
     "react-native-autolink": {
5947 5854
       "version": "1.8.1",
@@ -5984,28 +5891,6 @@
5984 5891
         "prop-types": "^15.5.10"
5985 5892
       }
5986 5893
     },
5987
-    "react-native-hyperlink": {
5988
-      "version": "0.0.14",
5989
-      "resolved": "https://registry.npmjs.org/react-native-hyperlink/-/react-native-hyperlink-0.0.14.tgz",
5990
-      "integrity": "sha1-E4u/5bQQZn0eN/BKK0cTFjqw7YE=",
5991
-      "requires": {
5992
-        "linkify-it": "^1.2.0",
5993
-        "mdurl": "^1.0.0"
5994
-      }
5995
-    },
5996
-    "react-native-image-pan-zoom": {
5997
-      "version": "2.1.11",
5998
-      "resolved": "https://registry.npmjs.org/react-native-image-pan-zoom/-/react-native-image-pan-zoom-2.1.11.tgz",
5999
-      "integrity": "sha512-ZCisGUFpPchHXsjT7ZI0anlSLPgcTmjRKXqpVnPu3RDWFXfKjuL4zpY57DX4Y8YgGZCpbf9fApN7KjVYody2Mw=="
6000
-    },
6001
-    "react-native-image-zoom-viewer": {
6002
-      "version": "2.2.26",
6003
-      "resolved": "https://registry.npmjs.org/react-native-image-zoom-viewer/-/react-native-image-zoom-viewer-2.2.26.tgz",
6004
-      "integrity": "sha512-Mh4+CJQCDcAumLFXLlDk8nQ5iMxNnupc9HwktsZ3I/v4HULcFPmTLDQ0HGAxjLa5foZRPnKDN06iKGsEb9raoA==",
6005
-      "requires": {
6006
-        "react-native-image-pan-zoom": "^2.1.9"
6007
-      }
6008
-    },
6009 5894
     "react-native-iphone-x-helper": {
6010 5895
       "version": "1.2.1",
6011 5896
       "resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.2.1.tgz",
@@ -6020,14 +5905,6 @@
6020 5905
         "react-native-iphone-x-helper": "^1.0.3"
6021 5906
       }
6022 5907
     },
6023
-    "react-native-lightbox": {
6024
-      "version": "0.8.0",
6025
-      "resolved": "https://registry.npmjs.org/react-native-lightbox/-/react-native-lightbox-0.8.0.tgz",
6026
-      "integrity": "sha512-qiPx8ordPiDuyBNIfR0pxxNERSIeOSU0P40bpPSEMyuQ6xsI4JDghyuRFD+onRjIpNnuOolsLCbsTTjeVwAB5g==",
6027
-      "requires": {
6028
-        "prop-types": "^15.5.10"
6029
-      }
6030
-    },
6031 5908
     "react-native-maps": {
6032 5909
       "version": "0.24.2",
6033 5910
       "resolved": "https://registry.npmjs.org/react-native-maps/-/react-native-maps-0.24.2.tgz",
@@ -6042,15 +5919,6 @@
6042 5919
         "prop-types": "^15.6.0"
6043 5920
       }
6044 5921
     },
6045
-    "react-native-modal": {
6046
-      "version": "11.3.0",
6047
-      "resolved": "https://registry.npmjs.org/react-native-modal/-/react-native-modal-11.3.0.tgz",
6048
-      "integrity": "sha512-574hg0dF/gKY0jICg+D4j10F4fKQR8/u88DcVx82LU9QkuYokHr5Rn4E+BoaOUNf3BdNi1z9vzItMQEZa3M8rQ==",
6049
-      "requires": {
6050
-        "prop-types": "^15.6.2",
6051
-        "react-native-animatable": "^1.3.1"
6052
-      }
6053
-    },
6054 5922
     "react-native-platform-touchable": {
6055 5923
       "version": "1.1.1",
6056 5924
       "resolved": "https://registry.npmjs.org/react-native-platform-touchable/-/react-native-platform-touchable-1.1.1.tgz",
@@ -6069,11 +5937,6 @@
6069 5937
         "dedent": "^0.6.0"
6070 5938
       }
6071 5939
     },
6072
-    "react-native-scalable-image": {
6073
-      "version": "0.5.1",
6074
-      "resolved": "https://registry.npmjs.org/react-native-scalable-image/-/react-native-scalable-image-0.5.1.tgz",
6075
-      "integrity": "sha512-bUphGBuRdet6Tx2lkgD9goa6UDcQNV9piiUUWxN59cg5BY7B1OFfkcM+9gAELCBPWqYGEoADEk6MtY35b1Rbpg=="
6076
-    },
6077 5940
     "react-native-screens": {
6078 5941
       "version": "1.0.0-alpha.22",
6079 5942
       "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-1.0.0-alpha.22.tgz",
@@ -6134,45 +5997,6 @@
6134 5997
       "resolved": "https://registry.npmjs.org/react-native-view-shot/-/react-native-view-shot-2.6.0.tgz",
6135 5998
       "integrity": "sha512-yO9vWi/11m2hEJl8FrW1SMeVzFfPtMKh20MUInGqlsL0H8Ya2JGGlFfrBzx1KiFR2hFb5OdsTLYNtcVZtJ6pLQ=="
6136 5999
     },
6137
-    "react-native-web": {
6138
-      "version": "0.11.4",
6139
-      "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.11.4.tgz",
6140
-      "integrity": "sha512-xuiHd9mxtOUlCY/CY8UO25a3cX5u3qsEdhl7zXLDNbJ0nu1Tf98GsplBZgdnDB0q/LpYVPQWmjnTEerncsO2vw==",
6141
-      "requires": {
6142
-        "array-find-index": "^1.0.2",
6143
-        "create-react-class": "^15.6.2",
6144
-        "debounce": "^1.2.0",
6145
-        "deep-assign": "^3.0.0",
6146
-        "fbjs": "^1.0.0",
6147
-        "hyphenate-style-name": "^1.0.2",
6148
-        "inline-style-prefixer": "^5.0.3",
6149
-        "normalize-css-color": "^1.0.2",
6150
-        "prop-types": "^15.6.0",
6151
-        "react-timer-mixin": "^0.13.4"
6152
-      },
6153
-      "dependencies": {
6154
-        "core-js": {
6155
-          "version": "2.6.9",
6156
-          "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz",
6157
-          "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A=="
6158
-        },
6159
-        "fbjs": {
6160
-          "version": "1.0.0",
6161
-          "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz",
6162
-          "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==",
6163
-          "requires": {
6164
-            "core-js": "^2.4.1",
6165
-            "fbjs-css-vars": "^1.0.0",
6166
-            "isomorphic-fetch": "^2.1.1",
6167
-            "loose-envify": "^1.0.0",
6168
-            "object-assign": "^4.1.0",
6169
-            "promise": "^7.1.1",
6170
-            "setimmediate": "^1.0.5",
6171
-            "ua-parser-js": "^0.7.18"
6172
-          }
6173
-        }
6174
-      }
6175
-    },
6176 6000
     "react-native-webview": {
6177 6001
       "version": "5.8.1",
6178 6002
       "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-5.8.1.tgz",
@@ -7408,11 +7232,6 @@
7408 7232
       "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz",
7409 7233
       "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw=="
7410 7234
     },
7411
-    "uc.micro": {
7412
-      "version": "1.0.6",
7413
-      "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
7414
-      "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
7415
-    },
7416 7235
     "uglify-es": {
7417 7236
       "version": "3.3.9",
7418 7237
       "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz",
@@ -7644,11 +7463,6 @@
7644 7463
       "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
7645 7464
       "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
7646 7465
     },
7647
-    "void-elements": {
7648
-      "version": "2.0.1",
7649
-      "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
7650
-      "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w="
7651
-    },
7652 7466
     "walker": {
7653 7467
       "version": "1.0.7",
7654 7468
       "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",

+ 2
- 0
package.json View File

@@ -12,6 +12,7 @@
12 12
     "@shoutem/theme": "^0.11.3",
13 13
     "expo": "^33.0.7",
14 14
     "expo-font": "^5.0.1",
15
+    "expo-linear-gradient": "^5.0.1",
15 16
     "expo-localization": "^5.0.1",
16 17
     "expo-permissions": "^5.0.1",
17 18
     "i18n-js": "^3.3.0",
@@ -20,6 +21,7 @@
20 21
     "react": "^16.8.6",
21 22
     "react-dom": "^16.8.6",
22 23
     "react-native": "^0.59.9",
24
+    "react-native-app-intro-slider": "^3.0.0",
23 25
     "react-native-autolink": "^1.8.1",
24 26
     "react-native-platform-touchable": "^1.1.1",
25 27
     "react-native-status-bar-height": "^2.3.1",

+ 5
- 0
utils/AsyncStorageManager.js View File

@@ -22,6 +22,11 @@ export default class AsyncStorageManager {
22 22
 
23 23
 
24 24
     preferences = {
25
+        showIntro: {
26
+            key: 'showIntro',
27
+            default: '1',
28
+            current : '',
29
+        },
25 30
         proxiwashNotifications: {
26 31
             key: 'proxiwashNotifications',
27 32
             default: '5',

Loading…
Cancel
Save