// config.gradle

// Load properties from the app_config.properties file
ext.loadAppConfig = {
    // Create a Properties object to hold the app configuration
    def appConfig = new Properties()

    // Locate the app_config.properties file in the project root
    def appConfigFile = file("app_config.properties")

    // If the properties file exists, load its contents
    if (appConfigFile.exists()) {
        appConfig.load(new FileInputStream(appConfigFile))
    }

    // Return the loaded properties
    return appConfig
}

// Determine the build configuration fields based on the build type (Debug or Release)
ext.getBuildConfigFields = { appConfig, isDebugBuild ->
    // LAUNCH_MODE determines the launch behavior
    def launchMode = appConfig.getProperty("LAUNCH_MODE", "0")

    // ONLINE_SERVICE_IS_LOCAL remains as a string for comparison
    def serviceIsLocal = appConfig.getProperty("ONLINE_SERVICE_IS_LOCAL", "true")

    // Set the service host based on the build type and whether it's running locally
    def serviceHost = (serviceIsLocal == "true" && isDebugBuild) ? "10.0.2.2:4200" : appConfig.getProperty("ONLINE_SERVICE_HOST", "app.super-productivity.com")

    // Set the protocol based on the build type and whether it's running locally
    def serviceProtocol = (serviceIsLocal == "true" && isDebugBuild) ? "http" : appConfig.getProperty("ONLINE_SERVICE_PROTOCOL", "https")

    // Return the configuration fields as a map
    return [
            LAUNCH_MODE: "\"${launchMode}\"",
            ONLINE_SERVICE_IS_LOCAL: "\"${serviceIsLocal}\"",
            ONLINE_SERVICE_HOST: "\"${serviceHost}\"",
            ONLINE_SERVICE_PROTOCOL: "\"${serviceProtocol}\""
    ]
}
