apply plugin: 'com.android.application'

// 버전 정보를 properties 파일에서 동적으로 로드
android {
    namespace "com.lovable.zellyfinance"
    compileSdk rootProject.ext.compileSdkVersion
    defaultConfig {
        applicationId "com.lovable.zellyfinance"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion

        // 기본 버전 정보 (최신 버전으로 설정)
        def defaultVersionName = '1.1.1.3'
        def defaultVersionCode = 7
        def defaultBuildNumber = 7
        
        // version.properties 파일 로드
        def versionPropsFile = file("${rootDir}/version.properties")
        def versionProps = new Properties()
        
        try {
            if (versionPropsFile.exists() && versionPropsFile.canRead()) {
                versionProps.load(new FileInputStream(versionPropsFile))
                println "버전 정보 로드: versionName=${versionProps['versionName']}, versionCode=${versionProps['versionCode']}, buildNumber=${versionProps['buildNumber']}"
            } else {
                println "version.properties 파일을 읽을 수 없음, 기본값 사용: versionName=${defaultVersionName}, versionCode=${defaultVersionCode}, buildNumber=${defaultBuildNumber}"
                versionProps['versionName'] = defaultVersionName
                versionProps['versionCode'] = defaultVersionCode.toString()
                versionProps['buildNumber'] = defaultBuildNumber.toString()
                
                // properties 파일이 없는 경우 생성
                try {
                    versionPropsFile.getParentFile().mkdirs()
                    versionPropsFile.createNewFile()
                    
                    def outputStream = new FileOutputStream(versionPropsFile)
                    versionProps.store(outputStream, "자동 생성된 버전 정보")
                    outputStream.close()
                    println "version.properties 파일 생성 성공"
                } catch (Exception e) {
                    println "version.properties 파일 생성 실패: ${e.message}"
                }
            }
        } catch (Exception e) {
            println "버전 정보 로드 오류, 기본값 사용: ${e.message}"
            versionProps['versionName'] = defaultVersionName
            versionProps['versionCode'] = defaultVersionCode.toString()
            versionProps['buildNumber'] = defaultBuildNumber.toString()
        }
        
        // 로드된 값이 유효한지 확인하고, 유효하지 않으면 기본값 사용
        def versionName = defaultVersionName
        def versionCode = defaultVersionCode
        def buildNumber = defaultBuildNumber
        
        if (versionProps['versionName'] && !versionProps['versionName'].toString().trim().isEmpty()) {
            versionName = versionProps['versionName']
        } else {
            println "유효하지 않은 versionName, 기본값 사용: ${defaultVersionName}"
        }
        
        if (versionProps['versionCode'] && !versionProps['versionCode'].toString().trim().isEmpty()) {
            try {
                versionCode = versionProps['versionCode'].toString().toInteger()
                if (versionCode <= 0) {
                    println "유효하지 않은 versionCode(0 이하), 기본값 사용: ${defaultVersionCode}"
                    versionCode = defaultVersionCode
                }
            } catch (Exception e) {
                println "versionCode 변환 오류, 기본값 사용: ${e.message}"
                versionCode = defaultVersionCode
            }
        } else {
            println "유효하지 않은 versionCode, 기본값 사용: ${defaultVersionCode}"
        }
        
        if (versionProps['buildNumber'] && !versionProps['buildNumber'].toString().trim().isEmpty()) {
            try {
                buildNumber = versionProps['buildNumber'].toString().toInteger()
                if (buildNumber <= 0) {
                    println "유효하지 않은 buildNumber(0 이하), 기본값 사용: ${defaultBuildNumber}"
                    buildNumber = defaultBuildNumber
                }
            } catch (Exception e) {
                println "buildNumber 변환 오류, 기본값 사용: ${e.message}"
                buildNumber = defaultBuildNumber
            }
        } else {
            println "유효하지 않은 buildNumber, 기본값 사용: ${defaultBuildNumber}"
        }
        
        // 최종 로그 출력
        println "최종 버전 정보: versionName=${versionName}, versionCode=${versionCode}, buildNumber=${buildNumber}"
        
        // 앱 빌드 속성 설정 - 문법 오류 수정
        versionName = versionName
        versionCode = versionCode
        
        // BuildConfig 필드 설정
        buildConfigField "String", "VERSION_NAME", "\"${versionName}\""
        buildConfigField "int", "VERSION_CODE", "${versionCode}"
        buildConfigField "int", "BUILD_NUMBER", "${buildNumber}"
        
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        aaptOptions {
             // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
             // Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61
            ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~'
        }
    }
    
    // 서명 설정 추가
    signingConfigs {
        release {
            storeFile file('/Users/hansoo./Dev/keys/google-key')
            storePassword "djqrP1dnl#"
            keyAlias "key0"
            keyPassword "aplfarm99##"
        }
    }
    
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
        debug {
            minifyEnabled false
            debuggable true
        }
    }
    
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
    
    buildFeatures {
        buildConfig true
    }
}

repositories {
    flatDir{
        dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs'
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
    implementation "androidx.coordinatorlayout:coordinatorlayout:$androidxCoordinatorLayoutVersion"
    implementation "androidx.core:core-splashscreen:$coreSplashScreenVersion"
    implementation project(':capacitor-android')
    testImplementation "junit:junit:$junitVersion"
    androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
    androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"
    implementation project(':capacitor-cordova-android-plugins')
    
    // 스플래시 화면 플러그인 추가
    implementation "androidx.core:core-splashscreen:1.0.0"
}

apply from: 'capacitor.build.gradle'

try {
    def servicesJSON = file('google-services.json')
    if (servicesJSON.text) {
        apply plugin: 'com.google.gms.google-services'
    }
} catch(Exception e) {
    logger.info("google-services.json not found, google-services plugin not applied. Push Notifications won't work")
}
