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.
Files changed (36) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/android/build.gradle +2 -2
  3. package/android/src/debug/java/expo/modules/devmenu/DevMenuManager.kt +0 -5
  4. package/android/src/main/java/expo/modules/devmenu/DevMenuActivity.kt +0 -12
  5. package/android/src/main/java/expo/modules/devmenu/modules/DevMenuInternalModule.kt +0 -15
  6. package/android/src/main/java/expo/modules/devmenu/modules/DevMenuModule.kt +0 -37
  7. package/android/src/release/java/expo/modules/devmenu/DevMenuManager.kt +0 -4
  8. package/app/components/BottomSheet.tsx +11 -6
  9. package/app/components/Main.tsx +1 -0
  10. package/app/hooks/useBottomSheet.tsx +4 -1
  11. package/assets/EXDevMenuApp.android.js +10 -10
  12. package/assets/EXDevMenuApp.ios.js +10 -10
  13. package/build/DevMenu.d.ts +0 -2
  14. package/build/DevMenu.d.ts.map +1 -1
  15. package/build/DevMenu.js +0 -6
  16. package/build/DevMenu.js.map +1 -1
  17. package/build/ExpoDevMenu.types.d.ts +0 -2
  18. package/build/ExpoDevMenu.types.d.ts.map +1 -1
  19. package/build/ExpoDevMenu.types.js.map +1 -1
  20. package/build/ExpoDevMenu.web.d.ts.map +1 -1
  21. package/build/ExpoDevMenu.web.js +0 -6
  22. package/build/ExpoDevMenu.web.js.map +1 -1
  23. package/ios/DevMenuManager.swift +1 -6
  24. package/ios/DevMenuViewController.swift +1 -13
  25. package/ios/Modules/DevMenuModule.m +0 -6
  26. package/ios/Modules/DevMenuModule.swift +0 -15
  27. package/package.json +4 -4
  28. package/src/DevMenu.ts +0 -8
  29. package/src/ExpoDevMenu.types.ts +0 -2
  30. package/src/ExpoDevMenu.web.ts +0 -6
  31. package/android/src/main/java/expo/modules/devmenu/api/DevMenuExpoApiClient.kt +0 -144
  32. package/android/src/main/java/expo/modules/devmenu/constants/DevMenuExpoApiConstants.kt +0 -10
  33. package/android/src/main/java/expo/modules/devmenu/modules/internals/DevMenuInternalSessionManagerModule.kt +0 -86
  34. package/ios/DevMenuExpoApiClient.swift +0 -148
  35. package/ios/Tests/DevMenuExpoApiClientTests.swift +0 -229
  36. 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
@@ -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.1.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.1.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) => (Number(str.split('%')[0]) * screenHeight) / 100;
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
- borderTopLeftRadius: 10,
694
- borderTopRightRadius: 10,
696
+ borderRadius: 10,
697
+ maxWidth: 525,
698
+ width: '100%',
699
+ alignSelf: 'center',
695
700
  },
696
701
  fullscreenView: {
697
702
  width: '100%',
@@ -351,6 +351,7 @@ export function Main({ registeredCallbacks = [] }: MainProps) {
351
351
  </Row>
352
352
  </Button.ScaleOnPressContainer>
353
353
  </View>
354
+ <Spacer.Vertical size="large" />
354
355
  </View>
355
356
  );
356
357
  }
@@ -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}>