1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.CONFIG_CHANGES_ATTRIBUTE = 'android:configChanges';
|
4 | exports.ON_CONFIGURATION_CHANGED = `
|
5 | public 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 | `;
|
16 | function 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 | }
|
21 | exports.getUserInterfaceStyle = getUserInterfaceStyle;
|
22 | async 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 | }
|
32 | exports.setUiModeAndroidManifest = setUiModeAndroidManifest;
|
33 | function addOnConfigurationChangedMainActivity(config, MainActivity) {
|
34 | var _a;
|
35 | let userInterfaceStyle = getUserInterfaceStyle(config);
|
36 | if (!userInterfaceStyle) {
|
37 | return MainActivity;
|
38 | }
|
39 |
|
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 | }
|
50 | exports.addOnConfigurationChangedMainActivity = addOnConfigurationChangedMainActivity;
|
51 |
|
52 | function 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 |
|
\ | No newline at end of file |