Check for mobile app access.
This commit is contained in:
@@ -24,6 +24,27 @@
|
||||
<folder_node>
|
||||
<name>app</name>
|
||||
<children>
|
||||
<concept_node>
|
||||
<name>nomobileaccess</name>
|
||||
<definition_loaded>false</definition_loaded>
|
||||
<description></description>
|
||||
<comment></comment>
|
||||
<default_text></default_text>
|
||||
<translations>
|
||||
<translation>
|
||||
<language>en-US</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>es-MX</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
<translation>
|
||||
<language>fr-CA</language>
|
||||
<approved>false</approved>
|
||||
</translation>
|
||||
</translations>
|
||||
</concept_node>
|
||||
<concept_node>
|
||||
<name>title</name>
|
||||
<definition_loaded>false</definition_loaded>
|
||||
|
||||
@@ -25,7 +25,7 @@ import ScreenMediaBrowser from "../screen-media-browser/screen-media-browser.com
|
||||
import ScreenSettingsComponent from "../screen-settings/screen-settings.component";
|
||||
import ScreenSignIn from "../screen-sign-in/screen-sign-in.component";
|
||||
import ScreenSplash from "../screen-splash/screen-splash.component";
|
||||
|
||||
import moment from "moment";
|
||||
const JobStack = createStackNavigator();
|
||||
const MoreStack = createStackNavigator();
|
||||
const BottomTabs = createBottomTabNavigator();
|
||||
@@ -155,16 +155,27 @@ export function ScreenMainComponent({
|
||||
checkUserSession();
|
||||
}, [checkUserSession]);
|
||||
|
||||
const hasMobileAccess =
|
||||
bodyshop &&
|
||||
bodyshop.features &&
|
||||
(bodyshop.features.allAccess === true ||
|
||||
moment(bodyshop.features.mobile).isAfter(moment()));
|
||||
|
||||
console.log(
|
||||
"🚀 ~ file: screen-main.component.jsx ~ line 171 ~ hasMobileAccess",
|
||||
hasMobileAccess,
|
||||
bodyshop && bodyshop.features
|
||||
);
|
||||
return (
|
||||
<SafeAreaView style={{ flex: 1 }}>
|
||||
<NavigationContainer>
|
||||
{currentUser.authorized === null ? (
|
||||
<ScreenSplash />
|
||||
) : currentUser.authorized ? (
|
||||
bodyshop ? (
|
||||
bodyshop && hasMobileAccess ? (
|
||||
<BottomTabsNavigator />
|
||||
) : (
|
||||
<ScreenSplash />
|
||||
<ScreenSplash noAccess />
|
||||
)
|
||||
) : (
|
||||
<ScreenSignIn />
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import React from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { ActivityIndicator, Image, StyleSheet, View } from "react-native";
|
||||
import { Title } from "react-native-paper";
|
||||
import { Title, Subheading } from "react-native-paper";
|
||||
import Logo from "../../assets/logo192.png";
|
||||
|
||||
export default function ScreenSplash() {
|
||||
export default function ScreenSplash({ noAccess }) {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<View style={[localStyles.container]}>
|
||||
@@ -13,7 +13,15 @@ export default function ScreenSplash() {
|
||||
<Title>{t("app.title")}</Title>
|
||||
</View>
|
||||
|
||||
{noAccess ? (
|
||||
<View style={[localStyles.logoContainer]}>
|
||||
<Subheading style={{ textAlign: "center" }}>
|
||||
{t("app.nomobileaccess")}
|
||||
</Subheading>
|
||||
</View>
|
||||
) : (
|
||||
<ActivityIndicator color="dodgerblue" size="large" />
|
||||
)}
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -6,13 +6,10 @@ export const QUERY_BODYSHOP = gql`
|
||||
id
|
||||
jobsizelimit
|
||||
md_ro_statuses
|
||||
md_order_statuses
|
||||
|
||||
shopname
|
||||
messagingservicesid
|
||||
md_referral_sources
|
||||
md_messaging_presets
|
||||
md_parts_locations
|
||||
md_notes_presets
|
||||
|
||||
features
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
@@ -67,14 +67,13 @@ const link = split(
|
||||
// split based on operation type
|
||||
({ query }) => {
|
||||
const definition = getMainDefinition(query);
|
||||
// console.log(
|
||||
// "##Intercepted GQL Transaction : " +
|
||||
// definition.operation +
|
||||
// "|" +
|
||||
console.log(
|
||||
"##Intercepted GQL Transaction : " +
|
||||
definition.operation +
|
||||
"|" +
|
||||
// definition.name.value +
|
||||
// "##",
|
||||
// query
|
||||
// );
|
||||
"##"
|
||||
);
|
||||
return (
|
||||
definition.kind === "OperationDefinition" &&
|
||||
definition.operation === "subscription"
|
||||
@@ -133,6 +132,10 @@ export const client = new ApolloClient({
|
||||
defaultOptions: {
|
||||
watchQuery: {
|
||||
fetchPolicy: "network-only",
|
||||
nextFetchPolicy: "network-only",
|
||||
},
|
||||
query: {
|
||||
fetchPolicy: "network-only",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"translation": {
|
||||
"app": {
|
||||
"nomobileaccess": "Your shop does not currently have access to ImEX Mobile. ",
|
||||
"title": "ImEX Mobile"
|
||||
},
|
||||
"camera": {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"translation": {
|
||||
"app": {
|
||||
"nomobileaccess": "",
|
||||
"title": ""
|
||||
},
|
||||
"camera": {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"translation": {
|
||||
"app": {
|
||||
"nomobileaccess": "",
|
||||
"title": ""
|
||||
},
|
||||
"camera": {
|
||||
|
||||
Reference in New Issue
Block a user