UNPKG

2.89 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.CONFIG_CHANGES_ATTRIBUTE = 'android:configChanges';
4exports.ON_CONFIGURATION_CHANGED = `
5public class MainActivity extends ReactActivity {
6
7 // Added automatically by Expo Config
8 @Override
9 public void onConfigurationChanged(Configuration newConfig) {
10 super.onConfigurationChanged(newConfig);
11 Intent intent = new Intent("onConfigurationChanged");
12 intent.putExtra("newConfig", newConfig);
13 sendBroadcast(intent);
14 }
15`;
16function getUserInterfaceStyle(config) {
17 var _a, _b;
18 let result = (_b = (_a = config.android) === null || _a === void 0 ? void 0 : _a.userInterfaceStyle, (_b !== null && _b !== void 0 ? _b : config.userInterfaceStyle));
19 return (result !== null && result !== void 0 ? result : null);
20}
21exports.getUserInterfaceStyle = getUserInterfaceStyle;
22async function setUiModeAndroidManifest(config, manifestDocument) {
23 let userInterfaceStyle = getUserInterfaceStyle(config);
24 if (!userInterfaceStyle) {
25 return manifestDocument;
26 }
27 let mainActivity = manifestDocument.manifest.application[0].activity.filter((e) => e['$']['android:name'] === '.MainActivity');
28 mainActivity[0]['$'][exports.CONFIG_CHANGES_ATTRIBUTE] =
29 'keyboard|keyboardHidden|orientation|screenSize|uiMode';
30 return manifestDocument;
31}
32exports.setUiModeAndroidManifest = setUiModeAndroidManifest;
33function addOnConfigurationChangedMainActivity(config, MainActivity) {
34 var _a;
35 let userInterfaceStyle = getUserInterfaceStyle(config);
36 if (!userInterfaceStyle) {
37 return MainActivity;
38 }
39 // Cruzan: this is not ideal, but I'm not sure of a better way to handle writing to MainActivity.java
40 if ((_a = MainActivity.match(`onConfigurationChanged`)) === null || _a === void 0 ? void 0 : _a.length) {
41 return MainActivity;
42 }
43 let MainActivityWithImports = addJavaImports(MainActivity, [
44 'android.content.Intent',
45 'android.content.res.Configuration',
46 ]);
47 let pattern = new RegExp(`public class MainActivity extends ReactActivity {`);
48 return MainActivityWithImports.replace(pattern, exports.ON_CONFIGURATION_CHANGED);
49}
50exports.addOnConfigurationChangedMainActivity = addOnConfigurationChangedMainActivity;
51// TODO: we should have a generic utility for doing this
52function addJavaImports(javaSource, javaImports) {
53 const lines = javaSource.split('\n');
54 const lineIndexWithPackageDeclaration = lines.findIndex(line => line.match(/^package .*;$/));
55 for (let javaImport of javaImports) {
56 if (!javaSource.includes(javaImport)) {
57 const importStatement = `import ${javaImport};`;
58 lines.splice(lineIndexWithPackageDeclaration + 1, 0, importStatement);
59 }
60 }
61 return lines.join('\n');
62}
63//# sourceMappingURL=UserInterfaceStyle.js.map
\No newline at end of file