Procházet zdrojové kódy

#47 App update to latest version of React Native and other libraries

Alex Trofimov před 4 roky
rodič
revize
8e212a3f1a
48 změnil soubory, kde provedl 2298 přidání a 1959 odebrání
  1. 223 224
      App.js
  2. 2 2
      ErrorPage.js
  3. 126 0
      Icons.js
  4. 7 7
      Theme.js
  5. 3 41
      android/app/build.gradle
  6. 4 10
      android/app/src/main/AndroidManifest.xml
  7. binární
      android/app/src/main/assets/fonts/AntDesign.ttf
  8. binární
      android/app/src/main/assets/fonts/Entypo.ttf
  9. binární
      android/app/src/main/assets/fonts/EvilIcons.ttf
  10. binární
      android/app/src/main/assets/fonts/Feather.ttf
  11. binární
      android/app/src/main/assets/fonts/FontAwesome.ttf
  12. binární
      android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf
  13. binární
      android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf
  14. binární
      android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf
  15. binární
      android/app/src/main/assets/fonts/Fontisto.ttf
  16. binární
      android/app/src/main/assets/fonts/Foundation.ttf
  17. binární
      android/app/src/main/assets/fonts/Ionicons.ttf
  18. binární
      android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf
  19. binární
      android/app/src/main/assets/fonts/MaterialIcons.ttf
  20. binární
      android/app/src/main/assets/fonts/Octicons.ttf
  21. binární
      android/app/src/main/assets/fonts/Roboto.ttf
  22. binární
      android/app/src/main/assets/fonts/Roboto_medium.ttf
  23. binární
      android/app/src/main/assets/fonts/SimpleLineIcons.ttf
  24. binární
      android/app/src/main/assets/fonts/Zocial.ttf
  25. binární
      android/app/src/main/assets/fonts/rubicon-icon-font.ttf
  26. 1 1
      android/app/src/main/java/com/una/android/MainActivity.java
  27. 2 0
      android/app/src/main/java/com/una/android/MainApplication.java
  28. 3 6
      android/build.gradle
  29. 1 1
      android/gradle.properties
  30. 4 0
      android/settings.gradle
  31. 1 1
      app.json
  32. binární
      img/logo-drawer.png
  33. 13 0
      ios/OneSignalNotificationServiceExtension/Info.plist
  34. 42 0
      ios/OneSignalNotificationServiceExtension/NotificationService.swift
  35. 10 0
      ios/OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements
  36. 9 1
      ios/Podfile
  37. 233 233
      ios/Podfile.lock
  38. 8 7
      ios/SplashScreen.storyboard
  39. 295 172
      ios/una.xcodeproj/project.pbxproj
  40. 4 0
      ios/una/AppDelegate.m
  41. 2 2
      ios/una/Images.xcassets/Contents.json
  42. 6 24
      ios/una/Info.plist
  43. 4 0
      ios/una/una.entitlements
  44. 10 28
      metro.config.js
  45. 578 259
      package-lock.json
  46. 10 12
      package.json
  47. 43 0
      src/components/NativeBaseIcon.js
  48. 654 928
      yarn.lock

+ 223 - 224
App.js

@@ -1,6 +1,9 @@
 /**
  * Copyright (c) UNA, Inc - https://una.io
  * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @format
+ * @flow strict-local
  */
 
 import React, { Component } from 'react';
@@ -10,25 +13,40 @@ import { WebView } from 'react-native-webview';
 import {
     Platform,
     StyleSheet,
-    StyleProvider,
-    Image,
     Linking,
     BackHandler,
     ActivityIndicator,
-    Dimensions,
     Alert,
     Appearance,
     PermissionsAndroid,
+    NativeModules,
 } from 'react-native';
-import { 
+import {
+    Link,
+    Text,
+    HStack,
+    Center,
+    Heading,
+    Switch,
+    useColorMode,
+    NativeBaseProvider,
+    VStack,
+    Box,
     View,
-    Container, Content,
-    Header, Title, Left, Body, Right, Item, Input,
-    Footer, FooterTab, Badge, 
-    Text, Icon, Button,
     Drawer,
+    Image,
+    Button,
+    Input,
+    Icon,
+    IconButton,
+    Pressable,
+    StatusBar,
+    SearchIcon,
 } from 'native-base';
+import NativeBaseIcon from './src/components/NativeBaseIcon';
+import { Path, G } from "react-native-svg";
 
+/*
 import RNIap, {
   purchaseErrorListener,
   purchaseUpdatedListener,
@@ -38,7 +56,9 @@ import RNIap, {
 
 import JitsiMeet, { JitsiMeetView } from 'react-native-jitsi-meet';
 import VideoCall from './VideoCall';
+*/
 import ErrorPage from './ErrorPage';
+import * as Icons from './Icons';
 import { themeDark, themeLight, useTheme } from './Theme';
 
 import { version } from './package.json';
@@ -46,9 +66,9 @@ import { version } from './package.json';
 type Props = {};
 
 const BASE_URL = 'https://una.io/'; // site URL
-const MIX_LIGHT = '15'; // template styles mix for light mode
-const MIX_DARK = '17'; // template styles mix for dark mode
-const TEMPLATE = 'lucid'; // template name
+const MIX_LIGHT = '0'; // template styles mix for light mode
+const MIX_DARK = '0'; // template styles mix for dark mode
+const TEMPLATE = 'protean'; // template name
 const TITLE = 'UNA.IO | Community Management System'; // homepage title
 const ONESIGNALAPPID = ''; // you can obtain one from https://onesignal.com/
 const PAYMENTS_CALLBACK = ''; // empty string means payment functionality is disabled
@@ -77,14 +97,15 @@ export default class App extends Component<Props> {
     purchaseUpdateSubscription = null;
     purchaseErrorSubscription = null;
     products = {};
+    url = '';
 
     constructor(props) {
         super(props);
 
         var colorScheme = Appearance.getColorScheme();
+        this.url = `${BASE_URL}?skin=${TEMPLATE}&mix=${'dark' === colorScheme ? MIX_DARK : MIX_LIGHT}`;
 
         this.state = {
-            url: `${BASE_URL}?skin=${TEMPLATE}&mix=${'dark' === colorScheme ? MIX_DARK : MIX_LIGHT}`,
             status: '',
             backButtonEnabled: false,
             forwardButtonEnabled: false,
@@ -95,18 +116,29 @@ export default class App extends Component<Props> {
             videoCall: 0,
             videoCallUri: false,
             colorScheme: colorScheme,
+            drawerOpen: false,
         };
 
-        this.onBack.bind(this);
-        this.onMainMenu.bind(this);
+        this.onBack = this.onBack.bind(this);
+        this.onMainMenu = this.onMainMenu.bind(this);
+        this.onBackAndMainMenu = this.onBackAndMainMenu.bind(this);
+        this.onSearchMenu = this.onSearchMenu.bind(this);
+        this.onNotificationsMenu = this.onNotificationsMenu.bind(this);
+        this.onAddMenu = this.onAddMenu.bind(this);
+        this.onMessengerMenu = this.onMessengerMenu.bind(this);
+        this.onProfileMenu = this.onProfileMenu.bind(this);
+        this.onSearchCancelMenu = this.onSearchCancelMenu.bind(this);
+        this.onSearch = this.onSearch.bind(this);
 
         this.onConferenceTerminated = this.onConferenceTerminated.bind(this);
         this.onConferenceJoined = this.onConferenceJoined.bind(this);
         this.onConferenceWillJoin = this.onConferenceWillJoin.bind(this);
 
-        this.onVideoCallStart = this.onVideoCallStart.bind(this);        
-    }
+        this.onVideoCallStart = this.onVideoCallStart.bind(this);
 
+        this.onDrawerToggle = this.onDrawerToggle.bind(this);
+    }
+/*
     async onRequestPurchase (sku: string) {
         if ('ios' === Platform.OS)
             RNIap.clearTransactionIOS();
@@ -128,7 +160,7 @@ export default class App extends Component<Props> {
             Alert.alert(err.message);
         }
     }
-
+*/
     onConferenceTerminated(e) {
         this.endVideoCall();        
         this.injectJavaScript("bx_mobile_apps_video_terminated(" + JSON.stringify(e.nativeEvent) + ")");
@@ -148,7 +180,7 @@ export default class App extends Component<Props> {
             videoCall: 0,
             videoCallUri: false,
         });
-        JitsiMeet.endCall();
+        //JitsiMeet.endCall();
     }    
 
     onVideoCallStart(sUri, bAudioOnly = false) {
@@ -227,7 +259,7 @@ export default class App extends Component<Props> {
     
     onHomeMenu() {
         this.endVideoCall();
-        if (`${BASE_URL}` == this.state.url || this.state.url.startsWith(`${BASE_URL}?skin=${TEMPLATE}`) || `${BASE_URL}index.php` == this.state.url) {        
+        if (`${BASE_URL}` == this.url || this.url.startsWith(`${BASE_URL}?skin=${TEMPLATE}`) || `${BASE_URL}index.php` == this.url) {        
             this.injectJavaScript("bx_mobile_apps_close_sliding_menus()");
         } else {
             this.setState ({
@@ -283,13 +315,13 @@ export default class App extends Component<Props> {
 
     onWebViewNavigationStateChange(navState) {
 
-        if (-1 != navState.url.indexOf('#') && this.state.url == navState.url.substring(0, navState.url.indexOf('#'))) {
+        if (-1 != navState.url.indexOf('#') && this.url == navState.url.substring(0, navState.url.indexOf('#'))) {
             this.onWebViewLoadEnd();
             return;   
         }
 
+        this.url = navState.url;
         this.setState ({
-            url: navState.url,
             status: navState.title,
             backButtonEnabled: navState.canGoBack,
             forwardButtonEnabled: navState.canGoForward,
@@ -298,11 +330,13 @@ export default class App extends Component<Props> {
     }
 
     onWebViewLoadStart (syntheticEvent) {
+        var sUrl = 'undefined' !== typeof(syntheticEvent) && 'undefined' !== typeof(syntheticEvent['nativeEvent']) && 'undefined' !== typeof(syntheticEvent['nativeEvent']['url']) ? syntheticEvent.nativeEvent.url : false;
 
-        if (-1 == this.state.url.indexOf(`${BASE_URL}`)) { // loading indicator is supported on original domains only
+        if (sUrl && -1 == sUrl.indexOf(`${BASE_URL}`)) { // loading indicator is supported on original domains only
             this.onWebViewLoadEnd(syntheticEvent);
             return;
         }
+
         this.loading = true;
         this.setState ({
             loading: this.loading,
@@ -387,7 +421,7 @@ export default class App extends Component<Props> {
         Appearance.addChangeListener(({ colorScheme }) => { // not working in Android :(
             var s = Appearance.getColorScheme(); // colorScheme param is working incorrect in iOS13, so we need to get it explicitly
             if (s != this.state.colorScheme) {
-                var sUrl = this.state.url;
+                var sUrl = this.url;
                 var sUri = `skin=${TEMPLATE}&mix=${'dark' === s ? MIX_DARK : MIX_LIGHT}`;
                 sUrl += (-1 === sUrl.indexOf('?') ? '?' : '&') + sUri;
                 this.setState ({
@@ -430,7 +464,7 @@ export default class App extends Component<Props> {
                 }
             });
         }        
-
+/*
         if (PAYMENTS_CALLBACK != '') {
             var _self = this;
             try {
@@ -478,7 +512,7 @@ export default class App extends Component<Props> {
                 console.log('purchaseErrorListener', error);
             }); 
         }
-
+*/
         if (Platform.OS === 'android')
             requestPermissions();
 
@@ -522,6 +556,12 @@ export default class App extends Component<Props> {
         }
 
         if ('undefined' !== typeof(oMsgData['push_tags']) && oMsgData['push_tags'] !== false) {
+
+            if ('undefined' !== typeof(oMsgData['push_tags']['user']) && oMsgData['push_tags']['user'].length) {
+                console.log('User ID: ' + JSON.stringify(oMsgData['push_tags']['user']));
+                OneSignal.setExternalUserId(oMsgData['push_tags']['user']);
+            }
+
             if ('undefined' !== typeof(oMsgData['push_tags']['email']) && oMsgData['push_tags']['email'].length) {
                 OneSignal.setEmail(oMsgData['push_tags']['email'], oMsgData['push_tags']['email_hash'], (sError) => {
                     if ('undefined' !== typeof(sError))
@@ -560,13 +600,20 @@ export default class App extends Component<Props> {
     }
 
     drawerClose () {
-        this.refs.drawer._root.close()
+        this.setState ({drawerOpen: false});
     }
     
     drawerOpen () {
-        this.refs.drawer._root.open()
+        this.setState ({drawerOpen: true});
     }
-    
+
+    onDrawerToggle () {
+        if ('undefined' === typeof(this.state.drawerOpen) || !this.state.drawerOpen)
+            this.setState ({drawerOpen: true});
+        else
+            this.setState ({drawerOpen: false});
+    }
+
     render() {
         var sWebview = (
                 <WebView
@@ -584,7 +631,7 @@ export default class App extends Component<Props> {
                     onShouldStartLoadWithRequest={this.onWebViewShouldStartLoadWithRequest.bind(this)}
                     onNavigationStateChange={this.onWebViewNavigationStateChange.bind(this)}
                     style={styles.webview}
-                    source={{uri: this.state.url }}
+                    source={{uri: `${BASE_URL}?skin=${TEMPLATE}&mix=${'dark' === this.state.colorScheme ? MIX_DARK : MIX_LIGHT}` }}
                     userAgent={"UNAMobileApp/Mobile (" + Platform.OS + ")"}
                     onMessage={this.onWebViewMessage.bind(this)}
                     allowFileAccess={true}
@@ -592,213 +639,166 @@ export default class App extends Component<Props> {
                     onLoadStart={this.onWebViewLoadStart.bind(this)}
                     renderError={this.onWebViewRenderError.bind(this)}
                     startInLoadingState={true}
-                    renderLoading={() => <View style={styles.webviewFirstLoad}><ActivityIndicator size="large" color={useTheme('colors.activityIndicator')} style={styles.webviewFirstLoadIndicator} /></View>}
+                    renderLoading={() => <View style={styles.webviewFirstLoad} bg={useTheme('colors.background')}><ActivityIndicator size="large" color={useTheme('colors.activityIndicator')} style={styles.webviewFirstLoadIndicator} /></View>}
                 />
         );
-        return (
-            <Container> 
-            <Drawer ref="drawer" content={<UnaDrawer onLogin={this.onDrawerLoginMenu.bind(this)} onJoin={this.onDrawerJoinMenu.bind(this)} onForotPassword={this.onDrawerForgotMenu.bind(this)} onClose={this.drawerClose.bind(this)} />} onClose={this.drawerClose.bind(this)}>
-            <UnaApp 
-                webview={sWebview}
-                state={this.state}
-                videoCallAudio={this.videoCallAudio}
-                onSearch={this.onSearch.bind(this)}
-                onSearchCancelMenu={this.onSearchCancelMenu.bind(this)}
-                onMainMenu={this.onMainMenu.bind(this)}
-                onBackAndMainMenu={this.onBackAndMainMenu.bind(this)}
-                onHomeMenu={this.onHomeMenu.bind(this)}
-                onAddMenu={this.onAddMenu.bind(this)}
-                onSearchMenu={this.onSearchMenu.bind(this)}
-                onNotificationsMenu={this.onNotificationsMenu.bind(this)}
-                onMessengerMenu={this.onMessengerMenu.bind(this)}
-                onProfileMenu={this.onProfileMenu.bind(this)}
-                onVideoCallToggle={this.onVideoCallToggle.bind(this)}
-                onRequestSubscription={this.onRequestSubscription} 
-                onRequestPurchase={this.onRequestPurchase} 
-                onConferenceTerminated={this.onConferenceTerminated}
-                onConferenceJoined={this.onConferenceJoined}
-                onConferenceWillJoin={this.onConferenceWillJoin} />
-            </Drawer>
-            </Container>
-        );
-    }
-}
-
-function UnaApp(o) {
-        return (<Container>
 
-                {o.state.searchbar ? (
-                    <UnaToolbarSearch onSearch={o.onSearch} onSearchCancel={o.onSearchCancelMenu} />
+        return (
+            <NativeBaseProvider> 
+                {this.state.searchbar ? (
+                    <UnaToolbarSearch onSearch={this.onSearch} onSearchCancel={this.onSearchCancelMenu} />
                 ) : (
-                    <UnaToolbar loading={o.state.loading} loggedin={o.state.data.loggedin} backButtonEnabled={o.state.backButtonEnabled} onMainMenu={o.onMainMenu} onHomeMenu={o.onHomeMenu} onSearchMenu={o.onSearchMenu} onBackAndMainMenu={o.onBackAndMainMenu} title={o.state.status} url={o.state.url} />
+                    <UnaToolbar loading={this.state.loading} loggedin={this.state.data.loggedin} backButtonEnabled={this.state.backButtonEnabled} onMainMenu={this.onMainMenu} onHomeMenu={this.onHomeMenu} onSearchMenu={this.onSearchMenu} onBackAndMainMenu={this.onBackAndMainMenu} onBack={this.onBack} onDrawerToggle={this.onDrawerToggle} title={this.state.status} />
                 ) }
 
-                {o.state.videoCall && o.state.videoCallUri ? (
-                    <View style={styles.containerVideoCall}><VideoCall onConferenceTerminated={o.onConferenceTerminated} onConferenceJoined={o.onConferenceJoined} onConferenceWillJoin={o.onConferenceWillJoin} conferenceUri={o.state.videoCallUri} audio={o.videoCallAudio} userInfo={o.state.data.user_info} /></View>
+                {this.state.videoCall && this.state.videoCallUri ? (
+                    <View style={styles.containerVideoCall}><VideoCall onConferenceTerminated={this.onConferenceTerminated} onConferenceJoined={this.onConferenceJoined} onConferenceWillJoin={this.onConferenceWillJoin} conferenceUri={this.state.videoCallUri} audio={this.videoCallAudio} userInfo={this.state.data.user_info} /></View>
                 ) : (
                     <View />
                 )}
 
-                {o.webview}
+                {sWebview}
 
-                {o.state.data.loggedin && (
-                    <UnaFooter bubblesNum={o.state.data.bubbles_num} bubbles={o.state.data.bubbles} onMainMenu={o.onMainMenu} onNotificationsMenu={o.onNotificationsMenu} onVideoCallToggle={o.onVideoCallToggle} onRequestPurchase={o.onRequestPurchase} onRequestSubscription={o.onRequestSubscription} onAddMenu={o.onAddMenu} onMessengerMenu={o.onMessengerMenu} onProfileMenu={o.onProfileMenu} />
-                )}
+                { this.state.drawerOpen ? <UnaDrawer onLogin={this.onDrawerLoginMenu.bind(this)} onJoin={this.onDrawerJoinMenu.bind(this)} onForotPassword={this.onDrawerForgotMenu.bind(this)} onClose={this.drawerClose.bind(this)} /> : <View /> }
 
-                </Container>
+                {this.state.data.loggedin && (
+                    <UnaFooter bubblesNum={this.state.data.bubbles_num} bubbles={this.state.data.bubbles} onMainMenu={this.onMainMenu} onNotificationsMenu={this.onNotificationsMenu} onVideoCallToggle={this.onVideoCallToggle} onRequestPurchase={this.onRequestPurchase} onRequestSubscription={this.onRequestSubscription} onAddMenu={this.onAddMenu} onMessengerMenu={this.onMessengerMenu} onProfileMenu={this.onProfileMenu} />
+                )}
+            </NativeBaseProvider>
         );
+    }
 }
 
 function UnaFooter(o) {
+
     return (
-        <Footer style={styles.footer}>
-            {!('decorous' == TEMPLATE && Platform.isPad) &&
-                (<FooterTab style={styles.footerTab}>
-                    <Button vertical onPress={o.onMainMenu}>
-                        <Icon style={styles.footerIcon} name="apps-outline" type="Ionicons" />
-                    </Button>
-                </FooterTab>)
-            }
-            <FooterTab style={styles.footerTab}>
-                <Button vertical onPress={o.onNotificationsMenu} badge={o.bubbles['notifications-preview'] > 0 ? true : false}>
-                    {o.bubbles['notifications-preview'] > 0 && 
-                        (<Badge><Text>{o.bubbles['notifications-preview']}</Text></Badge>)
-                    }
-                    <Icon style={styles.footerIcon} name="notifications-outline" type="Ionicons" solid />
-                </Button>
-            </FooterTab>
+            <HStack bg={useTheme('colors.primary')} borderColor={useTheme('colors.toolbarBorder')} alignItems="center" safeAreaBottom style={styles.footer}>
+                {!('decorous' == TEMPLATE && Platform.isPad) &&
+                    (<Pressable py="3" flex={1} style={styles.footerTab}>
+                        <IconButton icon={<Icons.Apps size="xl" style={styles.footerIcon} color={useTheme('colors.textOnPrimary')} />} onPress={o.onMainMenu} />
+                    </Pressable>)
+                }
+                <Pressable py="3" flex={1} style={styles.footerTab}>
+                    <IconButton icon={<Icons.Bell size="xl"style={styles.footerIcon} color={useTheme('colors.textOnPrimary')} />} onPress={o.onNotificationsMenu} />
+                    {o.bubbles['notifications-preview'] > 0 && (<Badge num={o.bubbles['notifications-preview']} />)}
+                </Pressable>
 {/*
-            <FooterTab style={styles.footerTab}>
-                <Button vertical onPress={o.onVideoCallToggle}>
-                    <Icon style={styles.footerIcon} name="videocam-outline" type="Ionicons" solid />
-                </Button>
-            </FooterTab>
+                <Pressable py="3" flex={1} style={styles.footerTab}>
+                    <Center><IconButton icon={<Icons.Video size="xl" style={styles.footerIcon} color={useTheme('colors.textOnPrimary')} />} onPress={o.onVideoCallToggle} /></Center>
+                </Pressable>
 */}
-            <FooterTab style={styles.footerTab}>
-                <Button vertical onPress={o.onAddMenu}>
-                    <Icon style={styles.footerIcon} name="add-circle-outline" type="Ionicons" solid />
-                </Button>
-            </FooterTab>
-            <FooterTab style={styles.footerTab}>
-                <Button vertical onPress={o.onMessengerMenu} badge={o.bubbles['notifications-messenger'] > 0 ? true : false}>
-                    {o.bubbles['notifications-messenger'] > 0 && 
-                        (<Badge><Text>{o.bubbles['notifications-messenger']}</Text></Badge>)
-                    }
-                    <Icon style={styles.footerIcon} name="chatbubbles-outline" type="Ionicons" solid />
-                </Button>
-            </FooterTab>                    
-            <FooterTab style={styles.footerTab}>
-                <Button vertical onPress={o.onProfileMenu} badge={o.bubbles['account'] > 0 ? true : false}>
-                    {o.bubbles['account'] > 0 && 
-                        (<Badge><Text>{o.bubbles['account']}</Text></Badge>)
-                    }
-                    <Icon style={styles.footerIcon} name="person-circle-outline" type="Ionicons" solid />
-                </Button>
-            </FooterTab>
-        </Footer>
+                <Pressable py="3" flex={1} style={styles.footerTab}>
+                    <IconButton icon={<Icons.Plus size="xl" style={styles.footerIcon} color={useTheme('colors.textOnPrimary')} />} onPress={o.onAddMenu} />
+                </Pressable>
+                <Pressable py="3" flex={1} style={styles.footerTab}>                    
+                    <IconButton icon={<Icons.Chat size="xl" style={styles.footerIcon} color={useTheme('colors.textOnPrimary')} />} onPress={o.onMessengerMenu} />
+                    {o.bubbles['notifications-messenger'] > 0 && (<Badge num={o.bubbles['notifications-messenger']} />)}
+                </Pressable>
+                <Pressable py="3" flex={1} style={styles.footerTab}>
+                    <IconButton icon={<Icons.User size="xl" style={styles.footerIcon} color={useTheme('colors.textOnPrimary')} />} onPress={o.onProfileMenu} />
+                    {o.bubbles['account'] > 0 && (<Badge num={o.bubbles['account']} />)}
+                </Pressable>
+            </HStack>
     );
 }
 
 function UnaToolbar(o) {
+
     return (
-        <Header androidStatusBarColor={useTheme('colors.statusBar')} transparent={false} iosBarStyle={useTheme('barStyle')} barStyle={useTheme('barStyle')} style={styles.header}>
-            <Left>
-            {o.loading ? (
-                <ActivityIndicator size="small" color={useTheme('colors.activityIndicator')} style={styles.loadingIndicator} />
-            ):(
-                o.loggedin ? (
-                    (o.backButtonEnabled || Platform.OS === 'android') && 
-                        (<Button style={Platform.OS === 'android' ? styles.buttonLeftTopAndroid : styles.buttonLeftTopIos} transparent disabled={!o.backButtonEnabled} onPress={o.onBackAndMainMenu}>
-                        <Icon name="arrow-back-outline" type="Ionicons" style={styles.headerIcon} />
-                        </Button>)
-                    
-                ) : (
-                    <Button style={Platform.OS === 'android' ? styles.buttonLeftTopAndroid : styles.buttonLeftTopIos} transparent onPress={o.onMainMenu}>
-                        <Icon name="menu-outline" type="Ionicons" style={styles.headerIcon} />
-                    </Button>
-                )
-            )}
-            </Left>
-            <Body>
+    <View style={{borderBottomColor: useTheme('colors.toolbarBorder'), borderBottomWidth:0.5}}>
+        <StatusBar bg={useTheme('colors.statusBar')} barStyle={useTheme('barStyle')} />
+        <Box safeAreaTop bg={useTheme('colors.statusBar')} />
+        <HStack bg={useTheme('colors.primary')} px="1" py="1" justifyContent="space-between" alignItems="center" w="100%" style={styles.header}>
+            <HStack alignItems="center">
+
+                {o.loading ? (
+                    <ActivityIndicator size="small" color={useTheme('colors.activityIndicator')} style={styles.loadingIndicator} />
+                ):(
+                    o.loggedin ? (
+                        (<IconButton icon={<Icons.Back size="2xl" color={o.backButtonEnabled ? useTheme('colors.textOnPrimary') : useTheme('colors.textOnPrimaryDisabled')} style={styles.headerIcon} />} onPress={o.onBack} />)
+                    ) : (
+                        <IconButton icon={<Icons.Bars size="2xl" color={useTheme('colors.textOnPrimary')} style={styles.headerIcon} />} onPress={o.onDrawerToggle} />
+                    )
+                )}
+
                 {!o.title || TITLE == o.title || o.loading ? (
-                    <Image style={styles.headerImage} source={require('./img/logo.png')} />
+                    <Image alt="Logo" style={styles.headerImage} source={require('./img/logo.png')} />
                 ) : (
-                    <Text numberOfLines={1} ellipsizeMode="tail" style={styles.headerTitle}>{o.title}</Text>
-                )}
-            </Body>
-            <Right>
-                {o.loggedin && (
-                    <Button transparent>
-                        <Icon name='search-outline' type="Ionicons" onPress={o.onSearchMenu} style={styles.headerIcon} />
-                    </Button>
+                    <Text color={useTheme('colors.textOnPrimary')} numberOfLines={1} ellipsizeMode="tail" style={styles.headerTitle}>{o.title}</Text>
                 )}
-            </Right>
-        </Header>
+            </HStack>
+            <HStack>
+                {o.loggedin && (<IconButton icon={<Icons.Search size="2xl" color={useTheme('colors.textOnPrimary')} style={styles.headerIcon} />} onPress={o.onSearchMenu} />)}
+            </HStack>
+        </HStack>
+    </View>
     );
 }
 
 function UnaToolbarSearch(o) {
     return (
-        <Header androidStatusBarColor={useTheme('colors.statusBar')} transparent={false} iosBarStyle={useTheme('barStyle')} barStyle={useTheme('barStyle')} style={styles.header} searchBar rounded noShadow>
-          <Item style={styles.searchInputItem}>
-            <Input placeholder="Search..." onEndEditing={o.onSearchCancel} onSubmitEditing={o.onSearch} style={styles.searchInput} placeholderTextColor={useTheme('colors.searchInputPlaceholderText')} />
-          </Item>
-          <Button transparent onPress={o.onSearchCancel}>
-            <Icon name='close-outline' type="Ionicons" style={styles.headerIcon} />
-          </Button>
-        </Header>
+    <View style={{borderBottomColor: useTheme('colors.toolbarBorder'), borderBottomWidth:0.5}}>
+        <StatusBar bg={useTheme('colors.statusBar')} barStyle={useTheme('barStyle')} />
+        <Box safeAreaTop bg={useTheme('colors.statusBar')} />
+        <HStack bg={useTheme('colors.primary')} px="1" py="1" justifyContent="space-between" alignItems="center" w="100%" style={styles.header}>
+            <HStack alignItems="center" style={styles.searchInputContainer}>
+                <Input placeholder="Search..." width="89%" borderRadius={'ios' === Platform.OS ? 'full' : 'md'} px="3" fontSize="14" bg={useTheme('searchInputBackground')} color={useTheme('colors.searchInputText')} borderColor={useTheme('colors.searchInputBorder')} onSubmitEditing={o.onSearch} />
+                <IconButton icon={<Icons.Cross size="sm" color={useTheme('colors.textOnPrimary')} />} onPress={o.onSearchCancel} />
+            </HStack>
+        </HStack>
+    </View>
     );
 }
 
 function UnaDrawer(o) {
+    const {StatusBarManager} = NativeModules;
+    const height = StatusBarManager.HEIGHT;
     return (
-        <Container style={styles.drawerContainer}>
-            <Content>
-                <View style={styles.drawerImageContainer}>
-                    <Image style={styles.drawerImage} source={require('./img/logo-drawer.png')} />
-                </View>
-                <Button style={styles.drawerButton} iconLeft transparent onPress={o.onLogin}>
-                    <Icon style={styles.drawerButtonIcon} name='key-outline' type="Ionicons" solid />
-                    <Text style={styles.drawerButtonText}>Login</Text>
-                </Button>
-                <Button style={styles.drawerButton} iconLeft transparent onPress={o.onJoin}>
-                    <Icon style={styles.drawerButtonIcon} name='add-circle-outline' type="Ionicons" solid />
-                    <Text style={styles.drawerButtonText}>Join</Text>
-                </Button>
-                <Button style={styles.drawerButton} iconLeft transparent onPress={o.onForotPassword}>
-                    <Icon style={styles.drawerButtonIcon} name='lock-closed-outline' type="Ionicons" solid />
-                    <Text style={styles.drawerButtonText}>Forgot Password</Text>
-                </Button>
-            </Content>
-        </Container>
+        <Box bg={useTheme('colors.drawerBackground')} borderColor={useTheme('colors.drawerBorder')} style={[styles.drawerContainer, {top:height + ('ios' === Platform.OS ? 50 : 25)}]} shadow={2}>
+            <VStack space={2}>
+                <Pressable style={styles.drawerButton} iconLeft transparent onPress={o.onLogin}>
+                    <HStack>
+                        <Icons.In size="md" color={useTheme('colors.drawerText')} style={styles.drawerButtonIcon} />
+                        <Text fontSize="xl" color={useTheme('colors.drawerText')} style={styles.drawerButtonText}>Login</Text>
+                    </HStack>
+                </Pressable>
+                <Pressable style={styles.drawerButton} iconLeft transparent onPress={o.onJoin}>
+                    <HStack>
+                        <Icons.PlusCircle size="md" color={useTheme('colors.drawerText')} style={styles.drawerButtonIcon} />
+                        <Text fontSize="xl" color={useTheme('colors.drawerText')} style={styles.drawerButtonText}>Join</Text>
+                    </HStack>
+                </Pressable>
+                <Pressable style={styles.drawerButton} iconLeft transparent onPress={o.onForotPassword}>
+                    <HStack>
+                        <Icons.Question size="md" color={useTheme('colors.drawerText')} style={styles.drawerButtonIcon} />
+                        <Text fontSize="xl" color={useTheme('colors.drawerText')} style={styles.drawerButtonText}>Forgot Password</Text>
+                    </HStack>
+                </Pressable>
+            </VStack>
+        </Box>
   );
 }
 
+function Badge(o) {
+    return (
+        <Box style={styles.badge}><Text style={styles.badgeText}>{o.num}</Text></Box>
+    );
+}
+
 const styles = new StyleSheet.create({
-    container: {
-        backgroundColor: useTheme('colors.background'),
-        flex: 1
-    },
     webview: {
         flex: 1,
         backgroundColor: 'transparent',
     },
     webviewFirstLoad: {
-        flex: 9999999999,
-        backgroundColor: useTheme('colors.background'),
-        justifyContent: 'center', 
+        flex: 9999999999,        
+        justifyContent: 'center',  
         alignItems: 'center',
     },
-    webviewFirstLoadIndicator: {
-    },
     header: {
-        backgroundColor: useTheme('colors.primary'),
-        height: 46, paddingTop:0, // tmp fix - https://github.com/GeekyAnts/NativeBase/issues/3095
-        borderBottomWidth: 0.5,
-        borderBottomColor: useTheme('colors.toolbarBorder'),
+        height: 50,
     },
     headerTitle: {
-        color: useTheme('colors.textOnPrimary'),
         fontSize: 18,
         fontWeight: 'bold',
     },
@@ -807,33 +807,20 @@ const styles = new StyleSheet.create({
         height: 28,
     },
     headerIcon: {
-        color: useTheme('colors.textOnPrimary'),
-        fontSize: 28,
+        top: 6,
+        left: 6,
     },
-    searchInputItem: {
-        borderColor: useTheme('colors.searchInputBorder'),
-        borderRightWidth: 1,
-        borderTopWidth: 1,
-        borderLeftWidth: 1,
-        borderBottomWidth: 1,
-        backgroundColor: useTheme('colors.searchInputBackground'),
+    searchInputContainer: {
+        paddingLeft:5,
     },
-    searchInput: {
-        color: useTheme('colors.searchInputText'), 
-        paddingLeft: 15, 
-        paddingRight: 15
+    searchInputItem: {        
+        borderWidth: 1,
     },
     footer: {
-        backgroundColor: useTheme('colors.primary'),
-        borderTopWidth: 0.5,
-        borderTopColor: useTheme('colors.toolbarBorder'),
+        borderTopWidth: 0.5,        
     },
     footerTab: {
-        backgroundColor: useTheme('colors.primary'),
-    },
-    footerIcon: {
-        color: useTheme('colors.textOnPrimary'),
-        fontSize: 28,
+
     },
 
     containerVideoCall: {
@@ -842,37 +829,49 @@ const styles = new StyleSheet.create({
     },
 
     loadingIndicator: {
-        marginLeft: 5,
-        marginTop: 5,
+        marginLeft: 0,
+        marginTop: 0,
+        width:52,
+        height:52,
     },
     buttonLeftTopAndroid: {
     },
     buttonLeftTopIos: {
     },
     drawerContainer: {
-        backgroundColor: useTheme('colors.drawerBackground'),
-    },
-    drawerImageContainer: {
-        height:100, 
-        justifyContent: 'center', 
-        alignItems: 'center', 
-        backgroundColor: useTheme('colors.drawerBackground'),
-    },
-    drawerImage: {
-        height:35.3,
-        width:125,
+        position: 'absolute',
+        top:0,
+        left:0,
+        width:250,        
+        borderWidth: 0.5,
+        padding:20,
     },
     drawerButton: {
         justifyContent: 'flex-start',
     },
     drawerButtonIcon: {
-        width: 20,
-        fontSize: 20,
+        top:6,
+        marginRight:15,
         justifyContent: 'center',
         textAlign: 'center',
-        color: useTheme('colors.drawerText'),
     },
-    drawerButtonText: {
-        color: useTheme('colors.drawerText'),
+    drawerButtonText: {        
+        
+    },
+
+    badge: {
+        backgroundColor:'red', 
+        color:'white',
+        position:'absolute',
+        top:4,
+        right:11,
+        paddingLeft:4,
+        paddingRight:4,
+        borderRadius:3
+    },
+    badgeText: {
+        color:'white', 
+        fontSize: 11, 
+        fontWeight: 'bold',
     },
 });

+ 2 - 2
ErrorPage.js

@@ -10,13 +10,13 @@ class ErrorPage extends React.Component {
     }
     render() {
         return (
-            <Container style={styles.container}>
+            <View style={styles.container}>
                 <Icon style={styles.icon} name="frown" type="FontAwesome5" />
                 <Text style={styles.text}>Ops, something went wrong...</Text>
                 <View style={styles.buttonContainer}>
                     <Button onPress={this.props.onReload}><Text>Retry</Text></Button>
                 </View>
-            </Container>
+            </View>
         );
     }
 }

+ 126 - 0
Icons.js

@@ -0,0 +1,126 @@
+
+import React from 'react';
+import { Icon } from 'native-base';
+import { Path, G } from "react-native-svg";
+
+function Apps(o) {
+    return (
+        <Icon size={o.size} viewBox="0 0 512 512" style={o.style}>
+            <G fill={o.color} strokeWidth={0}>
+                <Path d="M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z" />
+            </G>
+        </Icon>
+    );
+}
+
+function Bell(o) {
+    return (
+        <Icon size={o.size} viewBox="0 0 448 512" style={o.style}>
+            <G fill={o.color} strokeWidth={5}>
+                <Path d="M439.39 362.29c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71zM67.53 368c21.22-27.97 44.42-74.33 44.53-159.42 0-.2-.06-.38-.06-.58 0-61.86 50.14-112 112-112s112 50.14 112 112c0 .2-.06.38-.06.58.11 85.1 23.31 131.46 44.53 159.42H67.53zM224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64z"/>
+            </G>
+        </Icon>
+    );
+}
+
+function Plus(o) {
+    return (
+        <Icon size={o.size} viewBox="0 0 448 512" style={o.style}>
+            <G fill={o.color} strokeWidth={5}>
+                <Path d="M352 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm96-160v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z"/>
+            </G>
+        </Icon>
+    );
+}
+
+function Chat(o) {
+    return (
+        <Icon size={o.size} viewBox="0 0 576 512" style={o.style}>
+            <G fill={o.color} strokeWidth={5}>
+                <Path d="M532 386.2c27.5-27.1 44-61.1 44-98.2 0-80-76.5-146.1-176.2-157.9C368.3 72.5 294.3 32 208 32 93.1 32 0 103.6 0 192c0 37 16.5 71 44 98.2-15.3 30.7-37.3 54.5-37.7 54.9-6.3 6.7-8.1 16.5-4.4 25 3.6 8.5 12 14 21.2 14 53.5 0 96.7-20.2 125.2-38.8 9.2 2.1 18.7 3.7 28.4 4.9C208.1 407.6 281.8 448 368 448c20.8 0 40.8-2.4 59.8-6.8C456.3 459.7 499.4 480 553 480c9.2 0 17.5-5.5 21.2-14 3.6-8.5 1.9-18.3-4.4-25-.4-.3-22.5-24.1-37.8-54.8zm-392.8-92.3L122.1 305c-14.1 9.1-28.5 16.3-43.1 21.4 2.7-4.7 5.4-9.7 8-14.8l15.5-31.1L77.7 256C64.2 242.6 48 220.7 48 192c0-60.7 73.3-112 160-112s160 51.3 160 112-73.3 112-160 112c-16.5 0-33-1.9-49-5.6l-19.8-4.5zM498.3 352l-24.7 24.4 15.5 31.1c2.6 5.1 5.3 10.1 8 14.8-14.6-5.1-29-12.3-43.1-21.4l-17.1-11.1-19.9 4.6c-16 3.7-32.5 5.6-49 5.6-54 0-102.2-20.1-131.3-49.7C338 339.5 416 272.9 416 192c0-3.4-.4-6.7-.7-10C479.7 196.5 528 238.8 528 288c0 28.7-16.2 50.6-29.7 64z"/>
+            </G>
+        </Icon>
+    );
+}
+
+function User(o) {
+    return (
+        <Icon size={o.size} viewBox="0 0 448 512" style={o.style}>
+            <G fill={o.color} strokeWidth={5}>
+                <Path d="M313.6 304c-28.7 0-42.5 16-89.6 16-47.1 0-60.8-16-89.6-16C60.2 304 0 364.2 0 438.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-25.6c0-74.2-60.2-134.4-134.4-134.4zM400 464H48v-25.6c0-47.6 38.8-86.4 86.4-86.4 14.6 0 38.3 16 89.6 16 51.7 0 74.9-16 89.6-16 47.6 0 86.4 38.8 86.4 86.4V464zM224 288c79.5 0 144-64.5 144-144S303.5 0 224 0 80 64.5 80 144s64.5 144 144 144zm0-240c52.9 0 96 43.1 96 96s-43.1 96-96 96-96-43.1-96-96 43.1-96 96-96z"/>
+            </G>
+        </Icon>
+    );
+}
+
+function Bars(o) {
+    return (
+        <Icon size={o.size} viewBox="0 0 870 873" style={o.style}>
+            <G fill={o.color}>
+                <Path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/>
+            </G>
+        </Icon>
+    );
+}
+
+function Search(o) {
+    return (
+        <Icon size={o.size} viewBox="0 0 870 873" style={o.style}>
+            <G fill={o.color}>
+                <Path d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"/>
+            </G>
+        </Icon>
+    );
+}
+
+function Back(o) {
+    return (
+        <Icon size={o.size} viewBox="0 0 870 873" style={o.style}>
+            <G fill={o.color}>
+                <Path d="M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"/>
+            </G>
+        </Icon>
+    );
+}
+
+function Cross(o) {
+    return (
+        <Icon size={o.size} viewBox="0 0 320 512" style={o.style}>
+            <G fill={o.color} strokeWidth={5}>
+                <Path d="M310.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 210.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L114.7 256 9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 301.3 265.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L205.3 256 310.6 150.6z"/>
+            </G>
+        </Icon>
+    );
+}
+
+function In(o) {
+    return (
+        <Icon size={o.size} viewBox="0 0 512 512" style={o.style}>
+            <G fill={o.color} strokeWidth={0}>
+                <Path d="M352 96h64c17.7 0 32 14.3 32 32V384c0 17.7-14.3 32-32 32H352c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c53 0 96-43 96-96V128c0-53-43-96-96-96H352c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-7.5 177.4c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22v72H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H160v72c0 9.6 5.7 18.2 14.5 22s19 2 26-4.6l144-136z"/>
+            </G>
+        </Icon>
+    );
+}
+
+function PlusCircle(o) {
+    return (
+        <Icon size={o.size} viewBox="0 0 512 512" style={o.style}>
+            <G fill={o.color} strokeWidth={0}>
+                <Path d="M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"/>
+            </G>
+        </Icon>
+    );
+}
+
+function Question(o) {
+    return (
+        <Icon size={o.size} viewBox="0 0 512 512" style={o.style}>
+            <G fill={o.color} strokeWidth={0}>
+                <Path d="M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM288 352c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z"/>
+            </G>
+        </Icon>
+    );
+}
+
+export {Apps, Bell, Plus, Chat, User, Bars, Search, Back, Cross, In, PlusCircle, Question};

+ 7 - 7
Theme.js

@@ -7,17 +7,17 @@ const themeDark = {
     colors: {
         primary: '#111827',
         textOnPrimary: '#6B7280',
+        textOnPrimaryDisabled: '#111',
         background: '#000000',
         toolbarBorder: '#1F2937',
-        text: '#6B7280',
-        drawerBackground: '#f3f4f5',
+        drawerBackground: '#F3F4F6',
         drawerText: '#1890ff',
+        drawerBorder: '#A3A4A5',
         statusBar: '#000000',
         activityIndicator: '#6B7280',
         searchInputBackground: '#000000',
         searchInputBorder: '#1F2937',
-        searchInputText: '#6B7280',
-        searchInputPlaceholderText: '#8F9BB3',
+        searchInputText: '#CFDBF3',
     }
 };
 const themeLight = {
@@ -26,17 +26,17 @@ const themeLight = {
     colors: {
         primary: '#fff',
         textOnPrimary: '#6B7280',
+        textOnPrimaryDisabled: '#eee',
         background: '#F3F4F6',
         toolbarBorder: '#E4E9F2',
-        text: '#6B7280',
         drawerBackground: '#F3F4F6',
-        drawerText: '#6B7280',
+        drawerText: '#1890ff',
+        drawerBorder: '#A3A4A5',
         statusBar: '#fff',
         activityIndicator: '#6B7280',
         searchInputBackground: '#F7F9FC',
         searchInputBorder: '#E4E9F2',
         searchInputText: '#6B7280',
-        searchInputPlaceholderText: '#8F9BB3',
     }
 };
 

+ 3 - 41
android/app/build.gradle

@@ -1,14 +1,3 @@
-buildscript {
-    repositories {
-        gradlePluginPortal()
-    }
-    dependencies {
-        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.12.10, 0.99.99]'
-    }
-}
-apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
-
-
 apply plugin: "com.android.application"
 
 import com.android.build.OutputFile
@@ -145,19 +134,8 @@ android {
         applicationId "com.una.android"
         minSdkVersion rootProject.ext.minSdkVersion
         targetSdkVersion rootProject.ext.targetSdkVersion
-        versionCode 1500
-        versionName "1.5.0"
-        multiDexEnabled true
-    }
-    signingConfigs {
-        release {
-            if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
-                storeFile file(MYAPP_RELEASE_STORE_FILE)
-                storePassword MYAPP_RELEASE_STORE_PASSWORD
-                keyAlias MYAPP_RELEASE_KEY_ALIAS
-                keyPassword MYAPP_RELEASE_KEY_PASSWORD
-            }
-        }
+        versionCode 2000
+        versionName "2.0.0"
     }
     splits {
         abi {
@@ -182,20 +160,12 @@ android {
         release {
             // Caution! In production, you need to generate your own keystore file.
             // see https://reactnative.dev/docs/signed-apk-android.
-            signingConfig signingConfigs.release
+            signingConfig signingConfigs.debug
             minifyEnabled enableProguardInReleaseBuilds
             proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
         }
     }
 
-    packagingOptions {
-        exclude "META-INF/react-native-webview_release.kotlin_module"
-        pickFirst "lib/armeabi-v7a/libc++_shared.so"
-        pickFirst "lib/arm64-v8a/libc++_shared.so"
-        pickFirst "lib/x86/libc++_shared.so"
-        pickFirst "lib/x86_64/libc++_shared.so"
-    }
-
     // applicationVariants are e.g. debug, release
     applicationVariants.all { variant ->
         variant.outputs.each { output ->
@@ -214,14 +184,6 @@ android {
 }
 
 dependencies {
-    
-    implementation 'com.android.support:multidex:2.0.1'
-
-    implementation(project(':react-native-jitsi-meet')) {
-      exclude group: 'com.facebook.react',module:'react-native-webview'
-      exclude group: 'com.facebook.react',module:'react-native-svg'
-    }
-
     implementation fileTree(dir: "libs", include: ["*.jar"])
     //noinspection GradleDynamicVersion
     implementation "com.facebook.react:react-native:+"  // From node_modules

+ 4 - 10
android/app/src/main/AndroidManifest.xml

@@ -2,17 +2,12 @@
   package="com.una.android">
 
     <uses-permission android:name="android.permission.INTERNET" />
-    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-	<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
-	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
-    <!-- <uses-permission android:name="com.android.vending.BILLING" /> -->
 
     <application
       android:name=".MainApplication"
       android:label="@string/app_name"
       android:icon="@mipmap/ic_launcher"
-      android:allowBackup="true"
+      android:allowBackup="false"
       android:theme="@style/AppTheme">
       <activity
         android:name=".MainActivity"
@@ -24,7 +19,7 @@
             <action android:name="android.intent.action.MAIN" />
             <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
-      <intent-filter android:label="UNA.IO">
+        <intent-filter android:label="UNA.IO">
                 <action android:name="android.intent.action.VIEW" />
 
                 <category android:name="android.intent.category.DEFAULT" />
@@ -36,8 +31,7 @@
                 <data
                     android:scheme="http"
                     android:host="una.io" />
-            </intent-filter>
-        </activity>
+        </intent-filter>
+      </activity>
     </application>
-
 </manifest>

binární
android/app/src/main/assets/fonts/AntDesign.ttf


binární
android/app/src/main/assets/fonts/Entypo.ttf


binární
android/app/src/main/assets/fonts/EvilIcons.ttf


binární
android/app/src/main/assets/fonts/Feather.ttf


binární
android/app/src/main/assets/fonts/FontAwesome.ttf


binární
android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf


binární
android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf


binární
android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf


binární
android/app/src/main/assets/fonts/Fontisto.ttf


binární
android/app/src/main/assets/fonts/Foundation.ttf


binární
android/app/src/main/assets/fonts/Ionicons.ttf


binární
android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf


binární
android/app/src/main/assets/fonts/MaterialIcons.ttf


binární
android/app/src/main/assets/fonts/Octicons.ttf


binární
android/app/src/main/assets/fonts/Roboto.ttf


binární
android/app/src/main/assets/fonts/Roboto_medium.ttf


binární
android/app/src/main/assets/fonts/SimpleLineIcons.ttf


binární
android/app/src/main/assets/fonts/Zocial.ttf


binární
android/app/src/main/assets/fonts/rubicon-icon-font.ttf


+ 1 - 1
android/app/src/main/java/com/una/android/MainActivity.java

@@ -7,7 +7,7 @@ import com.facebook.react.ReactActivity;
 public class MainActivity extends ReactActivity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
-        SplashScreen.show(this, R.style.SplashScreenTheme);
+        SplashScreen.show(this, R.style.SplashScreenTheme, true);
         super.onCreate(savedInstanceState);
     }
   /**

+ 2 - 0
android/app/src/main/java/com/una/android/MainApplication.java

@@ -4,6 +4,8 @@ import android.app.Application;
 import android.content.Context;
 import com.facebook.react.PackageList;
 import com.facebook.react.ReactApplication;
+import org.devio.rn.splashscreen.SplashScreenReactPackage;
+import com.horcrux.svg.SvgPackage;
 import com.facebook.react.ReactInstanceManager;
 import com.facebook.react.ReactNativeHost;
 import com.facebook.react.ReactPackage;

+ 3 - 6
android/build.gradle

@@ -4,10 +4,9 @@ buildscript {
     ext {
         buildToolsVersion = "29.0.3"
         minSdkVersion = 21
-        compileSdkVersion = 30
-        targetSdkVersion = 30
+        compileSdkVersion = 33
+        targetSdkVersion = 33
         ndkVersion = "20.1.5948944"
-        supportLibVersion = "29.0.0"
     }
     repositories {
         google()
@@ -31,9 +30,7 @@ allprojects {
             // Android JSC is installed from npm
             url("$rootDir/../node_modules/jsc-android/dist")
         }
-        maven {
-            url "https://github.com/jitsi/jitsi-maven-repository/raw/master/releases"
-        }
+
         google()
         jcenter()
         maven { url 'https://www.jitpack.io' }

+ 1 - 1
android/gradle.properties

@@ -30,4 +30,4 @@ FLIPPER_VERSION=0.75.1
 MYAPP_RELEASE_STORE_FILE=una-release-key.keystore
 MYAPP_RELEASE_KEY_ALIAS=una
 MYAPP_RELEASE_STORE_PASSWORD=
-MYAPP_RELEASE_KEY_PASSWORD=
+MYAPP_RELEASE_KEY_PASSWORD=

+ 4 - 0
android/settings.gradle

@@ -1,3 +1,7 @@
 rootProject.name = 'una'
+include ':react-native-splash-screen'
+project(':react-native-splash-screen').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-splash-screen/android')
+include ':react-native-svg'
+project(':react-native-svg').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-svg/android')
 apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
 include ':app'

+ 1 - 1
app.json

@@ -1,4 +1,4 @@
 {
   "name": "una",
-  "displayName": "UNA"
+  "displayName": "una"
 }

binární
img/logo-drawer.png


+ 13 - 0
ios/OneSignalNotificationServiceExtension/Info.plist

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>NSExtension</key>
+	<dict>
+		<key>NSExtensionPointIdentifier</key>
+		<string>com.apple.usernotifications.service</string>
+		<key>NSExtensionPrincipalClass</key>
+		<string>$(PRODUCT_MODULE_NAME).NotificationService</string>
+	</dict>
+</dict>
+</plist>

+ 42 - 0
ios/OneSignalNotificationServiceExtension/NotificationService.swift

@@ -0,0 +1,42 @@
+import UserNotifications
+
+import OneSignal
+
+class NotificationService: UNNotificationServiceExtension {
+    
+    var contentHandler: ((UNNotificationContent) -> Void)?
+    var receivedRequest: UNNotificationRequest!
+    var bestAttemptContent: UNMutableNotificationContent?
+    
+    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
+        self.receivedRequest = request
+        self.contentHandler = contentHandler
+        self.bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
+        
+        if let bestAttemptContent = bestAttemptContent {
+            //If your SDK version is < 3.5.0 uncomment and use this code:
+            /*
+            OneSignal.didReceiveNotificationExtensionRequest(self.receivedRequest, with: self.bestAttemptContent)
+            contentHandler(bestAttemptContent)
+            */
+            
+            /* DEBUGGING: Uncomment the 2 lines below to check this extension is excuting
+                          Note, this extension only runs when mutable-content is set
+                          Setting an attachment or action buttons automatically adds this */
+            //OneSignal.setLogLevel(.LL_VERBOSE, visualLevel: .LL_NONE)
+            //bestAttemptContent.body = "[Modified] " + bestAttemptContent.body
+            
+            OneSignal.didReceiveNotificationExtensionRequest(self.receivedRequest, with: bestAttemptContent, withContentHandler: self.contentHandler)
+        }
+    }
+    
+    override func serviceExtensionTimeWillExpire() {
+        // Called just before the extension will be terminated by the system.
+        // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
+        if let contentHandler = contentHandler, let bestAttemptContent =  bestAttemptContent {
+            OneSignal.serviceExtensionTimeWillExpireRequest(self.receivedRequest, with: self.bestAttemptContent)
+            contentHandler(bestAttemptContent)
+        }
+    }
+    
+}

+ 10 - 0
ios/OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>com.apple.security.application-groups</key>
+	<array>
+		<string>group.com.una.ios.onesignal</string>
+	</array>
+</dict>
+</plist>

+ 9 - 1
ios/Podfile

@@ -12,6 +12,10 @@ target 'una' do
     :hermes_enabled => false
   )
 
+  pod 'RNSVG', :path => '../node_modules/react-native-svg'
+
+  pod 'react-native-splash-screen', :path => '../node_modules/react-native-splash-screen'
+
   target 'unaTests' do
     inherit! :complete
     # Pods for testing
@@ -26,4 +30,8 @@ target 'una' do
   post_install do |installer|
     react_native_post_install(installer)
   end
-end
+end
+
+target 'OneSignalNotificationServiceExtension' do
+  pod 'OneSignalXCFramework', '>= 3.0', '< 4.0'
+end

+ 233 - 233
ios/Podfile.lock

@@ -2,14 +2,14 @@ PODS:
   - boost-for-react-native (1.63.0)
   - CocoaAsyncSocket (7.6.5)
   - DoubleConversion (1.1.6)
-  - FBLazyVector (0.64.1)
-  - FBReactNativeSpec (0.64.1):
+  - FBLazyVector (0.64.2)
+  - FBReactNativeSpec (0.64.2):
     - RCT-Folly (= 2020.01.13.00)
-    - RCTRequired (= 0.64.1)
-    - RCTTypeSafety (= 0.64.1)
-    - React-Core (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - ReactCommon/turbomodule/core (= 0.64.1)
+    - RCTRequired (= 0.64.2)
+    - RCTTypeSafety (= 0.64.2)
+    - React-Core (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - ReactCommon/turbomodule/core (= 0.64.2)
   - Flipper (0.75.1):
     - Flipper-Folly (~> 2.5)
     - Flipper-RSocket (~> 1.3)
@@ -57,9 +57,17 @@ PODS:
     - FlipperKit/Core
     - FlipperKit/FlipperKitNetworkPlugin
   - glog (0.3.5)
-  - JitsiMeetSDK (2.4.0)
   - libevent (2.1.12)
-  - OneSignal (3.4.3)
+  - OneSignalXCFramework (3.11.2):
+    - OneSignalXCFramework/OneSignalCore (= 3.11.2)
+    - OneSignalXCFramework/OneSignalExtension (= 3.11.2)
+    - OneSignalXCFramework/OneSignalOutcomes (= 3.11.2)
+  - OneSignalXCFramework/OneSignalCore (3.11.2)
+  - OneSignalXCFramework/OneSignalExtension (3.11.2):
+    - OneSignalXCFramework/OneSignalCore
+    - OneSignalXCFramework/OneSignalOutcomes
+  - OneSignalXCFramework/OneSignalOutcomes (3.11.2):
+    - OneSignalXCFramework/OneSignalCore
   - OpenSSL-Universal (1.1.180)
   - RCT-Folly (2020.01.13.00):
     - boost-for-react-native
@@ -70,268 +78,265 @@ PODS:
     - boost-for-react-native
     - DoubleConversion
     - glog
-  - RCTRequired (0.64.1)
-  - RCTTypeSafety (0.64.1):
-    - FBLazyVector (= 0.64.1)
+  - RCTRequired (0.64.2)
+  - RCTTypeSafety (0.64.2):
+    - FBLazyVector (= 0.64.2)
     - RCT-Folly (= 2020.01.13.00)
-    - RCTRequired (= 0.64.1)
-    - React-Core (= 0.64.1)
-  - React (0.64.1):
-    - React-Core (= 0.64.1)
-    - React-Core/DevSupport (= 0.64.1)
-    - React-Core/RCTWebSocket (= 0.64.1)
-    - React-RCTActionSheet (= 0.64.1)
-    - React-RCTAnimation (= 0.64.1)
-    - React-RCTBlob (= 0.64.1)
-    - React-RCTImage (= 0.64.1)
-    - React-RCTLinking (= 0.64.1)
-    - React-RCTNetwork (= 0.64.1)
-    - React-RCTSettings (= 0.64.1)
-    - React-RCTText (= 0.64.1)
-    - React-RCTVibration (= 0.64.1)
-  - React-callinvoker (0.64.1)
-  - React-Core (0.64.1):
+    - RCTRequired (= 0.64.2)
+    - React-Core (= 0.64.2)
+  - React (0.64.2):
+    - React-Core (= 0.64.2)
+    - React-Core/DevSupport (= 0.64.2)
+    - React-Core/RCTWebSocket (= 0.64.2)
+    - React-RCTActionSheet (= 0.64.2)
+    - React-RCTAnimation (= 0.64.2)
+    - React-RCTBlob (= 0.64.2)
+    - React-RCTImage (= 0.64.2)
+    - React-RCTLinking (= 0.64.2)
+    - React-RCTNetwork (= 0.64.2)
+    - React-RCTSettings (= 0.64.2)
+    - React-RCTText (= 0.64.2)
+    - React-RCTVibration (= 0.64.2)
+  - React-callinvoker (0.64.2)
+  - React-Core (0.64.2):
     - glog
     - RCT-Folly (= 2020.01.13.00)
-    - React-Core/Default (= 0.64.1)
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-jsiexecutor (= 0.64.1)
-    - React-perflogger (= 0.64.1)
+    - React-Core/Default (= 0.64.2)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-jsiexecutor (= 0.64.2)
+    - React-perflogger (= 0.64.2)
     - Yoga
-  - React-Core/CoreModulesHeaders (0.64.1):
+  - React-Core/CoreModulesHeaders (0.64.2):
     - glog
     - RCT-Folly (= 2020.01.13.00)
     - React-Core/Default
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-jsiexecutor (= 0.64.1)
-    - React-perflogger (= 0.64.1)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-jsiexecutor (= 0.64.2)
+    - React-perflogger (= 0.64.2)
     - Yoga
-  - React-Core/Default (0.64.1):
+  - React-Core/Default (0.64.2):
     - glog
     - RCT-Folly (= 2020.01.13.00)
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-jsiexecutor (= 0.64.1)
-    - React-perflogger (= 0.64.1)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-jsiexecutor (= 0.64.2)
+    - React-perflogger (= 0.64.2)
     - Yoga
-  - React-Core/DevSupport (0.64.1):
+  - React-Core/DevSupport (0.64.2):
     - glog
     - RCT-Folly (= 2020.01.13.00)
-    - React-Core/Default (= 0.64.1)
-    - React-Core/RCTWebSocket (= 0.64.1)
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-jsiexecutor (= 0.64.1)
-    - React-jsinspector (= 0.64.1)
-    - React-perflogger (= 0.64.1)
+    - React-Core/Default (= 0.64.2)
+    - React-Core/RCTWebSocket (= 0.64.2)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-jsiexecutor (= 0.64.2)
+    - React-jsinspector (= 0.64.2)
+    - React-perflogger (= 0.64.2)
     - Yoga
-  - React-Core/RCTActionSheetHeaders (0.64.1):
+  - React-Core/RCTActionSheetHeaders (0.64.2):
     - glog
     - RCT-Folly (= 2020.01.13.00)
     - React-Core/Default
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-jsiexecutor (= 0.64.1)
-    - React-perflogger (= 0.64.1)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-jsiexecutor (= 0.64.2)
+    - React-perflogger (= 0.64.2)
     - Yoga
-  - React-Core/RCTAnimationHeaders (0.64.1):
+  - React-Core/RCTAnimationHeaders (0.64.2):
     - glog
     - RCT-Folly (= 2020.01.13.00)
     - React-Core/Default
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-jsiexecutor (= 0.64.1)
-    - React-perflogger (= 0.64.1)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-jsiexecutor (= 0.64.2)
+    - React-perflogger (= 0.64.2)
     - Yoga
-  - React-Core/RCTBlobHeaders (0.64.1):
+  - React-Core/RCTBlobHeaders (0.64.2):
     - glog
     - RCT-Folly (= 2020.01.13.00)
     - React-Core/Default
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-jsiexecutor (= 0.64.1)
-    - React-perflogger (= 0.64.1)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-jsiexecutor (= 0.64.2)
+    - React-perflogger (= 0.64.2)
     - Yoga
-  - React-Core/RCTImageHeaders (0.64.1):
+  - React-Core/RCTImageHeaders (0.64.2):
     - glog
     - RCT-Folly (= 2020.01.13.00)
     - React-Core/Default
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-jsiexecutor (= 0.64.1)
-    - React-perflogger (= 0.64.1)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-jsiexecutor (= 0.64.2)
+    - React-perflogger (= 0.64.2)
     - Yoga
-  - React-Core/RCTLinkingHeaders (0.64.1):
+  - React-Core/RCTLinkingHeaders (0.64.2):
     - glog
     - RCT-Folly (= 2020.01.13.00)
     - React-Core/Default
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-jsiexecutor (= 0.64.1)
-    - React-perflogger (= 0.64.1)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-jsiexecutor (= 0.64.2)
+    - React-perflogger (= 0.64.2)
     - Yoga
-  - React-Core/RCTNetworkHeaders (0.64.1):
+  - React-Core/RCTNetworkHeaders (0.64.2):
     - glog
     - RCT-Folly (= 2020.01.13.00)
     - React-Core/Default
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-jsiexecutor (= 0.64.1)
-    - React-perflogger (= 0.64.1)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-jsiexecutor (= 0.64.2)
+    - React-perflogger (= 0.64.2)
     - Yoga
-  - React-Core/RCTSettingsHeaders (0.64.1):
+  - React-Core/RCTSettingsHeaders (0.64.2):
     - glog
     - RCT-Folly (= 2020.01.13.00)
     - React-Core/Default
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-jsiexecutor (= 0.64.1)
-    - React-perflogger (= 0.64.1)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-jsiexecutor (= 0.64.2)
+    - React-perflogger (= 0.64.2)
     - Yoga
-  - React-Core/RCTTextHeaders (0.64.1):
+  - React-Core/RCTTextHeaders (0.64.2):
     - glog
     - RCT-Folly (= 2020.01.13.00)
     - React-Core/Default
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-jsiexecutor (= 0.64.1)
-    - React-perflogger (= 0.64.1)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-jsiexecutor (= 0.64.2)
+    - React-perflogger (= 0.64.2)
     - Yoga
-  - React-Core/RCTVibrationHeaders (0.64.1):
+  - React-Core/RCTVibrationHeaders (0.64.2):
     - glog
     - RCT-Folly (= 2020.01.13.00)
     - React-Core/Default
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-jsiexecutor (= 0.64.1)
-    - React-perflogger (= 0.64.1)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-jsiexecutor (= 0.64.2)
+    - React-perflogger (= 0.64.2)
     - Yoga
-  - React-Core/RCTWebSocket (0.64.1):
+  - React-Core/RCTWebSocket (0.64.2):
     - glog
     - RCT-Folly (= 2020.01.13.00)
-    - React-Core/Default (= 0.64.1)
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-jsiexecutor (= 0.64.1)
-    - React-perflogger (= 0.64.1)
+    - React-Core/Default (= 0.64.2)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-jsiexecutor (= 0.64.2)
+    - React-perflogger (= 0.64.2)
     - Yoga
-  - React-CoreModules (0.64.1):
-    - FBReactNativeSpec (= 0.64.1)
+  - React-CoreModules (0.64.2):
+    - FBReactNativeSpec (= 0.64.2)
     - RCT-Folly (= 2020.01.13.00)
-    - RCTTypeSafety (= 0.64.1)
-    - React-Core/CoreModulesHeaders (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-RCTImage (= 0.64.1)
-    - ReactCommon/turbomodule/core (= 0.64.1)
-  - React-cxxreact (0.64.1):
+    - RCTTypeSafety (= 0.64.2)
+    - React-Core/CoreModulesHeaders (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-RCTImage (= 0.64.2)
+    - ReactCommon/turbomodule/core (= 0.64.2)
+  - React-cxxreact (0.64.2):
     - boost-for-react-native (= 1.63.0)
     - DoubleConversion
     - glog
     - RCT-Folly (= 2020.01.13.00)
-    - React-callinvoker (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-jsinspector (= 0.64.1)
-    - React-perflogger (= 0.64.1)
-    - React-runtimeexecutor (= 0.64.1)
-  - React-jsi (0.64.1):
+    - React-callinvoker (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-jsinspector (= 0.64.2)
+    - React-perflogger (= 0.64.2)
+    - React-runtimeexecutor (= 0.64.2)
+  - React-jsi (0.64.2):
     - boost-for-react-native (= 1.63.0)
     - DoubleConversion
     - glog
     - RCT-Folly (= 2020.01.13.00)
-    - React-jsi/Default (= 0.64.1)
-  - React-jsi/Default (0.64.1):
+    - React-jsi/Default (= 0.64.2)
+  - React-jsi/Default (0.64.2):
     - boost-for-react-native (= 1.63.0)
     - DoubleConversion
     - glog
     - RCT-Folly (= 2020.01.13.00)
-  - React-jsiexecutor (0.64.1):
+  - React-jsiexecutor (0.64.2):
     - DoubleConversion
     - glog
     - RCT-Folly (= 2020.01.13.00)
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-perflogger (= 0.64.1)
-  - React-jsinspector (0.64.1)
-  - react-native-jitsi-meet (2.1.1):
-    - JitsiMeetSDK (= 2.4.0)
-    - React
-  - react-native-onesignal (4.0.8):
-    - OneSignal (= 3.4.3)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-perflogger (= 0.64.2)
+  - React-jsinspector (0.64.2)
+  - react-native-onesignal (4.4.1):
+    - OneSignalXCFramework (= 3.11.2)
     - React (< 1.0.0, >= 0.13.0)
-  - react-native-splash-screen (3.2.0):
-    - React
-  - react-native-webview (11.4.4):
+  - react-native-safe-area-context (3.2.0):
     - React-Core
-  - React-perflogger (0.64.1)
-  - React-RCTActionSheet (0.64.1):
-    - React-Core/RCTActionSheetHeaders (= 0.64.1)
-  - React-RCTAnimation (0.64.1):
-    - FBReactNativeSpec (= 0.64.1)
+  - react-native-splash-screen (3.3.0):
+    - React-Core
+  - react-native-webview (11.23.1):
+    - React-Core
+  - React-perflogger (0.64.2)
+  - React-RCTActionSheet (0.64.2):
+    - React-Core/RCTActionSheetHeaders (= 0.64.2)
+  - React-RCTAnimation (0.64.2):
+    - FBReactNativeSpec (= 0.64.2)
     - RCT-Folly (= 2020.01.13.00)
-    - RCTTypeSafety (= 0.64.1)
-    - React-Core/RCTAnimationHeaders (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - ReactCommon/turbomodule/core (= 0.64.1)
-  - React-RCTBlob (0.64.1):
-    - FBReactNativeSpec (= 0.64.1)
+    - RCTTypeSafety (= 0.64.2)
+    - React-Core/RCTAnimationHeaders (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - ReactCommon/turbomodule/core (= 0.64.2)
+  - React-RCTBlob (0.64.2):
+    - FBReactNativeSpec (= 0.64.2)
     - RCT-Folly (= 2020.01.13.00)
-    - React-Core/RCTBlobHeaders (= 0.64.1)
-    - React-Core/RCTWebSocket (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-RCTNetwork (= 0.64.1)
-    - ReactCommon/turbomodule/core (= 0.64.1)
-  - React-RCTImage (0.64.1):
-    - FBReactNativeSpec (= 0.64.1)
+    - React-Core/RCTBlobHeaders (= 0.64.2)
+    - React-Core/RCTWebSocket (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-RCTNetwork (= 0.64.2)
+    - ReactCommon/turbomodule/core (= 0.64.2)
+  - React-RCTImage (0.64.2):
+    - FBReactNativeSpec (= 0.64.2)
     - RCT-Folly (= 2020.01.13.00)
-    - RCTTypeSafety (= 0.64.1)
-    - React-Core/RCTImageHeaders (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-RCTNetwork (= 0.64.1)
-    - ReactCommon/turbomodule/core (= 0.64.1)
-  - React-RCTLinking (0.64.1):
-    - FBReactNativeSpec (= 0.64.1)
-    - React-Core/RCTLinkingHeaders (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - ReactCommon/turbomodule/core (= 0.64.1)
-  - React-RCTNetwork (0.64.1):
-    - FBReactNativeSpec (= 0.64.1)
+    - RCTTypeSafety (= 0.64.2)
+    - React-Core/RCTImageHeaders (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-RCTNetwork (= 0.64.2)
+    - ReactCommon/turbomodule/core (= 0.64.2)
+  - React-RCTLinking (0.64.2):
+    - FBReactNativeSpec (= 0.64.2)
+    - React-Core/RCTLinkingHeaders (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - ReactCommon/turbomodule/core (= 0.64.2)
+  - React-RCTNetwork (0.64.2):
+    - FBReactNativeSpec (= 0.64.2)
     - RCT-Folly (= 2020.01.13.00)
-    - RCTTypeSafety (= 0.64.1)
-    - React-Core/RCTNetworkHeaders (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - ReactCommon/turbomodule/core (= 0.64.1)
-  - React-RCTSettings (0.64.1):
-    - FBReactNativeSpec (= 0.64.1)
+    - RCTTypeSafety (= 0.64.2)
+    - React-Core/RCTNetworkHeaders (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - ReactCommon/turbomodule/core (= 0.64.2)
+  - React-RCTSettings (0.64.2):
+    - FBReactNativeSpec (= 0.64.2)
     - RCT-Folly (= 2020.01.13.00)
-    - RCTTypeSafety (= 0.64.1)
-    - React-Core/RCTSettingsHeaders (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - ReactCommon/turbomodule/core (= 0.64.1)
-  - React-RCTText (0.64.1):
-    - React-Core/RCTTextHeaders (= 0.64.1)
-  - React-RCTVibration (0.64.1):
-    - FBReactNativeSpec (= 0.64.1)
+    - RCTTypeSafety (= 0.64.2)
+    - React-Core/RCTSettingsHeaders (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - ReactCommon/turbomodule/core (= 0.64.2)
+  - React-RCTText (0.64.2):
+    - React-Core/RCTTextHeaders (= 0.64.2)
+  - React-RCTVibration (0.64.2):
+    - FBReactNativeSpec (= 0.64.2)
     - RCT-Folly (= 2020.01.13.00)
-    - React-Core/RCTVibrationHeaders (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - ReactCommon/turbomodule/core (= 0.64.1)
-  - React-runtimeexecutor (0.64.1):
-    - React-jsi (= 0.64.1)
-  - ReactCommon/turbomodule/core (0.64.1):
+    - React-Core/RCTVibrationHeaders (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - ReactCommon/turbomodule/core (= 0.64.2)
+  - React-runtimeexecutor (0.64.2):
+    - React-jsi (= 0.64.2)
+  - ReactCommon/turbomodule/core (0.64.2):
     - DoubleConversion
     - glog
     - RCT-Folly (= 2020.01.13.00)
-    - React-callinvoker (= 0.64.1)
-    - React-Core (= 0.64.1)
-    - React-cxxreact (= 0.64.1)
-    - React-jsi (= 0.64.1)
-    - React-perflogger (= 0.64.1)
-  - RNIap (6.0.5):
+    - React-callinvoker (= 0.64.2)
+    - React-Core (= 0.64.2)
+    - React-cxxreact (= 0.64.2)
+    - React-jsi (= 0.64.2)
+    - React-perflogger (= 0.64.2)
+  - RNSVG (13.2.0):
     - React-Core
-  - RNSVG (12.1.1):
-    - React
   - Yoga (1.14.0)
   - YogaKit (1.18.1):
     - Yoga (~> 1.14)
@@ -360,6 +365,7 @@ DEPENDENCIES:
   - FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.75.1)
   - FlipperKit/SKIOSNetworkPlugin (~> 0.75.1)
   - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
+  - OneSignalXCFramework (< 4.0, >= 3.0)
   - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
   - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
   - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
@@ -373,8 +379,8 @@ DEPENDENCIES:
   - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
   - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
   - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
-  - react-native-jitsi-meet (from `../node_modules/react-native-jitsi-meet`)
   - react-native-onesignal (from `../node_modules/react-native-onesignal`)
+  - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
   - react-native-splash-screen (from `../node_modules/react-native-splash-screen`)
   - react-native-webview (from `../node_modules/react-native-webview`)
   - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
@@ -389,7 +395,6 @@ DEPENDENCIES:
   - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
   - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
   - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
-  - RNIap (from `../node_modules/react-native-iap`)
   - RNSVG (from `../node_modules/react-native-svg`)
   - Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
 
@@ -404,9 +409,8 @@ SPEC REPOS:
     - Flipper-PeerTalk
     - Flipper-RSocket
     - FlipperKit
-    - JitsiMeetSDK
     - libevent
-    - OneSignal
+    - OneSignalXCFramework
     - OpenSSL-Universal
     - YogaKit
 
@@ -441,10 +445,10 @@ EXTERNAL SOURCES:
     :path: "../node_modules/react-native/ReactCommon/jsiexecutor"
   React-jsinspector:
     :path: "../node_modules/react-native/ReactCommon/jsinspector"
-  react-native-jitsi-meet:
-    :path: "../node_modules/react-native-jitsi-meet"
   react-native-onesignal:
     :path: "../node_modules/react-native-onesignal"
+  react-native-safe-area-context:
+    :path: "../node_modules/react-native-safe-area-context"
   react-native-splash-screen:
     :path: "../node_modules/react-native-splash-screen"
   react-native-webview:
@@ -473,8 +477,6 @@ EXTERNAL SOURCES:
     :path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
   ReactCommon:
     :path: "../node_modules/react-native/ReactCommon"
-  RNIap:
-    :path: "../node_modules/react-native-iap"
   RNSVG:
     :path: "../node_modules/react-native-svg"
   Yoga:
@@ -484,8 +486,8 @@ SPEC CHECKSUMS:
   boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
   CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
   DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de
-  FBLazyVector: 7b423f9e248eae65987838148c36eec1dbfe0b53
-  FBReactNativeSpec: fd78c24e9311c6228da2ca9890011bea3381c06d
+  FBLazyVector: e686045572151edef46010a6f819ade377dfeb4b
+  FBReactNativeSpec: cf5f1408d66cca07053970c271aef9f6f4cf28a5
   Flipper: d3da1aa199aad94455ae725e9f3aa43f3ec17021
   Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41
   Flipper-Folly: 755929a4f851b2fb2c347d533a23f191b008554c
@@ -494,42 +496,40 @@ SPEC CHECKSUMS:
   Flipper-RSocket: 127954abe8b162fcaf68d2134d34dc2bd7076154
   FlipperKit: 8a20b5c5fcf9436cac58551dc049867247f64b00
   glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62
-  JitsiMeetSDK: d4a3aeed1a75fd57e6a78e5d202b6051dfcb9320
   libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
-  OneSignal: e4dfb1912410f302dc9661ce98fc829f6c18ff6a
+  OneSignalXCFramework: 81ceac017a290f23793443323090cfbe888f74ea
   OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b
   RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c
-  RCTRequired: ec2ebc96b7bfba3ca5c32740f5a0c6a014a274d2
-  RCTTypeSafety: 22567f31e67c3e088c7ac23ea46ab6d4779c0ea5
-  React: a241e3dbb1e91d06332f1dbd2b3ab26e1a4c4b9d
-  React-callinvoker: da4d1c6141696a00163960906bc8a55b985e4ce4
-  React-Core: 46ba164c437d7dac607b470c83c8308b05799748
-  React-CoreModules: 217bd14904491c7b9940ff8b34a3fe08013c2f14
-  React-cxxreact: 0090588ae6660c4615d3629fdd5c768d0983add4
-  React-jsi: 5de8204706bd872b78ea646aee5d2561ca1214b6
-  React-jsiexecutor: 124e8f99992490d0d13e0649d950d3e1aae06fe9
-  React-jsinspector: 500a59626037be5b3b3d89c5151bc3baa9abf1a9
-  react-native-jitsi-meet: 29ed76cdc6142d9a6c013bb14dd6205df0b5452b
-  react-native-onesignal: b7ee68bf64b23db26be657217e39c2076c0c4fac
-  react-native-splash-screen: 200d11d188e2e78cea3ad319964f6142b6384865
-  react-native-webview: 5483cffa8c9d7e0181587729d4a65eb718c9eba0
-  React-perflogger: aad6d4b4a267936b3667260d1f649b6f6069a675
-  React-RCTActionSheet: fc376be462c9c8d6ad82c0905442fd77f82a9d2a
-  React-RCTAnimation: ba0a1c3a2738be224a08092fa7f1b444ab77d309
-  React-RCTBlob: f758d4403fc5828a326dc69e27b41e1a92f34947
-  React-RCTImage: ce57088705f4a8d03f6594b066a59c29143ba73e
-  React-RCTLinking: 852a3a95c65fa63f657a4b4e2d3d83a815e00a7c
-  React-RCTNetwork: 9d7ccb8a08d522d71700b4fb677d9fa28cccd118
-  React-RCTSettings: d8aaf4389ff06114dee8c42ef5f0f2915946011e
-  React-RCTText: 809c12ed6b261796ba056c04fcd20d8b90bcc81d
-  React-RCTVibration: 4b99a7f5c6c0abbc5256410cc5425fb8531986e1
-  React-runtimeexecutor: ff951a0c241bfaefc4940a3f1f1a229e7cb32fa6
-  ReactCommon: bedc99ed4dae329c4fcf128d0c31b9115e5365ca
-  RNIap: a5c2a6e776178f39bb29add4da1b2afce9e3fc8b
-  RNSVG: 551acb6562324b1d52a4e0758f7ca0ec234e278f
-  Yoga: a7de31c64fe738607e7a3803e3f591a4b1df7393
+  RCTRequired: 6d3e854f0e7260a648badd0d44fc364bc9da9728
+  RCTTypeSafety: c1f31d19349c6b53085766359caac425926fafaa
+  React: bda6b6d7ae912de97d7a61aa5c160db24aa2ad69
+  React-callinvoker: 9840ea7e8e88ed73d438edb725574820b29b5baa
+  React-Core: b5e385da7ce5f16a220fc60fd0749eae2c6120f0
+  React-CoreModules: 17071a4e2c5239b01585f4aa8070141168ab298f
+  React-cxxreact: 9be7b6340ed9f7c53e53deca7779f07cd66525ba
+  React-jsi: 67747b9722f6dab2ffe15b011bcf6b3f2c3f1427
+  React-jsiexecutor: 80c46bd381fd06e418e0d4f53672dc1d1945c4c3
+  React-jsinspector: cc614ec18a9ca96fd275100c16d74d62ee11f0ae
+  react-native-onesignal: a4a08bf22290f739df33acf1f45f7a7f9850273b
+  react-native-safe-area-context: e471852c5ed67eea4b10c5d9d43c1cebae3b231d
+  react-native-splash-screen: 4312f786b13a81b5169ef346d76d33bc0c6dc457
+  react-native-webview: a192040320142d8f10d652a745c46e4f43e37f8c
+  React-perflogger: 25373e382fed75ce768a443822f07098a15ab737
+  React-RCTActionSheet: af7796ba49ffe4ca92e7277a5d992d37203f7da5
+  React-RCTAnimation: 6a2e76ab50c6f25b428d81b76a5a45351c4d77aa
+  React-RCTBlob: 02a2887023e0eed99391b6445b2e23a2a6f9226d
+  React-RCTImage: ce5bf8e7438f2286d9b646a05d6ab11f38b0323d
+  React-RCTLinking: ccd20742de14e020cb5f99d5c7e0bf0383aefbd9
+  React-RCTNetwork: dfb9d089ab0753e5e5f55fc4b1210858f7245647
+  React-RCTSettings: b14aef2d83699e48b410fb7c3ba5b66cd3291ae2
+  React-RCTText: 41a2e952dd9adc5caf6fb68ed46b275194d5da5f
+  React-RCTVibration: 24600e3b1aaa77126989bc58b6747509a1ba14f3
+  React-runtimeexecutor: a9904c6d0218fb9f8b19d6dd88607225927668f9
+  ReactCommon: 149906e01aa51142707a10665185db879898e966
+  RNSVG: 07037623c36f12e41312730622d5f6b3656227ca
+  Yoga: 575c581c63e0d35c9a83f4b46d01d63abc1100ac
   YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
 
-PODFILE CHECKSUM: f93be5fd371492fdad85810818c315f862ee70fd
+PODFILE CHECKSUM: 8cae9a96076bbed185d6f152b970ee548e0ce6bf
 
-COCOAPODS: 1.10.1
+COCOAPODS: 1.11.3

+ 8 - 7
ios/SplashScreen.storyboard

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15705" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21225" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15706"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21207"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -16,16 +16,18 @@
                         <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
-                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="obG-Y5-kRd">
+                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="obG-Y5-kRd">
                                 <rect key="frame" x="207" y="876" width="0.0" height="0.0"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="SplashImage" translatesAutoresizingMaskIntoConstraints="NO" id="RL8-Sx-rSy">
-                                <rect key="frame" x="0" y="0" />
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="background.png" translatesAutoresizingMaskIntoConstraints="NO" id="RL8-Sx-rSy">
+                                <rect key="frame" x="0.0" y="48" width="414" height="814"/>
                             </imageView>
                         </subviews>
+                        <viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <constraints>
                             <constraint firstItem="RL8-Sx-rSy" firstAttribute="top" secondItem="Bcu-3y-fUS" secondAttribute="top" id="AxW-a9-z2S"/>
@@ -33,7 +35,6 @@
                             <constraint firstItem="Bcu-3y-fUS" firstAttribute="trailing" secondItem="RL8-Sx-rSy" secondAttribute="trailing" id="hHC-9d-4Ps"/>
                             <constraint firstItem="RL8-Sx-rSy" firstAttribute="leading" secondItem="Bcu-3y-fUS" secondAttribute="leading" id="mga-C0-hVM"/>
                         </constraints>
-                        <viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
                     </view>
                 </viewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
@@ -42,6 +43,6 @@
         </scene>
     </scenes>
     <resources>
-        <image name="SplashImage" width="896" height="896"/>
+        <image name="background.png" width="318.7122802734375" height="318.7122802734375"/>
     </resources>
 </document>

+ 295 - 172
ios/una.xcodeproj/project.pbxproj

@@ -8,33 +8,16 @@
 
 /* Begin PBXBuildFile section */
 		00E356F31AD99517003FC87E /* unaTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* unaTests.m */; };
-		04404F1739D34118BFB09089 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 40B5267B3A2A43B5A04B2BB1 /* Octicons.ttf */; };
+		1366385BD9685BB7AE9B882F /* libPods-una.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3421A51B67F43D9336D7D318 /* libPods-una.a */; };
 		13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
 		13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
 		13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
-		170B301DEA149FCA46570483 /* libPods-una.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 426F74E851FC9ECFF5328756 /* libPods-una.a */; };
-		1A21C68DD71A283965797D2E /* libPods-una-unaTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C4EF45311BECF84FDEDF1C9D /* libPods-una-unaTests.a */; };
-		1EA46F704FD94EFA94916D33 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CCB0E6757E9649B9A6703ECA /* EvilIcons.ttf */; };
-		1EDE42AC09E0489BB4D84D04 /* Fontisto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A6E44ED05BE341ADAD2741FC /* Fontisto.ttf */; };
-		3703376BFAAC46E88E37E424 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CEDD724E007B416089C2205E /* MaterialCommunityIcons.ttf */; };
-		40715B76E5964737BD4A28B5 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 30BB17630E174D368624FAAD /* Ionicons.ttf */; };
-		48864C33F3F6428FAEA9B90F /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C5D25468CD514584B8A253DC /* AntDesign.ttf */; };
-		539330BD70B2457FB71823E8 /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FBA298A36302449DA5978BE8 /* FontAwesome5_Brands.ttf */; };
-		6DCC3E31C5074512B0969A99 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 304E6F90B775430190F08A2C /* FontAwesome.ttf */; };
-		979D95C577E94B5C83E442DF /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DE87210DF7E942979AA01AFF /* Zocial.ttf */; };
-		A64E5C43989C449C87B3E992 /* Roboto_medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = C1D105B191634EADA97A2822 /* Roboto_medium.ttf */; };
-		AF0A6D770CCF45749864D66D /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D773CACC1F6A4750A773775A /* Entypo.ttf */; };
-		B5EC97D9B6614C2CB78B8461 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A9C82A02061146DC83B93C10 /* MaterialIcons.ttf */; };
-		C6AB046C6F0E44118F488FE7 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EDC09AA1BED7446B9BC5F42C /* Feather.ttf */; };
-		CE6E622A256444B881B5EED3 /* Roboto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4D3E739CB2EC4D898E5AB7FF /* Roboto.ttf */; };
-		D68A8E14837A4C0A860EF0E9 /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FF6F312D13C04C58A94B7A55 /* FontAwesome5_Solid.ttf */; };
-		DA1C5D47151D4BB8AB402398 /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7872C937269E49C3B598453A /* FontAwesome5_Regular.ttf */; };
-		E0864CC19A424FCE8385A5A5 /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4A4D001F2BF741FBA70A4AAE /* SimpleLineIcons.ttf */; };
-		E4FD850C3CCF4EF3B01288E2 /* rubicon-icon-font.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 286785AFB2844391A5398B7A /* rubicon-icon-font.ttf */; };
-		F2D844BD3B6E412299413454 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 319102371E9949C18EFA3AB9 /* Foundation.ttf */; };
-		FA0C2F1C2892963700F4DE01 /* libswiftWebKit.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = FA0C2F1B2892963700F4DE01 /* libswiftWebKit.tbd */; };
-		FA47E920264B5D3B00E80276 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA47E91F264B5D3B00E80276 /* SplashScreen.storyboard */; };
-		FA529A04265A360800A94CAB /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA529A03265A360800A94CAB /* NetworkExtension.framework */; };
+		3167637B7225057D27002B20 /* libPods-una-unaTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BBB257013EAA4703E01BF401 /* libPods-una-unaTests.a */; };
+		AC50CD651DF5153154C744B2 /* libPods-OneSignalNotificationServiceExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 410FDBEBC5A596A4D83BF120 /* libPods-OneSignalNotificationServiceExtension.a */; };
+		FA6CB5C728E169A000D7F63C /* background.png in Resources */ = {isa = PBXBuildFile; fileRef = FA6CB5C628E169A000D7F63C /* background.png */; };
+		FA791F9728E141ED002EA334 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA791F9628E141ED002EA334 /* NotificationService.swift */; };
+		FA791F9B28E141ED002EA334 /* OneSignalNotificationServiceExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = FA791F9428E141ED002EA334 /* OneSignalNotificationServiceExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+		FAC5960E28E1541900D4A31E /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FAC5960D28E1541900D4A31E /* SplashScreen.storyboard */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
@@ -45,8 +28,29 @@
 			remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
 			remoteInfo = una;
 		};
+		FA791F9928E141ED002EA334 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = FA791F9328E141ED002EA334;
+			remoteInfo = OneSignalNotificationServiceExtension;
+		};
 /* End PBXContainerItemProxy section */
 
+/* Begin PBXCopyFilesBuildPhase section */
+		FA791F9F28E141EE002EA334 /* Embed Foundation Extensions */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 13;
+			files = (
+				FA791F9B28E141ED002EA334 /* OneSignalNotificationServiceExtension.appex in Embed Foundation Extensions */,
+			);
+			name = "Embed Foundation Extensions";
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
 /* Begin PBXFileReference section */
 		00E356EE1AD99517003FC87E /* unaTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = unaTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
 		00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -57,36 +61,23 @@
 		13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = una/Images.xcassets; sourceTree = "<group>"; };
 		13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = una/Info.plist; sourceTree = "<group>"; };
 		13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = una/main.m; sourceTree = "<group>"; };
-		16EC72F4F42EB46F0FE63AEF /* Pods-una.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-una.debug.xcconfig"; path = "Target Support Files/Pods-una/Pods-una.debug.xcconfig"; sourceTree = "<group>"; };
-		286785AFB2844391A5398B7A /* rubicon-icon-font.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "rubicon-icon-font.ttf"; path = "../node_modules/native-base/Fonts/rubicon-icon-font.ttf"; sourceTree = "<group>"; };
-		304E6F90B775430190F08A2C /* FontAwesome.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome.ttf; path = "../node_modules/native-base/Fonts/FontAwesome.ttf"; sourceTree = "<group>"; };
-		30BB17630E174D368624FAAD /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/native-base/Fonts/Ionicons.ttf"; sourceTree = "<group>"; };
-		319102371E9949C18EFA3AB9 /* Foundation.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Foundation.ttf; path = "../node_modules/native-base/Fonts/Foundation.ttf"; sourceTree = "<group>"; };
-		40B5267B3A2A43B5A04B2BB1 /* Octicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Octicons.ttf; path = "../node_modules/native-base/Fonts/Octicons.ttf"; sourceTree = "<group>"; };
-		426F74E851FC9ECFF5328756 /* libPods-una.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-una.a"; sourceTree = BUILT_PRODUCTS_DIR; };
-		45A88ED124BD40A34BA3F36B /* Pods-una-unaTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-una-unaTests.release.xcconfig"; path = "Target Support Files/Pods-una-unaTests/Pods-una-unaTests.release.xcconfig"; sourceTree = "<group>"; };
-		4A4D001F2BF741FBA70A4AAE /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = SimpleLineIcons.ttf; path = "../node_modules/native-base/Fonts/SimpleLineIcons.ttf"; sourceTree = "<group>"; };
-		4D3E739CB2EC4D898E5AB7FF /* Roboto.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Roboto.ttf; path = "../node_modules/native-base/Fonts/Roboto.ttf"; sourceTree = "<group>"; };
-		616B3C14C0F3E18A66248E37 /* Pods-una-unaTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-una-unaTests.debug.xcconfig"; path = "Target Support Files/Pods-una-unaTests/Pods-una-unaTests.debug.xcconfig"; sourceTree = "<group>"; };
-		7872C937269E49C3B598453A /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Regular.ttf; path = "../node_modules/native-base/Fonts/FontAwesome5_Regular.ttf"; sourceTree = "<group>"; };
-		A6E44ED05BE341ADAD2741FC /* Fontisto.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Fontisto.ttf; path = "../node_modules/native-base/Fonts/Fontisto.ttf"; sourceTree = "<group>"; };
-		A9C82A02061146DC83B93C10 /* MaterialIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialIcons.ttf; path = "../node_modules/native-base/Fonts/MaterialIcons.ttf"; sourceTree = "<group>"; };
-		C1D105B191634EADA97A2822 /* Roboto_medium.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Roboto_medium.ttf; path = "../node_modules/native-base/Fonts/Roboto_medium.ttf"; sourceTree = "<group>"; };
-		C4EF45311BECF84FDEDF1C9D /* libPods-una-unaTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-una-unaTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
-		C5D25468CD514584B8A253DC /* AntDesign.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = AntDesign.ttf; path = "../node_modules/native-base/Fonts/AntDesign.ttf"; sourceTree = "<group>"; };
-		CCB0E6757E9649B9A6703ECA /* EvilIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = EvilIcons.ttf; path = "../node_modules/native-base/Fonts/EvilIcons.ttf"; sourceTree = "<group>"; };
-		CEDD724E007B416089C2205E /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialCommunityIcons.ttf; path = "../node_modules/native-base/Fonts/MaterialCommunityIcons.ttf"; sourceTree = "<group>"; };
-		D773CACC1F6A4750A773775A /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/native-base/Fonts/Entypo.ttf"; sourceTree = "<group>"; };
-		DD996727F702F1A92FDC9834 /* Pods-una.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-una.release.xcconfig"; path = "Target Support Files/Pods-una/Pods-una.release.xcconfig"; sourceTree = "<group>"; };
-		DE87210DF7E942979AA01AFF /* Zocial.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Zocial.ttf; path = "../node_modules/native-base/Fonts/Zocial.ttf"; sourceTree = "<group>"; };
+		178F2A700B58FE8F7C20720E /* Pods-OneSignalNotificationServiceExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OneSignalNotificationServiceExtension.debug.xcconfig"; path = "Target Support Files/Pods-OneSignalNotificationServiceExtension/Pods-OneSignalNotificationServiceExtension.debug.xcconfig"; sourceTree = "<group>"; };
+		3421A51B67F43D9336D7D318 /* libPods-una.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-una.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+		3BA1ED12EC11C8257506B795 /* Pods-OneSignalNotificationServiceExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OneSignalNotificationServiceExtension.release.xcconfig"; path = "Target Support Files/Pods-OneSignalNotificationServiceExtension/Pods-OneSignalNotificationServiceExtension.release.xcconfig"; sourceTree = "<group>"; };
+		410FDBEBC5A596A4D83BF120 /* libPods-OneSignalNotificationServiceExtension.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-OneSignalNotificationServiceExtension.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+		5B859AAFBC5709131A52C2DF /* Pods-una.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-una.debug.xcconfig"; path = "Target Support Files/Pods-una/Pods-una.debug.xcconfig"; sourceTree = "<group>"; };
+		BBB257013EAA4703E01BF401 /* libPods-una-unaTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-una-unaTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+		BC773EE98A50F87246B0D807 /* Pods-una.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-una.release.xcconfig"; path = "Target Support Files/Pods-una/Pods-una.release.xcconfig"; sourceTree = "<group>"; };
+		C6B955E4987E70AADC80A7D6 /* Pods-una-unaTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-una-unaTests.debug.xcconfig"; path = "Target Support Files/Pods-una-unaTests/Pods-una-unaTests.debug.xcconfig"; sourceTree = "<group>"; };
+		E9E9355A1C4A00D99BD629CB /* Pods-una-unaTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-una-unaTests.release.xcconfig"; path = "Target Support Files/Pods-una-unaTests/Pods-una-unaTests.release.xcconfig"; sourceTree = "<group>"; };
 		ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
-		EDC09AA1BED7446B9BC5F42C /* Feather.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Feather.ttf; path = "../node_modules/native-base/Fonts/Feather.ttf"; sourceTree = "<group>"; };
-		FA0C2F1B2892963700F4DE01 /* libswiftWebKit.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libswiftWebKit.tbd; path = usr/lib/swift/libswiftWebKit.tbd; sourceTree = SDKROOT; };
-		FA47E91F264B5D3B00E80276 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SplashScreen.storyboard; sourceTree = "<group>"; };
-		FA529A02265A360800A94CAB /* una.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = una.entitlements; path = una/una.entitlements; sourceTree = "<group>"; };
-		FA529A03265A360800A94CAB /* NetworkExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NetworkExtension.framework; path = System/Library/Frameworks/NetworkExtension.framework; sourceTree = SDKROOT; };
-		FBA298A36302449DA5978BE8 /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Brands.ttf; path = "../node_modules/native-base/Fonts/FontAwesome5_Brands.ttf"; sourceTree = "<group>"; };
-		FF6F312D13C04C58A94B7A55 /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Solid.ttf; path = "../node_modules/native-base/Fonts/FontAwesome5_Solid.ttf"; sourceTree = "<group>"; };
+		FA6CB5C628E169A000D7F63C /* background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = background.png; path = ../img/background.png; sourceTree = "<group>"; };
+		FA791F8F28E140D8002EA334 /* una.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = una.entitlements; path = una/una.entitlements; sourceTree = "<group>"; };
+		FA791F9428E141ED002EA334 /* OneSignalNotificationServiceExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = OneSignalNotificationServiceExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
+		FA791F9628E141ED002EA334 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = "<group>"; };
+		FA791F9828E141ED002EA334 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		FAC5960D28E1541900D4A31E /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SplashScreen.storyboard; sourceTree = "<group>"; };
+		FAC81A9B28E147D60094F473 /* OneSignalNotificationServiceExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = OneSignalNotificationServiceExtension.entitlements; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -94,7 +85,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				1A21C68DD71A283965797D2E /* libPods-una-unaTests.a in Frameworks */,
+				3167637B7225057D27002B20 /* libPods-una-unaTests.a in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -102,9 +93,15 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				FA0C2F1C2892963700F4DE01 /* libswiftWebKit.tbd in Frameworks */,
-				170B301DEA149FCA46570483 /* libPods-una.a in Frameworks */,
-				FA529A04265A360800A94CAB /* NetworkExtension.framework in Frameworks */,
+				1366385BD9685BB7AE9B882F /* libPods-una.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FA791F9128E141ED002EA334 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				AC50CD651DF5153154C744B2 /* libPods-OneSignalNotificationServiceExtension.a in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -131,62 +128,38 @@
 		13B07FAE1A68108700A75B9A /* una */ = {
 			isa = PBXGroup;
 			children = (
-				FA529A02265A360800A94CAB /* una.entitlements */,
+				FA6CB5C628E169A000D7F63C /* background.png */,
+				FAC5960D28E1541900D4A31E /* SplashScreen.storyboard */,
+				FA791F8F28E140D8002EA334 /* una.entitlements */,
 				13B07FAF1A68108700A75B9A /* AppDelegate.h */,
 				13B07FB01A68108700A75B9A /* AppDelegate.m */,
 				13B07FB51A68108700A75B9A /* Images.xcassets */,
 				13B07FB61A68108700A75B9A /* Info.plist */,
-				FA47E91F264B5D3B00E80276 /* SplashScreen.storyboard */,
 				13B07FB71A68108700A75B9A /* main.m */,
 			);
 			name = una;
 			sourceTree = "<group>";
 		};
-		2C717F6294E147E6925FC387 /* Resources */ = {
-			isa = PBXGroup;
-			children = (
-				C5D25468CD514584B8A253DC /* AntDesign.ttf */,
-				D773CACC1F6A4750A773775A /* Entypo.ttf */,
-				CCB0E6757E9649B9A6703ECA /* EvilIcons.ttf */,
-				EDC09AA1BED7446B9BC5F42C /* Feather.ttf */,
-				304E6F90B775430190F08A2C /* FontAwesome.ttf */,
-				FBA298A36302449DA5978BE8 /* FontAwesome5_Brands.ttf */,
-				7872C937269E49C3B598453A /* FontAwesome5_Regular.ttf */,
-				FF6F312D13C04C58A94B7A55 /* FontAwesome5_Solid.ttf */,
-				A6E44ED05BE341ADAD2741FC /* Fontisto.ttf */,
-				319102371E9949C18EFA3AB9 /* Foundation.ttf */,
-				30BB17630E174D368624FAAD /* Ionicons.ttf */,
-				CEDD724E007B416089C2205E /* MaterialCommunityIcons.ttf */,
-				A9C82A02061146DC83B93C10 /* MaterialIcons.ttf */,
-				40B5267B3A2A43B5A04B2BB1 /* Octicons.ttf */,
-				C1D105B191634EADA97A2822 /* Roboto_medium.ttf */,
-				4D3E739CB2EC4D898E5AB7FF /* Roboto.ttf */,
-				286785AFB2844391A5398B7A /* rubicon-icon-font.ttf */,
-				4A4D001F2BF741FBA70A4AAE /* SimpleLineIcons.ttf */,
-				DE87210DF7E942979AA01AFF /* Zocial.ttf */,
-			);
-			name = Resources;
-			sourceTree = "<group>";
-		};
 		2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
-				FA0C2F1B2892963700F4DE01 /* libswiftWebKit.tbd */,
-				FA529A03265A360800A94CAB /* NetworkExtension.framework */,
 				ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
-				426F74E851FC9ECFF5328756 /* libPods-una.a */,
-				C4EF45311BECF84FDEDF1C9D /* libPods-una-unaTests.a */,
+				3421A51B67F43D9336D7D318 /* libPods-una.a */,
+				BBB257013EAA4703E01BF401 /* libPods-una-unaTests.a */,
+				410FDBEBC5A596A4D83BF120 /* libPods-OneSignalNotificationServiceExtension.a */,
 			);
 			name = Frameworks;
 			sourceTree = "<group>";
 		};
-		4727B4DBE34466516E372DFB /* Pods */ = {
+		4BD84C69DA6B1D6C8D9BD47E /* Pods */ = {
 			isa = PBXGroup;
 			children = (
-				16EC72F4F42EB46F0FE63AEF /* Pods-una.debug.xcconfig */,
-				DD996727F702F1A92FDC9834 /* Pods-una.release.xcconfig */,
-				616B3C14C0F3E18A66248E37 /* Pods-una-unaTests.debug.xcconfig */,
-				45A88ED124BD40A34BA3F36B /* Pods-una-unaTests.release.xcconfig */,
+				5B859AAFBC5709131A52C2DF /* Pods-una.debug.xcconfig */,
+				BC773EE98A50F87246B0D807 /* Pods-una.release.xcconfig */,
+				C6B955E4987E70AADC80A7D6 /* Pods-una-unaTests.debug.xcconfig */,
+				E9E9355A1C4A00D99BD629CB /* Pods-una-unaTests.release.xcconfig */,
+				178F2A700B58FE8F7C20720E /* Pods-OneSignalNotificationServiceExtension.debug.xcconfig */,
+				3BA1ED12EC11C8257506B795 /* Pods-OneSignalNotificationServiceExtension.release.xcconfig */,
 			);
 			path = Pods;
 			sourceTree = "<group>";
@@ -204,10 +177,10 @@
 				13B07FAE1A68108700A75B9A /* una */,
 				832341AE1AAA6A7D00B99B32 /* Libraries */,
 				00E356EF1AD99517003FC87E /* unaTests */,
+				FA791F9528E141ED002EA334 /* OneSignalNotificationServiceExtension */,
 				83CBBA001A601CBA00E9B192 /* Products */,
 				2D16E6871FA4F8E400B85C8A /* Frameworks */,
-				4727B4DBE34466516E372DFB /* Pods */,
-				2C717F6294E147E6925FC387 /* Resources */,
+				4BD84C69DA6B1D6C8D9BD47E /* Pods */,
 			);
 			indentWidth = 2;
 			sourceTree = "<group>";
@@ -219,10 +192,21 @@
 			children = (
 				13B07F961A680F5B00A75B9A /* una.app */,
 				00E356EE1AD99517003FC87E /* unaTests.xctest */,
+				FA791F9428E141ED002EA334 /* OneSignalNotificationServiceExtension.appex */,
 			);
 			name = Products;
 			sourceTree = "<group>";
 		};
+		FA791F9528E141ED002EA334 /* OneSignalNotificationServiceExtension */ = {
+			isa = PBXGroup;
+			children = (
+				FAC81A9B28E147D60094F473 /* OneSignalNotificationServiceExtension.entitlements */,
+				FA791F9628E141ED002EA334 /* NotificationService.swift */,
+				FA791F9828E141ED002EA334 /* Info.plist */,
+			);
+			path = OneSignalNotificationServiceExtension;
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
@@ -230,12 +214,12 @@
 			isa = PBXNativeTarget;
 			buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "unaTests" */;
 			buildPhases = (
-				0FF33EDE159260C9667F099B /* [CP] Check Pods Manifest.lock */,
+				27DE1CE80971C2CC95BC2802 /* [CP] Check Pods Manifest.lock */,
 				00E356EA1AD99517003FC87E /* Sources */,
 				00E356EB1AD99517003FC87E /* Frameworks */,
 				00E356EC1AD99517003FC87E /* Resources */,
-				750E687BE528628B9699DB08 /* [CP] Embed Pods Frameworks */,
-				B8EAB89C936EFD90E3FC86EE /* [CP] Copy Pods Resources */,
+				CD0B98A522B2A1FBCBD7AD84 /* [CP] Embed Pods Frameworks */,
+				4E1EF0023E09D995CF5DC290 /* [CP] Copy Pods Resources */,
 			);
 			buildRules = (
 			);
@@ -251,30 +235,51 @@
 			isa = PBXNativeTarget;
 			buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "una" */;
 			buildPhases = (
-				7B941663EB2331ACB495188C /* [CP] Check Pods Manifest.lock */,
+				B68439B79C72A7A367813EAB /* [CP] Check Pods Manifest.lock */,
 				FD10A7F022414F080027D42C /* Start Packager */,
 				13B07F871A680F5B00A75B9A /* Sources */,
 				13B07F8C1A680F5B00A75B9A /* Frameworks */,
 				13B07F8E1A680F5B00A75B9A /* Resources */,
 				00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
-				3FEE94370577A025D97528B3 /* [CP] Embed Pods Frameworks */,
-				237BE1E04273483847435A62 /* [CP] Copy Pods Resources */,
+				F3574409BC2C46AE26637C0C /* [CP] Embed Pods Frameworks */,
+				1BCC870DBCFE956974E14EA0 /* [CP] Copy Pods Resources */,
+				FA791F9F28E141EE002EA334 /* Embed Foundation Extensions */,
 			);
 			buildRules = (
 			);
 			dependencies = (
+				FA791F9A28E141ED002EA334 /* PBXTargetDependency */,
 			);
 			name = una;
 			productName = una;
 			productReference = 13B07F961A680F5B00A75B9A /* una.app */;
 			productType = "com.apple.product-type.application";
 		};
+		FA791F9328E141ED002EA334 /* OneSignalNotificationServiceExtension */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FA791F9C28E141EE002EA334 /* Build configuration list for PBXNativeTarget "OneSignalNotificationServiceExtension" */;
+			buildPhases = (
+				28C1ED04EAAD457D241E5A48 /* [CP] Check Pods Manifest.lock */,
+				FA791F9028E141ED002EA334 /* Sources */,
+				FA791F9128E141ED002EA334 /* Frameworks */,
+				FA791F9228E141ED002EA334 /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = OneSignalNotificationServiceExtension;
+			productName = OneSignalNotificationServiceExtension;
+			productReference = FA791F9428E141ED002EA334 /* OneSignalNotificationServiceExtension.appex */;
+			productType = "com.apple.product-type.app-extension";
+		};
 /* End PBXNativeTarget section */
 
 /* Begin PBXProject section */
 		83CBB9F71A601CBA00E9B192 /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
+				LastSwiftUpdateCheck = 1400;
 				LastUpgradeCheck = 1210;
 				TargetAttributes = {
 					00E356ED1AD99517003FC87E = {
@@ -284,6 +289,9 @@
 					13B07F861A680F5B00A75B9A = {
 						LastSwiftMigration = 1120;
 					};
+					FA791F9328E141ED002EA334 = {
+						CreatedOnToolsVersion = 14.0;
+					};
 				};
 			};
 			buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "una" */;
@@ -301,6 +309,7 @@
 			targets = (
 				13B07F861A680F5B00A75B9A /* una */,
 				00E356ED1AD99517003FC87E /* unaTests */,
+				FA791F9328E141ED002EA334 /* OneSignalNotificationServiceExtension */,
 			);
 		};
 /* End PBXProject section */
@@ -317,27 +326,16 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				FA6CB5C728E169A000D7F63C /* background.png in Resources */,
+				FAC5960E28E1541900D4A31E /* SplashScreen.storyboard in Resources */,
 				13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
-				48864C33F3F6428FAEA9B90F /* AntDesign.ttf in Resources */,
-				AF0A6D770CCF45749864D66D /* Entypo.ttf in Resources */,
-				1EA46F704FD94EFA94916D33 /* EvilIcons.ttf in Resources */,
-				C6AB046C6F0E44118F488FE7 /* Feather.ttf in Resources */,
-				6DCC3E31C5074512B0969A99 /* FontAwesome.ttf in Resources */,
-				539330BD70B2457FB71823E8 /* FontAwesome5_Brands.ttf in Resources */,
-				DA1C5D47151D4BB8AB402398 /* FontAwesome5_Regular.ttf in Resources */,
-				FA47E920264B5D3B00E80276 /* SplashScreen.storyboard in Resources */,
-				D68A8E14837A4C0A860EF0E9 /* FontAwesome5_Solid.ttf in Resources */,
-				1EDE42AC09E0489BB4D84D04 /* Fontisto.ttf in Resources */,
-				F2D844BD3B6E412299413454 /* Foundation.ttf in Resources */,
-				40715B76E5964737BD4A28B5 /* Ionicons.ttf in Resources */,
-				3703376BFAAC46E88E37E424 /* MaterialCommunityIcons.ttf in Resources */,
-				B5EC97D9B6614C2CB78B8461 /* MaterialIcons.ttf in Resources */,
-				04404F1739D34118BFB09089 /* Octicons.ttf in Resources */,
-				A64E5C43989C449C87B3E992 /* Roboto_medium.ttf in Resources */,
-				CE6E622A256444B881B5EED3 /* Roboto.ttf in Resources */,
-				E4FD850C3CCF4EF3B01288E2 /* rubicon-icon-font.ttf in Resources */,
-				E0864CC19A424FCE8385A5A5 /* SimpleLineIcons.ttf in Resources */,
-				979D95C577E94B5C83E442DF /* Zocial.ttf in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		FA791F9228E141ED002EA334 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -358,80 +356,85 @@
 			shellPath = /bin/sh;
 			shellScript = "set -e\n\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
 		};
-		0FF33EDE159260C9667F099B /* [CP] Check Pods Manifest.lock */ = {
+		1BCC870DBCFE956974E14EA0 /* [CP] Copy Pods Resources */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 			);
 			inputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-una/Pods-una-resources-${CONFIGURATION}-input-files.xcfilelist",
 			);
-			inputPaths = (
-				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
-				"${PODS_ROOT}/Manifest.lock",
-			);
-			name = "[CP] Check Pods Manifest.lock";
+			name = "[CP] Copy Pods Resources";
 			outputFileListPaths = (
-			);
-			outputPaths = (
-				"$(DERIVED_FILE_DIR)/Pods-una-unaTests-checkManifestLockResult.txt",
+				"${PODS_ROOT}/Target Support Files/Pods-una/Pods-una-resources-${CONFIGURATION}-output-files.xcfilelist",
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-una/Pods-una-resources.sh\"\n";
 			showEnvVarsInLog = 0;
 		};
-		237BE1E04273483847435A62 /* [CP] Copy Pods Resources */ = {
+		27DE1CE80971C2CC95BC2802 /* [CP] Check Pods Manifest.lock */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 			);
 			inputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-una/Pods-una-resources-${CONFIGURATION}-input-files.xcfilelist",
 			);
-			name = "[CP] Copy Pods Resources";
+			inputPaths = (
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+				"${PODS_ROOT}/Manifest.lock",
+			);
+			name = "[CP] Check Pods Manifest.lock";
 			outputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-una/Pods-una-resources-${CONFIGURATION}-output-files.xcfilelist",
+			);
+			outputPaths = (
+				"$(DERIVED_FILE_DIR)/Pods-una-unaTests-checkManifestLockResult.txt",
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-una/Pods-una-resources.sh\"\n";
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
 			showEnvVarsInLog = 0;
 		};
-		3FEE94370577A025D97528B3 /* [CP] Embed Pods Frameworks */ = {
+		28C1ED04EAAD457D241E5A48 /* [CP] Check Pods Manifest.lock */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 			);
 			inputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-una/Pods-una-frameworks-${CONFIGURATION}-input-files.xcfilelist",
 			);
-			name = "[CP] Embed Pods Frameworks";
+			inputPaths = (
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+				"${PODS_ROOT}/Manifest.lock",
+			);
+			name = "[CP] Check Pods Manifest.lock";
 			outputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-una/Pods-una-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+			);
+			outputPaths = (
+				"$(DERIVED_FILE_DIR)/Pods-OneSignalNotificationServiceExtension-checkManifestLockResult.txt",
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-una/Pods-una-frameworks.sh\"\n";
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
 			showEnvVarsInLog = 0;
 		};
-		750E687BE528628B9699DB08 /* [CP] Embed Pods Frameworks */ = {
+		4E1EF0023E09D995CF5DC290 /* [CP] Copy Pods Resources */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 			);
 			inputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-una-unaTests/Pods-una-unaTests-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+				"${PODS_ROOT}/Target Support Files/Pods-una-unaTests/Pods-una-unaTests-resources-${CONFIGURATION}-input-files.xcfilelist",
 			);
-			name = "[CP] Embed Pods Frameworks";
+			name = "[CP] Copy Pods Resources";
 			outputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-una-unaTests/Pods-una-unaTests-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+				"${PODS_ROOT}/Target Support Files/Pods-una-unaTests/Pods-una-unaTests-resources-${CONFIGURATION}-output-files.xcfilelist",
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-una-unaTests/Pods-una-unaTests-frameworks.sh\"\n";
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-una-unaTests/Pods-una-unaTests-resources.sh\"\n";
 			showEnvVarsInLog = 0;
 		};
-		7B941663EB2331ACB495188C /* [CP] Check Pods Manifest.lock */ = {
+		B68439B79C72A7A367813EAB /* [CP] Check Pods Manifest.lock */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
@@ -453,21 +456,38 @@
 			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
 			showEnvVarsInLog = 0;
 		};
-		B8EAB89C936EFD90E3FC86EE /* [CP] Copy Pods Resources */ = {
+		CD0B98A522B2A1FBCBD7AD84 /* [CP] Embed Pods Frameworks */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 			);
 			inputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-una-unaTests/Pods-una-unaTests-resources-${CONFIGURATION}-input-files.xcfilelist",
+				"${PODS_ROOT}/Target Support Files/Pods-una-unaTests/Pods-una-unaTests-frameworks-${CONFIGURATION}-input-files.xcfilelist",
 			);
-			name = "[CP] Copy Pods Resources";
+			name = "[CP] Embed Pods Frameworks";
 			outputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-una-unaTests/Pods-una-unaTests-resources-${CONFIGURATION}-output-files.xcfilelist",
+				"${PODS_ROOT}/Target Support Files/Pods-una-unaTests/Pods-una-unaTests-frameworks-${CONFIGURATION}-output-files.xcfilelist",
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-una-unaTests/Pods-una-unaTests-resources.sh\"\n";
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-una-unaTests/Pods-una-unaTests-frameworks.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
+		F3574409BC2C46AE26637C0C /* [CP] Embed Pods Frameworks */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-una/Pods-una-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+			);
+			name = "[CP] Embed Pods Frameworks";
+			outputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-una/Pods-una-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-una/Pods-una-frameworks.sh\"\n";
 			showEnvVarsInLog = 0;
 		};
 		FD10A7F022414F080027D42C /* Start Packager */ = {
@@ -509,6 +529,14 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		FA791F9028E141ED002EA334 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FA791F9728E141ED002EA334 /* NotificationService.swift in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
@@ -517,12 +545,17 @@
 			target = 13B07F861A680F5B00A75B9A /* una */;
 			targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
 		};
+		FA791F9A28E141ED002EA334 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = FA791F9328E141ED002EA334 /* OneSignalNotificationServiceExtension */;
+			targetProxy = FA791F9928E141ED002EA334 /* PBXContainerItemProxy */;
+		};
 /* End PBXTargetDependency section */
 
 /* Begin XCBuildConfiguration section */
 		00E356F61AD99517003FC87E /* Debug */ = {
 			isa = XCBuildConfiguration;
-			baseConfigurationReference = 616B3C14C0F3E18A66248E37 /* Pods-una-unaTests.debug.xcconfig */;
+			baseConfigurationReference = C6B955E4987E70AADC80A7D6 /* Pods-una-unaTests.debug.xcconfig */;
 			buildSettings = {
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				GCC_PREPROCESSOR_DEFINITIONS = (
@@ -530,7 +563,7 @@
 					"$(inherited)",
 				);
 				INFOPLIST_FILE = unaTests/Info.plist;
-				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
@@ -549,12 +582,12 @@
 		};
 		00E356F71AD99517003FC87E /* Release */ = {
 			isa = XCBuildConfiguration;
-			baseConfigurationReference = 45A88ED124BD40A34BA3F36B /* Pods-una-unaTests.release.xcconfig */;
+			baseConfigurationReference = E9E9355A1C4A00D99BD629CB /* Pods-una-unaTests.release.xcconfig */;
 			buildSettings = {
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				COPY_PHASE_STRIP = NO;
 				INFOPLIST_FILE = unaTests/Info.plist;
-				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
@@ -573,24 +606,22 @@
 		};
 		13B07F941A680F5B00A75B9A /* Debug */ = {
 			isa = XCBuildConfiguration;
-			baseConfigurationReference = 16EC72F4F42EB46F0FE63AEF /* Pods-una.debug.xcconfig */;
+			baseConfigurationReference = 5B859AAFBC5709131A52C2DF /* Pods-una.debug.xcconfig */;
 			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = una/una.entitlements;
-				CURRENT_PROJECT_VERSION = 1507;
+				CURRENT_PROJECT_VERSION = 2001;
 				DEVELOPMENT_TEAM = 235MTP3MJ2;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = una/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(SDKROOT)/usr/lib/swift",
-				);
-				MARKETING_VERSION = 1.5.0;
+				MARKETING_VERSION = 2.0.0;
 				OTHER_LDFLAGS = (
 					"$(inherited)",
 					"-ObjC",
@@ -598,6 +629,9 @@
 				);
 				PRODUCT_BUNDLE_IDENTIFIER = com.una.ios;
 				PRODUCT_NAME = una;
+				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+				SUPPORTS_MACCATALYST = NO;
+				SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
 				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
 				SWIFT_VERSION = 5.0;
 				TARGETED_DEVICE_FAMILY = "1,2";
@@ -607,24 +641,21 @@
 		};
 		13B07F951A680F5B00A75B9A /* Release */ = {
 			isa = XCBuildConfiguration;
-			baseConfigurationReference = DD996727F702F1A92FDC9834 /* Pods-una.release.xcconfig */;
+			baseConfigurationReference = BC773EE98A50F87246B0D807 /* Pods-una.release.xcconfig */;
 			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = una/una.entitlements;
-				CURRENT_PROJECT_VERSION = 1507;
+				CURRENT_PROJECT_VERSION = 2001;
 				DEVELOPMENT_TEAM = 235MTP3MJ2;
-				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = una/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				LIBRARY_SEARCH_PATHS = (
-					"$(inherited)",
-					"$(SDKROOT)/usr/lib/swift",
-				);
-				MARKETING_VERSION = 1.5.0;
+				MARKETING_VERSION = 2.0.0;
 				OTHER_LDFLAGS = (
 					"$(inherited)",
 					"-ObjC",
@@ -632,6 +663,9 @@
 				);
 				PRODUCT_BUNDLE_IDENTIFIER = com.una.ios;
 				PRODUCT_NAME = una;
+				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+				SUPPORTS_MACCATALYST = NO;
+				SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
 				SWIFT_VERSION = 5.0;
 				TARGETED_DEVICE_FAMILY = "1,2";
 				VERSIONING_SYSTEM = "apple-generic";
@@ -761,6 +795,86 @@
 			};
 			name = Release;
 		};
+		FA791F9D28E141EE002EA334 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 178F2A700B58FE8F7C20720E /* Pods-OneSignalNotificationServiceExtension.debug.xcconfig */;
+			buildSettings = {
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+				CLANG_ENABLE_OBJC_WEAK = YES;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CODE_SIGN_ENTITLEMENTS = OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements;
+				CODE_SIGN_STYLE = Automatic;
+				CURRENT_PROJECT_VERSION = 1;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				DEVELOPMENT_TEAM = 235MTP3MJ2;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GENERATE_INFOPLIST_FILE = YES;
+				INFOPLIST_FILE = OneSignalNotificationServiceExtension/Info.plist;
+				INFOPLIST_KEY_CFBundleDisplayName = OneSignalNotificationServiceExtension;
+				INFOPLIST_KEY_NSHumanReadableCopyright = "";
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+					"@executable_path/../../Frameworks",
+				);
+				MARKETING_VERSION = 1.0;
+				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+				MTL_FAST_MATH = YES;
+				PRODUCT_BUNDLE_IDENTIFIER = com.una.ios.OneSignalNotificationServiceExtension;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SKIP_INSTALL = YES;
+				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+				SWIFT_EMIT_LOC_STRINGS = YES;
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				SWIFT_VERSION = 5.0;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
+		FA791F9E28E141EE002EA334 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 3BA1ED12EC11C8257506B795 /* Pods-OneSignalNotificationServiceExtension.release.xcconfig */;
+			buildSettings = {
+				CLANG_ANALYZER_NONNULL = YES;
+				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+				CLANG_ENABLE_OBJC_WEAK = YES;
+				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+				CODE_SIGN_ENTITLEMENTS = OneSignalNotificationServiceExtension/OneSignalNotificationServiceExtension.entitlements;
+				CODE_SIGN_STYLE = Automatic;
+				COPY_PHASE_STRIP = NO;
+				CURRENT_PROJECT_VERSION = 1;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				DEVELOPMENT_TEAM = 235MTP3MJ2;
+				GCC_C_LANGUAGE_STANDARD = gnu11;
+				GENERATE_INFOPLIST_FILE = YES;
+				INFOPLIST_FILE = OneSignalNotificationServiceExtension/Info.plist;
+				INFOPLIST_KEY_CFBundleDisplayName = OneSignalNotificationServiceExtension;
+				INFOPLIST_KEY_NSHumanReadableCopyright = "";
+				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+					"@executable_path/../../Frameworks",
+				);
+				MARKETING_VERSION = 1.0;
+				MTL_FAST_MATH = YES;
+				PRODUCT_BUNDLE_IDENTIFIER = com.una.ios.OneSignalNotificationServiceExtension;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SKIP_INSTALL = YES;
+				SWIFT_COMPILATION_MODE = wholemodule;
+				SWIFT_EMIT_LOC_STRINGS = YES;
+				SWIFT_OPTIMIZATION_LEVEL = "-O";
+				SWIFT_VERSION = 5.0;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Release;
+		};
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
@@ -791,6 +905,15 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
+		FA791F9C28E141EE002EA334 /* Build configuration list for PBXNativeTarget "OneSignalNotificationServiceExtension" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FA791F9D28E141EE002EA334 /* Debug */,
+				FA791F9E28E141EE002EA334 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
 /* End XCConfigurationList section */
 	};
 	rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;

+ 4 - 0
ios/una/AppDelegate.m

@@ -3,6 +3,7 @@
 #import <React/RCTBridge.h>
 #import <React/RCTBundleURLProvider.h>
 #import <React/RCTRootView.h>
+#import "RNSplashScreen.h"
 
 #ifdef FB_SONARKIT_ENABLED
 #import <FlipperKit/FlipperClient.h>
@@ -47,6 +48,9 @@ static void InitializeFlipper(UIApplication *application) {
   rootViewController.view = rootView;
   self.window.rootViewController = rootViewController;
   [self.window makeKeyAndVisible];
+  
+  [RNSplashScreen show];
+  
   return YES;
 }
 

+ 2 - 2
ios/una/Images.xcassets/Contents.json

@@ -1,6 +1,6 @@
 {
   "info" : {
-    "version" : 1,
-    "author" : "xcode"
+    "author" : "xcode",
+    "version" : 1
   }
 }

+ 6 - 24
ios/una/Info.plist

@@ -47,43 +47,25 @@
 	<string>$(PRODUCT_NAME) would like to record video to publish it on the site or use it for video/audio chat</string>
 	<key>NSPhotoLibraryAddUsageDescription</key>
 	<string>$(PRODUCT_NAME) would like to save photos to your photo gallery</string>
-	<key>OneSignal_disable_badge_clearing</key>
-	<false/>
-	<key>UIAppFonts</key>
+	<key>UIBackgroundModes</key>
 	<array>
-		<string>AntDesign.ttf</string>
-		<string>Entypo.ttf</string>
-		<string>EvilIcons.ttf</string>
-		<string>Feather.ttf</string>
-		<string>FontAwesome.ttf</string>
-		<string>FontAwesome5_Brands.ttf</string>
-		<string>FontAwesome5_Regular.ttf</string>
-		<string>FontAwesome5_Solid.ttf</string>
-		<string>Fontisto.ttf</string>
-		<string>Foundation.ttf</string>
-		<string>Ionicons.ttf</string>
-		<string>MaterialCommunityIcons.ttf</string>
-		<string>MaterialIcons.ttf</string>
-		<string>Octicons.ttf</string>
-		<string>Roboto_medium.ttf</string>
-		<string>Roboto.ttf</string>
-		<string>rubicon-icon-font.ttf</string>
-		<string>SimpleLineIcons.ttf</string>
-		<string>Zocial.ttf</string>
+		<string>remote-notification</string>
 	</array>
 	<key>UILaunchStoryboardName</key>
-	<string>SplashScreen</string>
+	<string>SplashScreen.storyboard</string>
 	<key>UIRequiredDeviceCapabilities</key>
 	<array>
 		<string>armv7</string>
 	</array>
 	<key>UIRequiresFullScreen</key>
 	<true/>
+	<key>UIStatusBarStyle</key>
+	<string></string>
 	<key>UISupportedInterfaceOrientations</key>
 	<array>
-		<string>UIInterfaceOrientationPortrait</string>
 		<string>UIInterfaceOrientationLandscapeLeft</string>
 		<string>UIInterfaceOrientationLandscapeRight</string>
+		<string>UIInterfaceOrientationPortrait</string>
 		<string>UIInterfaceOrientationPortraitUpsideDown</string>
 	</array>
 	<key>UIViewControllerBasedStatusBarAppearance</key>

+ 4 - 0
ios/una/una.entitlements

@@ -4,5 +4,9 @@
 <dict>
 	<key>aps-environment</key>
 	<string>development</string>
+	<key>com.apple.security.application-groups</key>
+	<array>
+		<string>group.com.una.ios.onesignal</string>
+	</array>
 </dict>
 </plist>

+ 10 - 28
metro.config.js

@@ -5,31 +5,13 @@
  * @format
  */
 
-// const blacklist = require('metro-config/src/defaults/blacklist');
-
-const { getDefaultConfig } = require("metro-config");
-
-module.exports = (async () => {
-  const {
-    resolver: { sourceExts, assetExts }
-  } = await getDefaultConfig();
-  return {
-    transformer: {
-      getTransformOptions: async () => ({
-        transform: {
-          experimentalImportSupport: false,
-          inlineRequires: false
-        }
-      }),
-      babelTransformerPath: require.resolve("react-native-svg-transformer")
-    },
-    resolver: {
-      assetExts: assetExts.filter(ext => ext !== "svg"),
-      sourceExts: [...sourceExts, "svg"],
-//    blacklistRE: blacklist([
-//      /ios\/Pods\/JitsiMeetSDK\/Frameworks\/JitsiMeet.framework\/assets\/node_modules\/react-native\/.*/,
-//    ]),
-    }
-  };
-})();
-
+module.exports = {
+  transformer: {
+    getTransformOptions: async () => ({
+      transform: {
+        experimentalImportSupport: false,
+        inlineRequires: true,
+      },
+    }),
+  },
+};

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 578 - 259
package-lock.json


+ 10 - 12
package.json

@@ -1,6 +1,6 @@
 {
-  "name": "UNA",
-  "version": "1.5.0",
+  "name": "una",
+  "version": "2.0.0",
   "private": true,
   "scripts": {
     "android": "react-native run-android",
@@ -10,19 +10,17 @@
     "lint": "eslint ."
   },
   "dependencies": {
-    "native-base": "^2.15.2",
+    "native-base": "3.4.0",
     "react": "17.0.1",
-    "react-native": "0.64.1",
-    "react-native-iap": "^6.0.6",
-    "react-native-jitsi-meet": "^2.1.1",
-    "react-native-onesignal": "^4.1.0",
-    "react-native-splash-screen": "^3.2.0",
-    "react-native-svg": "^12.1.1",
-    "react-native-svg-transformer": "^0.14.3",
-    "react-native-webview": "^11.6.2"
+    "react-native": "0.64.2",
+    "react-native-onesignal": "^4.4.1",
+    "react-native-safe-area-context": "^3.2.0",
+    "react-native-splash-screen": "^3.3.0",
+    "react-native-svg": "^13.2.0",
+    "react-native-webview": "^11.23.1"
   },
   "devDependencies": {
-    "@babel/core": "^7.14.3",
+    "@babel/core": "^7.12.9",
     "@babel/runtime": "^7.12.5",
     "@bam.tech/react-native-make": "^3.0.3",
     "@react-native-community/eslint-config": "^2.0.0",

+ 43 - 0
src/components/NativeBaseIcon.js

@@ -0,0 +1,43 @@
+import React from 'react';
+import {Icon} from 'native-base';
+import {G, Path} from 'react-native-svg';
+const NativeBaseIcon = () => {
+  return (
+    <Icon size="220px" viewBox="0 0 602.339 681.729">
+      <G
+        id="Group_403"
+        data-name="Group 403"
+        transform="translate(14575 1918.542)">
+        <Path
+          id="Path_1"
+          data-name="Path 1"
+          d="M488.722,0A45.161,45.161,0,0,1,527.83,22.576L675.676,278.584a45.162,45.162,0,0,1,0,45.171L527.83,579.763a45.162,45.162,0,0,1-39.108,22.576H193.008A45.162,45.162,0,0,1,153.9,579.763L6.053,323.755a45.162,45.162,0,0,1,0-45.171L153.9,22.576A45.162,45.162,0,0,1,193.008,0Z"
+          transform="translate(-13972.661 -1918.542) rotate(90)"
+          fill="#356290"
+        />
+        <Path
+          id="Path_252"
+          data-name="Path 252"
+          d="M401.1,0A60.816,60.816,0,0,1,453.77,30.405L567.2,226.844a60.816,60.816,0,0,1,0,60.82L453.77,484.1A60.816,60.816,0,0,1,401.1,514.509H174.241A60.816,60.816,0,0,1,121.575,484.1L8.149,287.665a60.816,60.816,0,0,1,0-60.82L121.575,30.405A60.816,60.816,0,0,1,174.241,0Z"
+          transform="translate(-14016.576 -1865.281) rotate(90)"
+          fill="#1784b2"
+        />
+        <Path
+          id="Path_251"
+          data-name="Path 251"
+          d="M345.81,0a36.573,36.573,0,0,1,31.674,18.288L480.566,196.856a36.573,36.573,0,0,1,0,36.569L377.484,411.993a36.573,36.573,0,0,1-31.674,18.288H139.655a36.572,36.572,0,0,1-31.674-18.288L4.9,233.425a36.573,36.573,0,0,1,0-36.569L107.981,18.288A36.573,36.573,0,0,1,139.655,0Z"
+          transform="translate(-14058.69 -1820.41) rotate(90)"
+          fill="#50bfc3"
+        />
+        <Path
+          id="_x3C__x2F__x3E_"
+          d="M187.066,335.455V297.993l-65.272-21.949,65.272-22.523V216.059L81,259.5v32.521Zm38.726,29.3L286.123,174H256.7l-60.33,190.759Zm72.052-29.3,106.066-43.783V259.267L297.844,216.059V254.44l59.3,23.328-59.3,19.421Z"
+          transform="translate(-14516.286 -1846.988)"
+          fill="#fff"
+        />
+      </G>
+    </Icon>
+  );
+};
+
+export default NativeBaseIcon;

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 654 - 928
yarn.lock


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů