import {
  ConfigPlugin,
  AndroidConfig,
  withDangerousMod,
} from "@expo/config-plugins";
import { promises as fs } from "fs";
import type { Auth0PluginProps } from "./whitAuth0";

export const withAuth0Android: ConfigPlugin<Auth0PluginProps> = (
  config,
  { auth0Domain }
) => {
  config = withAuth0AppBuildGradle(config, { auth0Domain });
  return config;
};

export const withAuth0AppBuildGradle: ConfigPlugin<{
  auth0Domain: string;
}> = (config, { auth0Domain }) => {
  return withDangerousMod(config, [
    "android",
    async (config) => {
      const fileInfo = await AndroidConfig.Paths.getAppBuildGradleAsync(
        config.modRequest.projectRoot
      )
      let contents = await fs.readFile(fileInfo.path, "utf-8");
      contents = contents.replace(
        /targetSdkVersion rootProject.ext.targetSdkVersion"/g,
        `targetSdkVersion rootProject.ext.targetSdkVersion\nmanifestPlaceholders = [auth0Domain: "${auth0Domain}", auth0Scheme: "\${applicationId}"]`
      );
      
      await fs.writeFile(fileInfo.path, contents);
      return config;
    },
  ]);
};
