aboutsummaryrefslogtreecommitdiffstats
path: root/apps/mobile/plugins/trust-local-certs.cjs
diff options
context:
space:
mode:
authorxuatz <xzlow10@gmail.com>2025-08-16 23:28:00 +0900
committerGitHub <noreply@github.com>2025-08-16 17:28:00 +0300
commit17b59084c4a3345f127f45d3083254e060360bba (patch)
tree9da18cabc98e403b719298eed822650516488a93 /apps/mobile/plugins/trust-local-certs.cjs
parent9059ca22312dec7878e398dd28a2fa18af560fc3 (diff)
downloadkarakeep-17b59084c4a3345f127f45d3083254e060360bba.tar.zst
fix(mobile): change to metro.config.cjs since migrating to type: module (#1845)
Diffstat (limited to 'apps/mobile/plugins/trust-local-certs.cjs')
-rw-r--r--apps/mobile/plugins/trust-local-certs.cjs43
1 files changed, 43 insertions, 0 deletions
diff --git a/apps/mobile/plugins/trust-local-certs.cjs b/apps/mobile/plugins/trust-local-certs.cjs
new file mode 100644
index 00000000..40275034
--- /dev/null
+++ b/apps/mobile/plugins/trust-local-certs.cjs
@@ -0,0 +1,43 @@
+const { AndroidConfig, withAndroidManifest } = require("@expo/config-plugins");
+const { Paths } = require("@expo/config-plugins/build/android");
+const path = require("path");
+const fs = require("fs");
+const fsPromises = fs.promises;
+
+const { getMainApplicationOrThrow } = AndroidConfig.Manifest;
+
+const withTrustLocalCerts = (config) => {
+ return withAndroidManifest(config, async (config) => {
+ config.modResults = await setCustomConfigAsync(config, config.modResults);
+ return config;
+ });
+};
+
+async function setCustomConfigAsync(config, androidManifest) {
+ const src_file_pat = path.join(__dirname, "network_security_config.xml");
+ const res_file_path = path.join(
+ await Paths.getResourceFolderAsync(config.modRequest.projectRoot),
+ "xml",
+ "network_security_config.xml",
+ );
+
+ const res_dir = path.resolve(res_file_path, "..");
+
+ if (!fs.existsSync(res_dir)) {
+ await fsPromises.mkdir(res_dir);
+ }
+
+ try {
+ await fsPromises.copyFile(src_file_pat, res_file_path);
+ } catch (e) {
+ throw e;
+ }
+
+ const mainApplication = getMainApplicationOrThrow(androidManifest);
+ mainApplication.$["android:networkSecurityConfig"] =
+ "@xml/network_security_config";
+
+ return androidManifest;
+}
+
+module.exports = withTrustLocalCerts;