expo-dev-menu 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/android/build.gradle +2 -2
- package/android/src/debug/java/expo/modules/devmenu/DevMenuManager.kt +0 -5
- package/android/src/main/java/expo/modules/devmenu/DevMenuActivity.kt +0 -12
- package/android/src/main/java/expo/modules/devmenu/modules/DevMenuInternalModule.kt +0 -15
- package/android/src/main/java/expo/modules/devmenu/modules/DevMenuModule.kt +0 -37
- package/android/src/release/java/expo/modules/devmenu/DevMenuManager.kt +0 -4
- package/app/components/BottomSheet.tsx +11 -6
- package/app/components/Main.tsx +1 -0
- package/app/hooks/useBottomSheet.tsx +4 -1
- package/assets/EXDevMenuApp.android.js +10 -10
- package/assets/EXDevMenuApp.ios.js +10 -10
- package/build/DevMenu.d.ts +0 -2
- package/build/DevMenu.d.ts.map +1 -1
- package/build/DevMenu.js +0 -6
- package/build/DevMenu.js.map +1 -1
- package/build/ExpoDevMenu.types.d.ts +0 -2
- package/build/ExpoDevMenu.types.d.ts.map +1 -1
- package/build/ExpoDevMenu.types.js.map +1 -1
- package/build/ExpoDevMenu.web.d.ts.map +1 -1
- package/build/ExpoDevMenu.web.js +0 -6
- package/build/ExpoDevMenu.web.js.map +1 -1
- package/ios/DevMenuManager.swift +1 -6
- package/ios/DevMenuViewController.swift +1 -13
- package/ios/Modules/DevMenuModule.m +0 -6
- package/ios/Modules/DevMenuModule.swift +0 -15
- package/package.json +4 -4
- package/src/DevMenu.ts +0 -8
- package/src/ExpoDevMenu.types.ts +0 -2
- package/src/ExpoDevMenu.web.ts +0 -6
- package/android/src/main/java/expo/modules/devmenu/api/DevMenuExpoApiClient.kt +0 -144
- package/android/src/main/java/expo/modules/devmenu/constants/DevMenuExpoApiConstants.kt +0 -10
- package/android/src/main/java/expo/modules/devmenu/modules/internals/DevMenuInternalSessionManagerModule.kt +0 -86
- package/ios/DevMenuExpoApiClient.swift +0 -148
- package/ios/Tests/DevMenuExpoApiClientTests.swift +0 -229
- package/vendored/react-native-reanimated/ios/DevMenuRNGestureHandlerStateManager.h +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,16 @@
|
|
|
10
10
|
|
|
11
11
|
### 💡 Others
|
|
12
12
|
|
|
13
|
+
## 1.2.0 — 2022-08-11
|
|
14
|
+
|
|
15
|
+
### 🎉 New features
|
|
16
|
+
|
|
17
|
+
- Add landscape orienation support. ([#18509](https://github.com/expo/expo/pull/18509)) by [@ajsmth](https://github.com/ajsmth)
|
|
18
|
+
|
|
19
|
+
### 🐛 Bug fixes
|
|
20
|
+
|
|
21
|
+
- Fix the duplicated `DevMenuRNGestureHandlerStateManager.h` output file compilation error on iOS. ([#18562](https://github.com/expo/expo/pull/18562) by [@lukmccall](https://github.com/lukmccall))
|
|
22
|
+
|
|
13
23
|
## 1.1.1 — 2022-07-20
|
|
14
24
|
|
|
15
25
|
### 🐛 Bug fixes
|
package/android/build.gradle
CHANGED
|
@@ -7,7 +7,7 @@ apply plugin: 'kotlin-android'
|
|
|
7
7
|
apply plugin: 'maven-publish'
|
|
8
8
|
|
|
9
9
|
group = 'host.exp.exponent'
|
|
10
|
-
version = '1.
|
|
10
|
+
version = '1.2.0'
|
|
11
11
|
|
|
12
12
|
// reanimated v2
|
|
13
13
|
def reactNativeFilePath = ["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()
|
|
@@ -207,7 +207,7 @@ android {
|
|
|
207
207
|
minSdkVersion safeExtGet("minSdkVersion", 21)
|
|
208
208
|
targetSdkVersion safeExtGet("targetSdkVersion", 31)
|
|
209
209
|
versionCode 10
|
|
210
|
-
versionName '1.
|
|
210
|
+
versionName '1.2.0'
|
|
211
211
|
}
|
|
212
212
|
lintOptions {
|
|
213
213
|
abortOnError false
|
|
@@ -21,7 +21,6 @@ import expo.interfaces.devmenu.DevMenuExtensionInterface
|
|
|
21
21
|
import expo.interfaces.devmenu.DevMenuExtensionSettingsInterface
|
|
22
22
|
import expo.interfaces.devmenu.DevMenuManagerInterface
|
|
23
23
|
import expo.interfaces.devmenu.DevMenuPreferencesInterface
|
|
24
|
-
import expo.interfaces.devmenu.expoapi.DevMenuExpoApiClientInterface
|
|
25
24
|
import expo.interfaces.devmenu.items.DevMenuCallableProvider
|
|
26
25
|
import expo.interfaces.devmenu.items.DevMenuDataSourceInterface
|
|
27
26
|
import expo.interfaces.devmenu.items.DevMenuDataSourceItem
|
|
@@ -33,7 +32,6 @@ import expo.interfaces.devmenu.items.DevMenuScreen
|
|
|
33
32
|
import expo.interfaces.devmenu.items.DevMenuScreenItem
|
|
34
33
|
import expo.interfaces.devmenu.items.KeyCommand
|
|
35
34
|
import expo.interfaces.devmenu.items.getItemsOfType
|
|
36
|
-
import expo.modules.devmenu.api.DevMenuExpoApiClient
|
|
37
35
|
import expo.modules.devmenu.api.DevMenuMetroClient
|
|
38
36
|
import expo.modules.devmenu.detectors.ShakeDetector
|
|
39
37
|
import expo.modules.devmenu.detectors.ThreeFingerLongPressDetector
|
|
@@ -61,7 +59,6 @@ object DevMenuManager : DevMenuManagerInterface, LifecycleEventListener {
|
|
|
61
59
|
private lateinit var devMenuHost: DevMenuHost
|
|
62
60
|
private var currentReactInstanceManager: WeakReference<ReactInstanceManager?> = WeakReference(null)
|
|
63
61
|
private var currentScreenName: String? = null
|
|
64
|
-
private val expoApiClient = DevMenuExpoApiClient()
|
|
65
62
|
private var canLaunchDevMenuOnStart = true
|
|
66
63
|
var testInterceptor: DevMenuTestInterceptor = DevMenuDisabledTestInterceptor()
|
|
67
64
|
|
|
@@ -478,8 +475,6 @@ object DevMenuManager : DevMenuManagerInterface, LifecycleEventListener {
|
|
|
478
475
|
|
|
479
476
|
override fun getMenuHost(): ReactNativeHost = devMenuHost
|
|
480
477
|
|
|
481
|
-
override fun getExpoApiClient(): DevMenuExpoApiClientInterface = expoApiClient
|
|
482
|
-
|
|
483
478
|
override fun setCanLaunchDevMenuOnStart(canLaunchDevMenuOnStart: Boolean) {
|
|
484
479
|
this.canLaunchDevMenuOnStart = canLaunchDevMenuOnStart
|
|
485
480
|
}
|
|
@@ -80,18 +80,6 @@ class DevMenuActivity : ReactActivity() {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
override fun onCreate(savedInstanceState: Bundle?) {
|
|
84
|
-
// Due to a bug in API 26, we can't set the orientation in translucent activity.
|
|
85
|
-
// See https://stackoverflow.com/questions/48072438/java-lang-illegalstateexception-only-fullscreen-opaque-activities-can-request-o
|
|
86
|
-
requestedOrientation = if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O) {
|
|
87
|
-
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
|
|
88
|
-
} else {
|
|
89
|
-
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
super.onCreate(savedInstanceState)
|
|
93
|
-
}
|
|
94
|
-
|
|
95
83
|
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
|
|
96
84
|
return if (keyCode == KeyEvent.KEYCODE_MENU || DevMenuManager.onKeyEvent(keyCode, event)) {
|
|
97
85
|
DevMenuManager.closeMenu()
|
|
@@ -35,26 +35,11 @@ interface DevMenuInternalMenuControllerModuleInterface {
|
|
|
35
35
|
fun fireCallback(name: String, promise: Promise)
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
interface DevMenuInternalSessionManagerModuleInterface {
|
|
39
|
-
fun restoreSession(): String?
|
|
40
|
-
|
|
41
|
-
@ReactMethod
|
|
42
|
-
fun restoreSessionAsync(promise: Promise)
|
|
43
|
-
|
|
44
|
-
@ReactMethod
|
|
45
|
-
fun setSessionAsync(session: ReadableMap?, promise: Promise)
|
|
46
|
-
}
|
|
47
|
-
|
|
48
38
|
interface DevMenuInternalFontManagerModuleInterface {
|
|
49
39
|
@ReactMethod
|
|
50
40
|
fun loadFontsAsync(promise: Promise)
|
|
51
41
|
}
|
|
52
42
|
|
|
53
|
-
interface DevMenuInternalWebBrowserModuleInterface {
|
|
54
|
-
@ReactMethod
|
|
55
|
-
fun openWebBrowserAsync(startUrl: String?, promise: Promise)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
43
|
class DevMenuInternalModule(
|
|
59
44
|
reactContext: ReactApplicationContext
|
|
60
45
|
) : ReactContextBaseJavaModule(reactContext),
|
|
@@ -2,7 +2,6 @@ package expo.modules.devmenu.modules
|
|
|
2
2
|
|
|
3
3
|
import com.facebook.react.bridge.*
|
|
4
4
|
import expo.modules.devmenu.DevMenuManager
|
|
5
|
-
import kotlinx.coroutines.launch
|
|
6
5
|
|
|
7
6
|
class DevMenuModule(reactContext: ReactApplicationContext) :
|
|
8
7
|
ReactContextBaseJavaModule(reactContext) {
|
|
@@ -18,47 +17,11 @@ class DevMenuModule(reactContext: ReactApplicationContext) :
|
|
|
18
17
|
}
|
|
19
18
|
}
|
|
20
19
|
|
|
21
|
-
@ReactMethod
|
|
22
|
-
fun isLoggedInAsync(promise: Promise) {
|
|
23
|
-
promise.resolve(
|
|
24
|
-
devMenuManager
|
|
25
|
-
.getExpoApiClient()
|
|
26
|
-
.isLoggedIn()
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
@ReactMethod
|
|
31
|
-
fun queryMyProjectsAsync(promise: Promise) {
|
|
32
|
-
devMenuManager.coroutineScope.launch {
|
|
33
|
-
try {
|
|
34
|
-
devMenuManager
|
|
35
|
-
.getExpoApiClient()
|
|
36
|
-
.queryMyProjects()
|
|
37
|
-
.use {
|
|
38
|
-
@Suppress("DEPRECATION_ERROR")
|
|
39
|
-
promise.resolve(it.body()?.charStream()?.readText() ?: "")
|
|
40
|
-
}
|
|
41
|
-
} catch (e: Exception) {
|
|
42
|
-
promise.reject("ERR_DEVMENU_CANNOT_GET_PROJECTS", e.message, e)
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
20
|
@ReactMethod
|
|
48
21
|
fun openMenu() {
|
|
49
22
|
openMenuOn(null)
|
|
50
23
|
}
|
|
51
24
|
|
|
52
|
-
@ReactMethod
|
|
53
|
-
fun openProfile() {
|
|
54
|
-
openMenuOn("Profile")
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
@ReactMethod
|
|
58
|
-
fun openSettings() {
|
|
59
|
-
openMenuOn("Settings")
|
|
60
|
-
}
|
|
61
|
-
|
|
62
25
|
override fun invalidate() {
|
|
63
26
|
devMenuManager.registeredCallbacks = arrayListOf<String>()
|
|
64
27
|
super.invalidate()
|
|
@@ -11,7 +11,6 @@ import com.facebook.react.bridge.ReactApplicationContext
|
|
|
11
11
|
import expo.interfaces.devmenu.DevMenuDelegateInterface
|
|
12
12
|
import expo.interfaces.devmenu.DevMenuManagerInterface
|
|
13
13
|
import expo.interfaces.devmenu.DevMenuPreferencesInterface
|
|
14
|
-
import expo.interfaces.devmenu.expoapi.DevMenuExpoApiClientInterface
|
|
15
14
|
import expo.interfaces.devmenu.items.DevMenuDataSourceItem
|
|
16
15
|
import expo.modules.devmenu.api.DevMenuMetroClient
|
|
17
16
|
import kotlinx.coroutines.CoroutineScope
|
|
@@ -97,9 +96,6 @@ object DevMenuManager : DevMenuManagerInterface {
|
|
|
97
96
|
throw IllegalStateException(DEV_MENU_IS_NOT_AVAILABLE)
|
|
98
97
|
}
|
|
99
98
|
|
|
100
|
-
override fun getExpoApiClient(): DevMenuExpoApiClientInterface {
|
|
101
|
-
throw IllegalStateException(DEV_MENU_IS_NOT_AVAILABLE)
|
|
102
|
-
}
|
|
103
99
|
|
|
104
100
|
override fun setCanLaunchDevMenuOnStart(canLaunchDevMenuOnStart: Boolean) {
|
|
105
101
|
throw IllegalStateException(DEV_MENU_IS_NOT_AVAILABLE)
|
|
@@ -67,6 +67,8 @@ type Props = {
|
|
|
67
67
|
innerGestureHandlerRefs: [React.RefObject<PanGestureHandler>, React.RefObject<TapGestureHandler>];
|
|
68
68
|
|
|
69
69
|
animationEnabled?: boolean;
|
|
70
|
+
|
|
71
|
+
screenHeight: number;
|
|
70
72
|
};
|
|
71
73
|
|
|
72
74
|
type State = {
|
|
@@ -77,8 +79,6 @@ type State = {
|
|
|
77
79
|
heightOfContent: Animated.Value<number>;
|
|
78
80
|
};
|
|
79
81
|
|
|
80
|
-
const { height: screenHeight } = Dimensions.get('window');
|
|
81
|
-
|
|
82
82
|
const P = <T extends any>(android: T, ios: T): T => (Platform.OS === 'ios' ? ios : android);
|
|
83
83
|
|
|
84
84
|
const magic = {
|
|
@@ -532,7 +532,10 @@ export class BottomSheet extends React.Component<Props, State> {
|
|
|
532
532
|
this.state.heightOfContent.setValue(height - this.state.initSnap);
|
|
533
533
|
};
|
|
534
534
|
|
|
535
|
-
static renumber = (str: string
|
|
535
|
+
static renumber = (str: string, screenHeight: number) => {
|
|
536
|
+
const result = (Number(str.split('%')[0]) * screenHeight) / 100;
|
|
537
|
+
return result;
|
|
538
|
+
};
|
|
536
539
|
|
|
537
540
|
static getDerivedStateFromProps(props: Props, state: State | undefined): State {
|
|
538
541
|
let snapPoints;
|
|
@@ -551,7 +554,7 @@ export class BottomSheet extends React.Component<Props, State> {
|
|
|
551
554
|
if (typeof s === 'number') {
|
|
552
555
|
return { val: s, ind: i };
|
|
553
556
|
} else if (typeof s === 'string') {
|
|
554
|
-
return { val: BottomSheet.renumber(s), ind: i };
|
|
557
|
+
return { val: BottomSheet.renumber(s, props.screenHeight), ind: i };
|
|
555
558
|
}
|
|
556
559
|
|
|
557
560
|
throw new Error(`Invalid type for value ${s}: ${typeof s}`);
|
|
@@ -690,8 +693,10 @@ const styles = StyleSheet.create({
|
|
|
690
693
|
},
|
|
691
694
|
container: {
|
|
692
695
|
overflow: 'hidden',
|
|
693
|
-
|
|
694
|
-
|
|
696
|
+
borderRadius: 10,
|
|
697
|
+
maxWidth: 525,
|
|
698
|
+
width: '100%',
|
|
699
|
+
alignSelf: 'center',
|
|
695
700
|
},
|
|
696
701
|
fullscreenView: {
|
|
697
702
|
width: '100%',
|
package/app/components/Main.tsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { View, StyleSheet, Pressable } from 'react-native';
|
|
2
|
+
import { View, StyleSheet, Pressable, useWindowDimensions } from 'react-native';
|
|
3
3
|
import Animated from 'react-native-reanimated';
|
|
4
4
|
|
|
5
5
|
import { BottomSheet } from '../components/BottomSheet';
|
|
@@ -55,6 +55,8 @@ export function BottomSheetProvider({ children }: BottomSheetProviderProps) {
|
|
|
55
55
|
outputRange: [0, 0.5],
|
|
56
56
|
});
|
|
57
57
|
|
|
58
|
+
const { height: screenHeight } = useWindowDimensions();
|
|
59
|
+
|
|
58
60
|
return (
|
|
59
61
|
<BottomSheetContext.Provider value={{ collapse }}>
|
|
60
62
|
<View style={styles.container}>
|
|
@@ -69,6 +71,7 @@ export function BottomSheetProvider({ children }: BottomSheetProviderProps) {
|
|
|
69
71
|
/>
|
|
70
72
|
</Pressable>
|
|
71
73
|
<BottomSheet
|
|
74
|
+
screenHeight={screenHeight}
|
|
72
75
|
ref={bottomSheetRef}
|
|
73
76
|
callbackNode={callbackNode.current}
|
|
74
77
|
snapPoints={snapPoints}>
|