From e6dcd4a47e4c855d652ca4ddbb616e464cba2888 Mon Sep 17 00:00:00 2001 From: Brandon Presley Date: Fri, 28 Oct 2022 18:36:47 +1300 Subject: [PATCH] Use hermes engine https://reactnative.dev/docs/hermes --- App.tsx | 2 +- BestList.tsx | 2 +- BestPage.tsx | 1 - Chart.tsx | 1 - ConfirmDialog.tsx | 1 - DrawerHeader.tsx | 1 - DrawerMenu.tsx | 2 +- EditPlan.tsx | 2 +- EditSet.tsx | 2 +- EditWorkout.tsx | 2 +- HomePage.tsx | 1 - MassiveFab.tsx | 6 ++---- MassiveInput.tsx | 6 +++--- MassiveSnack.tsx | 4 ++-- Page.tsx | 1 - PlanItem.tsx | 2 +- PlanList.tsx | 2 +- PlanPage.tsx | 1 - Routes.tsx | 1 - SetForm.tsx | 2 +- SetItem.tsx | 2 +- SetList.tsx | 2 +- SettingsPage.tsx | 2 +- StackHeader.tsx | 1 - StartPlan.tsx | 2 +- Switch.tsx | 2 +- ViewBest.tsx | 2 +- WorkoutItem.tsx | 2 +- WorkoutList.tsx | 2 +- WorkoutsPage.tsx | 1 - android/app/build.gradle | 4 ++-- android/app/proguard-rules.pro | 3 +++ 32 files changed, 29 insertions(+), 38 deletions(-) diff --git a/App.tsx b/App.tsx index 7e5ce15..b75bc2d 100644 --- a/App.tsx +++ b/App.tsx @@ -3,7 +3,7 @@ import { DefaultTheme as NavigationDefaultTheme, NavigationContainer, } from '@react-navigation/native'; -import React, {useEffect, useMemo, useState} from 'react'; +import {useEffect, useMemo, useState} from 'react'; import {useColorScheme} from 'react-native'; import { DarkTheme as PaperDarkTheme, diff --git a/BestList.tsx b/BestList.tsx index 6e982f3..ae1de94 100644 --- a/BestList.tsx +++ b/BestList.tsx @@ -3,7 +3,7 @@ import { useFocusEffect, useNavigation, } from '@react-navigation/native'; -import React, {useCallback, useEffect, useState} from 'react'; +import {useCallback, useEffect, useState} from 'react'; import {FlatList, Image} from 'react-native'; import {List} from 'react-native-paper'; import {getBestReps, getBestWeights} from './best.service'; diff --git a/BestPage.tsx b/BestPage.tsx index f3af6b1..520eff0 100644 --- a/BestPage.tsx +++ b/BestPage.tsx @@ -1,5 +1,4 @@ import {createStackNavigator} from '@react-navigation/stack'; -import React from 'react'; import BestList from './BestList'; import Set from './set'; import ViewBest from './ViewBest'; diff --git a/Chart.tsx b/Chart.tsx index 35db05f..a035658 100644 --- a/Chart.tsx +++ b/Chart.tsx @@ -1,5 +1,4 @@ import * as shape from 'd3-shape'; -import React from 'react'; import {View} from 'react-native'; import {Grid, LineChart, XAxis, YAxis} from 'react-native-svg-charts'; import {CombinedDarkTheme, CombinedDefaultTheme} from './App'; diff --git a/ConfirmDialog.tsx b/ConfirmDialog.tsx index adb08da..e316950 100644 --- a/ConfirmDialog.tsx +++ b/ConfirmDialog.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import {Button, Dialog, Portal, Text} from 'react-native-paper'; export default function ConfirmDialog({ diff --git a/DrawerHeader.tsx b/DrawerHeader.tsx index 34c90d3..d7f6351 100644 --- a/DrawerHeader.tsx +++ b/DrawerHeader.tsx @@ -1,6 +1,5 @@ import {DrawerNavigationProp} from '@react-navigation/drawer'; import {useNavigation} from '@react-navigation/native'; -import React from 'react'; import {Appbar, IconButton} from 'react-native-paper'; import {DrawerParamList} from './drawer-param-list'; import DrawerMenu from './DrawerMenu'; diff --git a/DrawerMenu.tsx b/DrawerMenu.tsx index 2c8734c..7cf021c 100644 --- a/DrawerMenu.tsx +++ b/DrawerMenu.tsx @@ -1,5 +1,5 @@ import {NavigationProp, useNavigation} from '@react-navigation/native'; -import React, {useCallback, useState} from 'react'; +import {useCallback, useState} from 'react'; import DocumentPicker from 'react-native-document-picker'; import {FileSystem} from 'react-native-file-access'; import {Divider, IconButton, Menu} from 'react-native-paper'; diff --git a/EditPlan.tsx b/EditPlan.tsx index 0e65214..0536d40 100644 --- a/EditPlan.tsx +++ b/EditPlan.tsx @@ -4,7 +4,7 @@ import { useNavigation, useRoute, } from '@react-navigation/native'; -import React, {useCallback, useEffect, useState} from 'react'; +import {useCallback, useEffect, useState} from 'react'; import {ScrollView, StyleSheet, View} from 'react-native'; import {Button, Text} from 'react-native-paper'; import {MARGIN, PADDING} from './constants'; diff --git a/EditSet.tsx b/EditSet.tsx index f330962..a346ddb 100644 --- a/EditSet.tsx +++ b/EditSet.tsx @@ -1,5 +1,5 @@ import {RouteProp, useNavigation, useRoute} from '@react-navigation/native'; -import React, {useCallback} from 'react'; +import {useCallback} from 'react'; import {NativeModules, View} from 'react-native'; import {PADDING} from './constants'; import {HomePageParams} from './home-page-params'; diff --git a/EditWorkout.tsx b/EditWorkout.tsx index e6a90c6..6a6f09d 100644 --- a/EditWorkout.tsx +++ b/EditWorkout.tsx @@ -1,5 +1,5 @@ import {RouteProp, useNavigation, useRoute} from '@react-navigation/native'; -import React, {useCallback, useRef, useState} from 'react'; +import {useCallback, useRef, useState} from 'react'; import {ScrollView, TextInput, View} from 'react-native'; import DocumentPicker from 'react-native-document-picker'; import {Button, Card, TouchableRipple} from 'react-native-paper'; diff --git a/HomePage.tsx b/HomePage.tsx index 61cc472..03d9d66 100644 --- a/HomePage.tsx +++ b/HomePage.tsx @@ -1,5 +1,4 @@ import {createStackNavigator} from '@react-navigation/stack'; -import React from 'react'; import EditSet from './EditSet'; import {HomePageParams} from './home-page-params'; import SetList from './SetList'; diff --git a/MassiveFab.tsx b/MassiveFab.tsx index ba82bfd..bf60392 100644 --- a/MassiveFab.tsx +++ b/MassiveFab.tsx @@ -1,11 +1,9 @@ -import React from 'react'; +import {ComponentProps} from 'react'; import {FAB} from 'react-native-paper'; import {useColor} from './color'; import {lightColors} from './colors'; -export default function MassiveFab( - props: Partial>, -) { +export default function MassiveFab(props: Partial>) { const {color} = useColor(); const fabColor = lightColors.map(lightColor => lightColor.hex).includes(color) ? 'black' diff --git a/MassiveInput.tsx b/MassiveInput.tsx index 0ee3f49..2c81648 100644 --- a/MassiveInput.tsx +++ b/MassiveInput.tsx @@ -1,12 +1,12 @@ -import React from 'react'; +import {ComponentProps, Ref} from 'react'; import {TextInput} from 'react-native-paper'; import {CombinedDefaultTheme} from './App'; import {MARGIN} from './constants'; import useDark from './use-dark'; export default function MassiveInput( - props: Partial> & { - innerRef?: React.Ref; + props: Partial> & { + innerRef?: Ref; }, ) { const dark = useDark(); diff --git a/MassiveSnack.tsx b/MassiveSnack.tsx index 38f75db..2f2313d 100644 --- a/MassiveSnack.tsx +++ b/MassiveSnack.tsx @@ -1,9 +1,9 @@ -import React, {useContext, useState} from 'react'; +import {createContext, useContext, useState} from 'react'; import {Snackbar} from 'react-native-paper'; import {CombinedDarkTheme, CombinedDefaultTheme} from './App'; import useDark from './use-dark'; -export const SnackbarContext = React.createContext<{ +export const SnackbarContext = createContext<{ toast: (value: string, timeout: number) => void; }>({toast: () => null}); diff --git a/Page.tsx b/Page.tsx index c945fc4..13cb08b 100644 --- a/Page.tsx +++ b/Page.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import {StyleSheet, View} from 'react-native'; import {Searchbar} from 'react-native-paper'; import {PADDING} from './constants'; diff --git a/PlanItem.tsx b/PlanItem.tsx index c86025b..1e15568 100644 --- a/PlanItem.tsx +++ b/PlanItem.tsx @@ -3,7 +3,7 @@ import { useFocusEffect, useNavigation, } from '@react-navigation/native'; -import React, {useCallback, useMemo, useState} from 'react'; +import {useCallback, useMemo, useState} from 'react'; import {GestureResponderEvent, Text} from 'react-native'; import {Divider, List, Menu} from 'react-native-paper'; import {getBestSet} from './best.service'; diff --git a/PlanList.tsx b/PlanList.tsx index af2dd85..8522cef 100644 --- a/PlanList.tsx +++ b/PlanList.tsx @@ -3,7 +3,7 @@ import { useFocusEffect, useNavigation, } from '@react-navigation/native'; -import React, {useCallback, useEffect, useState} from 'react'; +import {useCallback, useEffect, useState} from 'react'; import {FlatList} from 'react-native'; import {List} from 'react-native-paper'; import DrawerHeader from './DrawerHeader'; diff --git a/PlanPage.tsx b/PlanPage.tsx index 86d5e7f..980ca2a 100644 --- a/PlanPage.tsx +++ b/PlanPage.tsx @@ -1,5 +1,4 @@ import {createStackNavigator} from '@react-navigation/stack'; -import React from 'react'; import EditPlan from './EditPlan'; import {PlanPageParams} from './plan-page-params'; import PlanList from './PlanList'; diff --git a/Routes.tsx b/Routes.tsx index 7bad039..028cd97 100644 --- a/Routes.tsx +++ b/Routes.tsx @@ -1,5 +1,4 @@ import {createDrawerNavigator} from '@react-navigation/drawer'; -import React from 'react'; import {IconButton} from 'react-native-paper'; import BestPage from './BestPage'; import {DrawerParamList} from './drawer-param-list'; diff --git a/SetForm.tsx b/SetForm.tsx index f95ce1e..285e610 100644 --- a/SetForm.tsx +++ b/SetForm.tsx @@ -1,4 +1,4 @@ -import React, {useCallback, useRef, useState} from 'react'; +import {useCallback, useRef, useState} from 'react'; import {TextInput, View} from 'react-native'; import DocumentPicker from 'react-native-document-picker'; import {Button, Card, TouchableRipple} from 'react-native-paper'; diff --git a/SetItem.tsx b/SetItem.tsx index a566fc0..eaa3fc8 100644 --- a/SetItem.tsx +++ b/SetItem.tsx @@ -1,5 +1,5 @@ import {NavigationProp, useNavigation} from '@react-navigation/native'; -import React, {useCallback, useState} from 'react'; +import {useCallback, useState} from 'react'; import {GestureResponderEvent, Image} from 'react-native'; import {Divider, List, Menu, Text} from 'react-native-paper'; import {HomePageParams} from './home-page-params'; diff --git a/SetList.tsx b/SetList.tsx index dfde9a0..47bc02b 100644 --- a/SetList.tsx +++ b/SetList.tsx @@ -3,7 +3,7 @@ import { useFocusEffect, useNavigation, } from '@react-navigation/native'; -import React, {useCallback, useEffect, useState} from 'react'; +import {useCallback, useEffect, useState} from 'react'; import {FlatList} from 'react-native'; import {List} from 'react-native-paper'; import DrawerHeader from './DrawerHeader'; diff --git a/SettingsPage.tsx b/SettingsPage.tsx index 5dea2b9..8aa9e74 100644 --- a/SettingsPage.tsx +++ b/SettingsPage.tsx @@ -1,6 +1,6 @@ import {Picker} from '@react-native-picker/picker'; import {useFocusEffect} from '@react-navigation/native'; -import React, {useCallback, useEffect, useState} from 'react'; +import {useCallback, useEffect, useState} from 'react'; import {NativeModules, ScrollView} from 'react-native'; import DocumentPicker from 'react-native-document-picker'; import {Button} from 'react-native-paper'; diff --git a/StackHeader.tsx b/StackHeader.tsx index aa45a5d..b02ad6f 100644 --- a/StackHeader.tsx +++ b/StackHeader.tsx @@ -1,5 +1,4 @@ import {useNavigation} from '@react-navigation/native'; -import React from 'react'; import Share from 'react-native-share'; import {FileSystem} from 'react-native-file-access'; import {Appbar, IconButton} from 'react-native-paper'; diff --git a/StartPlan.tsx b/StartPlan.tsx index 4be2e9c..d74bb6e 100644 --- a/StartPlan.tsx +++ b/StartPlan.tsx @@ -1,5 +1,5 @@ import {RouteProp, useFocusEffect, useRoute} from '@react-navigation/native'; -import React, {useCallback, useMemo, useRef, useState} from 'react'; +import {useCallback, useMemo, useRef, useState} from 'react'; import {NativeModules, TextInput, View} from 'react-native'; import {FlatList} from 'react-native-gesture-handler'; import {Button, List, RadioButton} from 'react-native-paper'; diff --git a/Switch.tsx b/Switch.tsx index 7f940a4..4d5454d 100644 --- a/Switch.tsx +++ b/Switch.tsx @@ -1,4 +1,4 @@ -import React, {useMemo} from 'react'; +import {useMemo} from 'react'; import {Pressable} from 'react-native'; import {Switch as PaperSwitch, Text} from 'react-native-paper'; import {CombinedDarkTheme, CombinedDefaultTheme} from './App'; diff --git a/ViewBest.tsx b/ViewBest.tsx index 492e5f7..a9ca740 100644 --- a/ViewBest.tsx +++ b/ViewBest.tsx @@ -1,6 +1,6 @@ import {Picker} from '@react-native-picker/picker'; import {RouteProp, useRoute} from '@react-navigation/native'; -import React, {useEffect, useState} from 'react'; +import {useEffect, useState} from 'react'; import {View} from 'react-native'; import {getOneRepMax, getVolumes, getWeightsBy} from './best.service'; import {BestPageParams} from './BestPage'; diff --git a/WorkoutItem.tsx b/WorkoutItem.tsx index ad001e6..8dbdf84 100644 --- a/WorkoutItem.tsx +++ b/WorkoutItem.tsx @@ -1,5 +1,5 @@ import {NavigationProp, useNavigation} from '@react-navigation/native'; -import React, {useCallback, useMemo, useState} from 'react'; +import {useCallback, useMemo, useState} from 'react'; import {GestureResponderEvent, Image} from 'react-native'; import {List, Menu, Text} from 'react-native-paper'; import ConfirmDialog from './ConfirmDialog'; diff --git a/WorkoutList.tsx b/WorkoutList.tsx index 493439c..4f12fe3 100644 --- a/WorkoutList.tsx +++ b/WorkoutList.tsx @@ -3,7 +3,7 @@ import { useFocusEffect, useNavigation, } from '@react-navigation/native'; -import React, {useCallback, useEffect, useState} from 'react'; +import {useCallback, useEffect, useState} from 'react'; import {FlatList} from 'react-native'; import {List} from 'react-native-paper'; import DrawerHeader from './DrawerHeader'; diff --git a/WorkoutsPage.tsx b/WorkoutsPage.tsx index 06b132f..8b5268e 100644 --- a/WorkoutsPage.tsx +++ b/WorkoutsPage.tsx @@ -1,5 +1,4 @@ import {createStackNavigator} from '@react-navigation/stack'; -import React from 'react'; import EditWorkout from './EditWorkout'; import Set from './set'; import WorkoutList from './WorkoutList'; diff --git a/android/app/build.gradle b/android/app/build.gradle index 6191837..63798de 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -4,7 +4,7 @@ apply plugin: "kotlin-android" import com.android.build.OutputFile project.ext.react = [ - enableHermes: false, // clean and rebuild if changing + enableHermes: true, // clean and rebuild if changing ] project.ext.vectoricons = [ @@ -17,7 +17,7 @@ apply from: "../../node_modules/react-native-vector-icons/fonts.gradle" def enableSeparateBuildPerCPUArchitecture = true def enableProguardInReleaseBuilds = true def jscFlavor = 'org.webkit:android-jsc:+' -def enableHermes = project.ext.react.get("enableHermes", false); +def enableHermes = project.ext.react.get("enableHermes", true); def reactNativeArchitectures() { def value = project.getProperties().get("reactNativeArchitectures") diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index b691e04..a249924 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -44,3 +44,6 @@ -dontwarn java.nio.file.* -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement -dontwarn okio.** + +-keep class com.facebook.hermes.unicode.** { *; } +-keep class com.facebook.jni.** { *; }