diff --git a/Ejectable/App.tsx b/Ejectable/App.tsx
index 32e339e2..3e1003e9 100644
--- a/Ejectable/App.tsx
+++ b/Ejectable/App.tsx
@@ -4,12 +4,14 @@ import React, { useState, useEffect } from 'react';
import { Text } from 'react-native';
import * as Location from 'expo-location';
import { SafeAreaProvider } from 'react-native-safe-area-context';
+
import useCachedResources from './hooks/useCachedResources';
import useColorScheme from './hooks/useColorScheme';
import Navigation from './navigation';
-import { GT2 } from './GT2';
+
export var debug:boolean = false;
-export var expoGeoState:any;
+export var lastLoc:any;
+ var expoGeoState:any;
export default function App() {
const isLoadingComplete = useCachedResources();
@@ -36,6 +38,7 @@ export default function App() {
if (errorMsg) {
expoGeoState = errorMsg;
} else if (location) {
+ lastLoc = location;
expoGeoState = JSON.stringify(location);
}
diff --git a/Ejectable/GT2.tsx b/Ejectable/GT2.tsx
index ce346cde..9717edbb 100644
--- a/Ejectable/GT2.tsx
+++ b/Ejectable/GT2.tsx
@@ -14,6 +14,9 @@ const styles = StyleSheet.create({
fontWeight: 'bold',
}});
+var lastLoc:any = null;
+const heartbeat:number = 500;
+
class Chronometer {
public display:string = "";
@@ -25,12 +28,12 @@ class Chronometer {
hours = this.clock < 3600 ? 0 : (this.clock / 3600);
minutes = this.clock < 60 ? 0 : (this.clock - (hours * 3600)) / 60;
seconds = this.clock % 60;
- this.display = hours + ":" + minutes + ":" + seconds;
+ this.display = hours + ":" + minutes + ":" + seconds;
}
public start() { this.clock = 0;
- this.intervalID = setInterval(this.tick, 1000);
+ this.intervalID = setInterval(this.tick, heartbeat);
}
- public resume() { this.intervalID = setInterval(this.tick, 1000); }
+ public resume() { this.intervalID = setInterval(this.tick, heartbeat); }
public stop() { clearInterval(this.intervalID); }
}
@@ -52,6 +55,7 @@ export class GT2 {
public elapsed:number = 0.0;
segments:number = 1;
+
public reset() {
this.startPoint = new Coordinate(0,0);
@@ -94,28 +98,16 @@ export class GT2 {
}
- public TripDisplay() {
-
- var tripPanel:string = "";
-
- if (!thisTrip.inProgress)
- return (
-
-
- {' No trip started yet.\n'}
-
- );
- else
- return (
-
-
- {'Elapsed - '}{this.clock.display}{'\n'}
- {'Geo: '}{'lat: '}{this.loc.mLatitude}{' long: '}{this.loc.mLatitude}{'\n'}
- {'Vector: '}{'distance: '}{this.distance}{' velocity: '}{this.v}{'\n'}
-
- );
+ public tripDisplay() {
+
+ return(
+
+
+ {' No trip started yet.\n'}
+
+ );
}
}
-
-export var thisTrip:GT2 = new GT2();
+
+export var ThisTrip:GT2 = new GT2();
diff --git a/Ejectable/components/ScreenInfo.tsx b/Ejectable/components/ScreenInfo.tsx
index f8b2bf9f..6c768342 100644
--- a/Ejectable/components/ScreenInfo.tsx
+++ b/Ejectable/components/ScreenInfo.tsx
@@ -13,7 +13,7 @@ export default function ScreenInfo() {
style={styles.settingsText}
lightColor="rgba(0,0,0,0.8)"
darkColor="rgba(255,255,255,0.8)">
- Switch dark km/ light mi, select fuel used, or manually set CO2 per distance
+ Switch dark km/ light mi, select fuel used, or specify CO2 g per distance
);
diff --git a/Ejectable/hooks/useCachedResources.ts b/Ejectable/hooks/useCachedResources.ts
index 57541869..c22248d7 100644
--- a/Ejectable/hooks/useCachedResources.ts
+++ b/Ejectable/hooks/useCachedResources.ts
@@ -1,4 +1,4 @@
-import { Ionicons } from '@expo/vector-icons';
+import { FontAwesome } from '@expo/vector-icons';
import * as Font from 'expo-font';
import * as HomeScreen from 'expo-splash-screen';
import * as React from 'react';
@@ -14,7 +14,7 @@ export default function useCachedResources() {
// Load fonts
await Font.loadAsync({
- ...Ionicons.font,
+ ...FontAwesome.font,
'space-mono': require('../assets/fonts/SpaceMono-Regular.ttf'),
});
} catch (e) {
diff --git a/Ejectable/navigation/LinkingConfiguration.ts b/Ejectable/navigation/LinkingConfiguration.ts
index 22b649bf..43bf54cf 100644
--- a/Ejectable/navigation/LinkingConfiguration.ts
+++ b/Ejectable/navigation/LinkingConfiguration.ts
@@ -4,9 +4,12 @@
* https://reactnavigation.org/docs/configuring-links
*/
+import { LinkingOptions } from '@react-navigation/native';
import * as Linking from 'expo-linking';
-export default {
+import { RootStackParamList } from '../types';
+
+const linking: LinkingOptions = {
prefixes: [Linking.makeUrl('/')],
config: {
screens: {
@@ -29,7 +32,10 @@ export default {
},
},
},
+ Modal: 'modal',
NotFound: '*',
},
},
};
+
+export default linking;
diff --git a/Ejectable/navigation/index.tsx b/Ejectable/navigation/index.tsx
index f91103aa..b591fdfa 100644
--- a/Ejectable/navigation/index.tsx
+++ b/Ejectable/navigation/index.tsx
@@ -1,16 +1,23 @@
/**
- * If you are not familiar with React Navigation, check out the "Fundamentals" guide:
+ * If you are not familiar with React Navigation, refer to the "Fundamentals" guide:
* https://reactnavigation.org/docs/getting-started
*
*/
+import { FontAwesome } from '@expo/vector-icons';
+import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import { NavigationContainer, DefaultTheme, DarkTheme } from '@react-navigation/native';
-import { createStackNavigator } from '@react-navigation/stack';
+import { createNativeStackNavigator } from '@react-navigation/native-stack';
import * as React from 'react';
-import { ColorSchemeName } from 'react-native';
+import { ColorSchemeName, Pressable } from 'react-native';
+import Colors from '../constants/Colors';
+import useColorScheme from '../hooks/useColorScheme';
+import ModalScreen from '../screens/ModalScreen';
import NotFoundScreen from '../screens/NotFoundScreen';
-import { RootStackParamList } from '../types';
-import BottomTabNavigator from './BottomTabNavigator';
+import TripScreen from '../screens/TripScreen';
+import HomeScreen from '../screens/HomeScreen';
+import SettingsScreen from '../screens/SettingsScreen';
+import { RootStackParamList, RootTabParamList, RootTabScreenProps } from '../types';
import LinkingConfiguration from './LinkingConfiguration';
export default function Navigation({ colorScheme }: { colorScheme: ColorSchemeName }) {
@@ -23,15 +30,86 @@ export default function Navigation({ colorScheme }: { colorScheme: ColorSchemeNa
);
}
-// A root stack navigator is often used for displaying modals on top of all other content
-// Read more here: https://reactnavigation.org/docs/modal
-const Stack = createStackNavigator();
+/**
+ * A root stack navigator is often used for displaying modals on top of all other content.
+ * https://reactnavigation.org/docs/modal
+ */
+const Stack = createNativeStackNavigator();
function RootNavigator() {
return (
-
-
+
+
+
+
);
}
+
+/**
+ * A bottom tab navigator displays tab buttons on the bottom of the display to switch screens.
+ * https://reactnavigation.org/docs/bottom-tab-navigator
+ */
+const BottomTab = createBottomTabNavigator();
+
+function BottomTabNavigator() {
+ const colorScheme = useColorScheme();
+
+ return (
+
+ ) => ({
+ title: 'Home',
+ tabBarIcon: ({ color }) => ,
+ headerRight: () => (
+ navigation.navigate('Modal')}
+ style={({ pressed }) => ({
+ opacity: pressed ? 0.5 : 1,
+ })}>
+
+
+ ),
+ })}
+ />
+ ,
+ }}
+ />
+ ,
+ }}
+ />
+
+ );
+}
+
+/**
+ * You can explore the built-in icon families and icons on the web at https://icons.expo.fyi/
+ */
+function TabBarIcon(props: {
+ name: React.ComponentProps['name'];
+ color: string;
+}) {
+ return ;
+}
diff --git a/Ejectable/package-lock.json b/Ejectable/package-lock.json
index c607366f..a5271756 100644
--- a/Ejectable/package-lock.json
+++ b/Ejectable/package-lock.json
@@ -1256,12 +1256,12 @@
}
},
"@expo/config": {
- "version": "5.0.7",
- "resolved": "https://registry.npmjs.org/@expo/config/-/config-5.0.7.tgz",
- "integrity": "sha512-7Wzao9uALHmRSf59FMsHk1vxW4m4alDCJmfo+enXnl5o6UYiCDYfjNXctMwnW+fBM3opta4FbmmPGIftfXOesw==",
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/@expo/config/-/config-5.0.8.tgz",
+ "integrity": "sha512-chxcjQh4H/suzvYi+p30VnGXSHbsiVsGFwEYIZbOw4ByjrCnzeD644KolbpeQ2/oWK3atci01Qcxc1TADSixHQ==",
"requires": {
"@babel/code-frame": "~7.10.4",
- "@expo/config-plugins": "3.0.7",
+ "@expo/config-plugins": "3.0.8",
"@expo/config-types": "^42.0.0",
"@expo/json-file": "8.2.33",
"getenv": "^1.0.0",
@@ -1274,9 +1274,9 @@
}
},
"@expo/config-plugins": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-3.0.7.tgz",
- "integrity": "sha512-7YOoFtxB6XqDil+OlGXi7iredKHxXVFCAOIVfFyEDzO3oo0gBmWGmUnHgrPDvpMj0q+adCCh5BL8OcvGfc9ITQ==",
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-3.0.8.tgz",
+ "integrity": "sha512-reNYaYklOIq8QUY5ua1ubSRhVgY7hllvjingo22HHSaGhX4UvFFKDGYrjBdjcutHD6jw/eYLa8yJS74o1/rqkg==",
"requires": {
"@expo/config-types": "^42.0.0",
"@expo/json-file": "8.2.33",
@@ -1366,11 +1366,11 @@
}
},
"@expo/metro-config": {
- "version": "0.1.82",
- "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.1.82.tgz",
- "integrity": "sha512-rgx0ykWFvu+7jXDSe/cJB0fpIKqJX4X2k+azBIS9KmVLl5/ceKuCr6Abjy70HZTAXX/SQ7fS0C+FhzIX2Upgrg==",
+ "version": "0.1.83",
+ "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.1.83.tgz",
+ "integrity": "sha512-nbmHRzAjnUmUoQjbVdTh8Xq1AXABmwqDi77otD+MxxfVmppMYLKYfMteZnrl75tmWkQY4JfVLD4DfKA3K+bKGA==",
"requires": {
- "@expo/config": "5.0.7",
+ "@expo/config": "5.0.8",
"chalk": "^4.1.0",
"getenv": "^1.0.0",
"metro-react-native-babel-transformer": "^0.59.0"
@@ -1387,12 +1387,12 @@
}
},
"@expo/prebuild-config": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-2.0.7.tgz",
- "integrity": "sha512-EMgo4ywR9hk+I90XEwtl/UHWOlw8GE01BQtrLWQbIR0pr+bvDOYINfe8PzA21oODPGUkbMvp5Z8E79VZBqqjfg==",
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-2.0.8.tgz",
+ "integrity": "sha512-mPL7rsZkybohTskB3SdepZx27LM94No3cmS4DLPFxWbtv4gJn7RL+e4eWmIkj2vOGuDnGRwiui7Hh7SFVvRsrg==",
"requires": {
- "@expo/config": "5.0.7",
- "@expo/config-plugins": "3.0.7",
+ "@expo/config": "5.0.8",
+ "@expo/config-plugins": "3.0.8",
"@expo/config-types": "^42.0.0",
"@expo/image-utils": "0.3.16",
"@expo/json-file": "8.2.33",
@@ -3692,57 +3692,68 @@
"resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-4.10.1.tgz",
"integrity": "sha512-ael2f1onoPF3vF7YqHGWy7NnafzGu+yp88BbFbP0ydoCP2xGSUzmZVw0zakPTC040Id+JQ9WeFczujMkDy6jYQ=="
},
- "@react-native-community/masked-view": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/@react-native-community/masked-view/-/masked-view-0.1.10.tgz",
- "integrity": "sha512-rk4sWFsmtOw8oyx8SD3KSvawwaK7gRBSEIy2TAwURyGt+3TizssXP1r8nx3zY+R7v2vYYHXZ+k2/GULAT/bcaQ=="
- },
"@react-navigation/bottom-tabs": {
- "version": "5.11.2",
- "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-5.11.2.tgz",
- "integrity": "sha512-7+hH00N9Ze74VcX8uYWVyXFXZ0Fwid+lG+SSLtmnJjk1Y6oIQpQ17EPqKO0UZlKKjhsvMlAnL5fdgFtoqnSjcA==",
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-6.0.5.tgz",
+ "integrity": "sha512-GytjJUzacHhe3C24HFrPl881Donrw2m+3JBNqMJALxMRjSA8yY72+l16bZR9YFsrywSHVSbjxIfzqtGb8rIVJg==",
"requires": {
+ "@react-navigation/elements": "^1.1.0",
"color": "^3.1.3",
- "react-native-iphone-x-helper": "^1.3.0"
+ "warn-once": "^0.1.0"
}
},
"@react-navigation/core": {
- "version": "5.16.0",
- "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-5.16.0.tgz",
- "integrity": "sha512-dy/sfO2Tl41r3vB2uUXTh6d9HY7Q2i43CxfqsU4fnGw5QRmp+7LaMidhGYOoH1wJ50IMWoBC2TdAr0x+5iluHg==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.0.1.tgz",
+ "integrity": "sha512-mVdvBDYdz8uzLQHokmVdX/xC4rS7NIkD1FN/yaGdovVzYApAhM+UGd3w1zskjyCSyXaVHHOwV59ZGVew+84xfQ==",
"requires": {
- "@react-navigation/routers": "^5.7.4",
+ "@react-navigation/routers": "^6.0.1",
"escape-string-regexp": "^4.0.0",
- "nanoid": "^3.1.15",
- "query-string": "^6.13.6",
+ "nanoid": "^3.1.23",
+ "query-string": "^7.0.0",
"react-is": "^16.13.0"
}
},
+ "@react-navigation/elements": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.1.0.tgz",
+ "integrity": "sha512-jZncciZPGuoP6B6f+Wpf6MYSSYy86B2HJDbFTCtT5xZV0w6V9GgCeqvSTOEAxifZrmKl8uDxsr0GrIxgQE8NxA=="
+ },
"@react-navigation/native": {
- "version": "5.8.10",
- "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-5.8.10.tgz",
- "integrity": "sha512-OUgD1o+y7PwmhRIRqQxN0SQvVU/SHic/ek/qMvBZX8nu5/WlBNxmNRMHVxONgHlG3AQZh27NUs9ynntL7ek1zQ==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.0.2.tgz",
+ "integrity": "sha512-HDqEwgvQ4Cu16vz8jQ55lfyNK9CGbECI1wM9cPOcUa+gkOQEDZ/95VFfFjGGflXZs3ybPvGXlMC4ZAyh1CcO6w==",
"requires": {
- "@react-navigation/core": "^5.14.4",
+ "@react-navigation/core": "^6.0.1",
"escape-string-regexp": "^4.0.0",
- "nanoid": "^3.1.15"
+ "nanoid": "^3.1.23"
+ }
+ },
+ "@react-navigation/native-stack": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-6.1.0.tgz",
+ "integrity": "sha512-ta8JQ9n6e7pxrXJ9/MYH57g0xhlV8rzGvQtni6KvBdWqqk0M5QDqIXaUkzXp2wvLMZp7LQmnD4FI/TGG2mQOKA==",
+ "requires": {
+ "@react-navigation/elements": "^1.1.0",
+ "warn-once": "^0.1.0"
}
},
"@react-navigation/routers": {
- "version": "5.7.4",
- "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-5.7.4.tgz",
- "integrity": "sha512-0N202XAqsU/FlE53Nmh6GHyMtGm7g6TeC93mrFAFJOqGRKznT0/ail+cYlU6tNcPA9AHzZu1Modw1eoDINSliQ==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.0.1.tgz",
+ "integrity": "sha512-5ctB49rmtTRQuTSBVgqMsEzBUjPP2ByUzBjNivA7jmvk+PDCl4oZsiR8KAm/twhxe215GYThfi2vUWXKAg6EEQ==",
"requires": {
- "nanoid": "^3.1.15"
+ "nanoid": "^3.1.23"
}
},
"@react-navigation/stack": {
- "version": "5.12.8",
- "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-5.12.8.tgz",
- "integrity": "sha512-wUJFbU0v606RBXOUxHToCXJNmiwxtFYhN2TFvjxCZ3PJU+OWWx8HTmn99pT3rVH4Ax2cfO5BDUy9v+r74ZrIWw==",
+ "version": "6.0.7",
+ "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-6.0.7.tgz",
+ "integrity": "sha512-hxwhRZbn6zD2rInhItBeHTCPYzmurz+/8/MhtRevBEdLG0+61dik8Y+evg/mu6AsOU0WrDakTsLcHdf/9zkXzw==",
"requires": {
+ "@react-navigation/elements": "^1.1.0",
"color": "^3.1.3",
- "react-native-iphone-x-helper": "^1.3.0"
+ "warn-once": "^0.1.0"
}
},
"@sinonjs/commons": {
@@ -3831,9 +3842,9 @@
}
},
"@types/node": {
- "version": "16.6.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.6.1.tgz",
- "integrity": "sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw=="
+ "version": "16.7.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.1.tgz",
+ "integrity": "sha512-ncRdc45SoYJ2H4eWU9ReDfp3vtFqDYhjOsKlFFUDEn8V1Bgr2RjYal8YT5byfadWIRluhPFU6JiDOl0H6Sl87A=="
},
"@types/normalize-package-data": {
"version": "2.4.1",
@@ -4692,15 +4703,15 @@
}
},
"browserslist": {
- "version": "4.16.7",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz",
- "integrity": "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==",
+ "version": "4.16.8",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.8.tgz",
+ "integrity": "sha512-sc2m9ohR/49sWEbPj14ZSSZqp+kbi16aLao42Hmn3Z8FpjuMaq2xCA2l4zl9ITfyzvnvyE0hcg62YkIGKxgaNQ==",
"requires": {
- "caniuse-lite": "^1.0.30001248",
- "colorette": "^1.2.2",
- "electron-to-chromium": "^1.3.793",
+ "caniuse-lite": "^1.0.30001251",
+ "colorette": "^1.3.0",
+ "electron-to-chromium": "^1.3.811",
"escalade": "^3.1.1",
- "node-releases": "^1.1.73"
+ "node-releases": "^1.1.75"
}
},
"bser": {
@@ -5162,9 +5173,9 @@
"integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
},
"core-js-compat": {
- "version": "3.16.1",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.16.1.tgz",
- "integrity": "sha512-NHXQXvRbd4nxp9TEmooTJLUf94ySUG6+DSsscBpTftN1lQLQ4LjnWvc7AoIo4UjDsFF3hB8Uh5LLCRRdaiT5MQ==",
+ "version": "3.16.2",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.16.2.tgz",
+ "integrity": "sha512-4lUshXtBXsdmp8cDWh6KKiHUg40AjiuPD3bOWkNVsr1xkAhpUqCjaZ8lB1bKx9Gb5fXcbRbFJ4f4qpRIRTuJqQ==",
"requires": {
"browserslist": "^4.16.7",
"semver": "7.0.0"
@@ -5458,9 +5469,9 @@
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"electron-to-chromium": {
- "version": "1.3.806",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.806.tgz",
- "integrity": "sha512-AH/otJLAAecgyrYp0XK1DPiGVWcOgwPeJBOLeuFQ5l//vhQhwC9u6d+GijClqJAmsHG4XDue81ndSQPohUu0xA=="
+ "version": "1.3.814",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.814.tgz",
+ "integrity": "sha512-0mH03cyjh6OzMlmjauGg0TLd87ErIJqWiYxMcOLKf5w6p0YEOl7DJAj7BDlXEFmCguY5CQaKVOiMjAMODO2XDw=="
},
"emoji-regex": {
"version": "8.0.0",
@@ -6291,9 +6302,9 @@
"dev": true
},
"fastq": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz",
- "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==",
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz",
+ "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==",
"requires": {
"reusify": "^1.0.4"
}
@@ -7073,9 +7084,9 @@
}
},
"is-core-module": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz",
- "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==",
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz",
+ "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==",
"requires": {
"has": "^1.0.3"
}
@@ -12217,9 +12228,9 @@
}
},
"node-releases": {
- "version": "1.1.74",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.74.tgz",
- "integrity": "sha512-caJBVempXZPepZoZAPCWRTNxYQ+xtG/KAi4ozTA5A+nJ7IU+kLQCbqaUjb5Rwy14M9upBWiQ4NutcmW04LJSRw=="
+ "version": "1.1.75",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz",
+ "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw=="
},
"node-stream-zip": {
"version": "1.14.0",
@@ -12970,9 +12981,9 @@
}
},
"query-string": {
- "version": "6.14.1",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz",
- "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.0.1.tgz",
+ "integrity": "sha512-uIw3iRvHnk9to1blJCG3BTc+Ro56CBowJXKmNNAm3RulvPBzWLRqKSiiDk+IplJhsydwtuNMHi8UGQFcCLVfkA==",
"requires": {
"decode-uri-component": "^0.2.0",
"filter-obj": "^1.1.0",
@@ -13384,11 +13395,6 @@
}
}
},
- "react-native-iphone-x-helper": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz",
- "integrity": "sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg=="
- },
"react-native-reanimated": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-2.2.0.tgz",
diff --git a/Ejectable/package.json b/Ejectable/package.json
index 7e7e85f3..45d2359c 100644
--- a/Ejectable/package.json
+++ b/Ejectable/package.json
@@ -13,10 +13,10 @@
},
"dependencies": {
"@expo/vector-icons": "^12.0.0",
- "@react-native-community/masked-view": "0.1.10",
- "@react-navigation/bottom-tabs": "5.11.2",
- "@react-navigation/native": "~5.8.10",
- "@react-navigation/stack": "~5.12.8",
+ "@react-navigation/bottom-tabs": "^6.0.5",
+ "@react-navigation/native": "^6.0.2",
+ "@react-navigation/native-stack": "^6.1.0",
+ "@react-navigation/stack": "^6.0.7",
"expo": "~42.0.1",
"expo-asset": "~8.3.2",
"expo-constants": "~11.0.1",
diff --git a/Ejectable/screens/NotFoundScreen.tsx b/Ejectable/screens/NotFoundScreen.tsx
index 31d196a1..bf75687e 100644
--- a/Ejectable/screens/NotFoundScreen.tsx
+++ b/Ejectable/screens/NotFoundScreen.tsx
@@ -1,12 +1,9 @@
-import { StackScreenProps } from '@react-navigation/stack';
import * as React from 'react';
import { StyleSheet, Text, TouchableOpacity, View } from 'react-native';
-import { RootStackParamList } from '../types';
+import { RootStackScreenProps } from '../types';
-export default function NotFoundScreen({
- navigation,
-}: StackScreenProps) {
+export default function NotFoundScreen({ navigation }: RootStackScreenProps<'NotFound'>) {
return (
This screen doesn't exist.
diff --git a/Ejectable/screens/SettingsScreen.tsx b/Ejectable/screens/SettingsScreen.tsx
index 6c4b6329..2b8d4854 100644
--- a/Ejectable/screens/SettingsScreen.tsx
+++ b/Ejectable/screens/SettingsScreen.tsx
@@ -42,7 +42,7 @@ export default function SettingsScreen() {
returnKeyType={'done'}
onChangeText={onChangeNumber}
value={number}
- placeholder="0.67"
+ placeholder="250"
keyboardType="numeric"
/>
diff --git a/Ejectable/screens/TripScreen.tsx b/Ejectable/screens/TripScreen.tsx
index 97e463b8..f9aed419 100644
--- a/Ejectable/screens/TripScreen.tsx
+++ b/Ejectable/screens/TripScreen.tsx
@@ -2,7 +2,7 @@ import * as React from 'react';
import { Button, StyleSheet, Alert } from 'react-native';
import { Text, View } from '../components/Themed';
import { ScreenInfo2 } from '../components/ScreenInfo';
-import { GT2, thisTrip } from '../GT2';
+import { ThisTrip } from '../GT2';
const styles = StyleSheet.create({
container: {
@@ -29,21 +29,21 @@ const styles = StyleSheet.create({
function startTrip() {
- thisTrip.start();
+ ThisTrip.start();
Alert.alert('Trip Started');
}
function pauseTrip() {
- thisTrip.pause();
+ ThisTrip.pause();
Alert.alert('Trip Paused');
}
function endTrip() {
- thisTrip.end();
+ ThisTrip.end();
Alert.alert('Trip Ended');
}
@@ -69,7 +69,7 @@ export default function TripScreen() {
onPress={() => endTrip() }
/>
- < thisTrip.TripDisplay />
+ < ThisTrip.tripDisplay />
);
diff --git a/Ejectable/tsconfig.json b/Ejectable/tsconfig.json
index 92451b4d..b98a13ee 100644
--- a/Ejectable/tsconfig.json
+++ b/Ejectable/tsconfig.json
@@ -1,6 +1,6 @@
-{
- "extends": "expo/tsconfig.base",
+{
+ "extends": "expo/tsconfig.base",
"compilerOptions": {
"strict": true
}
-}
+}
diff --git a/Ejectable/types.tsx b/Ejectable/types.tsx
index 7aab0f62..b01b3ece 100644
--- a/Ejectable/types.tsx
+++ b/Ejectable/types.tsx
@@ -3,25 +3,34 @@
* https://reactnavigation.org/docs/typescript/
*/
+import { BottomTabScreenProps } from '@react-navigation/bottom-tabs';
+import { CompositeScreenProps, NavigatorScreenParams } from '@react-navigation/native';
+import { NativeStackScreenProps } from '@react-navigation/native-stack';
+
+declare global {
+ namespace ReactNavigation {
+ interface RootParamList extends RootStackParamList {}
+ }
+}
+
export type RootStackParamList = {
- Root: undefined;
+ Root: NavigatorScreenParams | undefined;
+ Modal: undefined;
NotFound: undefined;
};
-export type BottomTabParamList = {
+export type RootStackScreenProps = NativeStackScreenProps<
+ RootStackParamList,
+ Screen
+>;
+
+export type RootTabParamList = {
Home: undefined;
- Trip: undefined;
Settings: undefined;
+ Trip: undefined;
};
-export type TripParamList = {
- TripScreen: undefined;
-};
-
-export type SettingsParamList = {
- SettingsScreen: undefined;
-};
-
-export type HomeParamList = {
- HomeScreen: undefined;
-};
+export type RootTabScreenProps = CompositeScreenProps<
+ BottomTabScreenProps,
+ NativeStackScreenProps
+>;