Skip to content

Commit

Permalink
revert changes to plugins
Browse files Browse the repository at this point in the history
  • Loading branch information
KennyHuRadar committed Feb 26, 2025
1 parent 3263739 commit 635b441
Showing 1 changed file with 68 additions and 23 deletions.
91 changes: 68 additions & 23 deletions plugin/src/withRadarAndroid.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,31 @@
import { ExpoConfig } from "expo/config";

import {
withAndroidManifest,
withAppBuildGradle,
AndroidConfig,
WarningAggregator,
withDangerousMod,
} from "expo/config-plugins";
import fs from "fs";
import path from "path";

const { addPermission } = AndroidConfig.Permissions;

import { RadarPluginProps } from "./types";

export const withRadarAndroid = (
config: ExpoConfig,
args: RadarPluginProps
) => {
config = withAndroidPermissions(config, args);
config = withAndroidManifest(config, async (config) => {
config.modResults = await setCustomConfigAsync(
config,
config.modResults,
args
);
return config;
});

config = withDangerousMod(config, [
"android",
Expand Down Expand Up @@ -82,25 +93,61 @@ export const withRadarAndroid = (
});
};

function withAndroidPermissions(
async function setCustomConfigAsync(
config: any,
androidManifest: AndroidConfig.Manifest.AndroidManifest,
args: RadarPluginProps
): ExpoConfig {
const isAndroidBackgroundLocationEnabled = !!args.androidBackgroundPermission;
const enableAndroidForegroundService = !!args.androidForegroundService;
const enableAndroidActivityRecognition = !!args.androidActivityRecognition;
return AndroidConfig.Permissions.withPermissions(
config,
[
isAndroidBackgroundLocationEnabled &&
"android.permission.ACCESS_BACKGROUND_LOCATION",
enableAndroidForegroundService && "android.permission.FOREGROUND_SERVICE",
enableAndroidForegroundService &&
"android.permission.FOREGROUND_SERVICE_LOCATION",
enableAndroidActivityRecognition &&
"android.permission.ACTIVITY_RECOGNITION",
].filter(Boolean) as string[]
);
): Promise<AndroidConfig.Manifest.AndroidManifest> {
if (!androidManifest.manifest["uses-permission"]) {
androidManifest.manifest["uses-permission"] = [];
}
// Add permissions
if (
args.androidFineLocationPermission &&
!androidManifest.manifest["uses-permission"].some(
(e) =>
e["$"]["android:name"] === "android.permission.ACCESS_FINE_LOCATION"
)
) {
addPermission(androidManifest, "android.permission.ACCESS_FINE_LOCATION");
}
if (
args.androidBackgroundPermission &&
!androidManifest.manifest["uses-permission"].some(
(e) =>
e["$"]["android:name"] ===
"android.permission.ACCESS_BACKGROUND_LOCATION"
)
) {
addPermission(
androidManifest,
"android.permission.ACCESS_BACKGROUND_LOCATION"
);
}
if (
!androidManifest.manifest["uses-permission"].some(
(e) =>
e["$"]["android:name"] === "android.permission.ACCESS_COARSE_LOCATION"
)
) {
addPermission(androidManifest, "android.permission.ACCESS_COARSE_LOCATION");
}
if (
!androidManifest.manifest["uses-permission"].some(
(e) => e["$"]["android:name"] === "android.permission.FOREGROUND_SERVICE"
)
) {
addPermission(androidManifest, "android.permission.FOREGROUND_SERVICE");
}
if (
!androidManifest.manifest["uses-permission"].some(
(e) => e["$"]["android:name"] === "android.permission.ACTIVITY_RECOGNITION"
)
) {
addPermission(androidManifest, "android.permission.ACTIVITY_RECOGNITION");
}

return androidManifest;
}

function modifyAppBuildGradle(buildGradle: string, androidFraud: boolean) {
Expand All @@ -121,11 +168,9 @@ function modifyAppBuildGradle(buildGradle: string, androidFraud: boolean) {
const pattern = /^dependencies {/m;

if (!buildGradle.match(pattern)) {
throw new Error(
`Failed to find react.gradle script in android/app/build.gradle.
This is required for react-native-radar to function properly.
Please ensure your android/app/build.gradle includes the react.gradle script.
Current build.gradle content: ${buildGradle}`
WarningAggregator.addWarningAndroid(
"react-native-radar",
"Could not find react.gradle script in android/app/build.gradle."
);
}

Expand Down

0 comments on commit 635b441

Please sign in to comment.