From c9877b9a4514a7d027abaa5a5105c23bf2da72ac Mon Sep 17 00:00:00 2001 From: Hur Ali Date: Mon, 22 Jun 2026 16:25:56 +0500 Subject: [PATCH 1/5] feat: ugprade Gradle version --- example/android/gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index 37f78a6..c61a118 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 40b53bb5b9245c3358e5ce80fc18d2acdd1db72e Mon Sep 17 00:00:00 2001 From: Hur Ali Date: Mon, 22 Jun 2026 16:26:13 +0500 Subject: [PATCH 2/5] feat: enable opt outs --- example/android/gradle.properties | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/example/android/gradle.properties b/example/android/gradle.properties index 419df94..826765e 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -52,3 +52,9 @@ bridgelessEnabled=true # Version of Kotlin to build against. #KOTLIN_VERSION=1.8.22 +KOTLIN_VERSION=2.2.0 + +# Opt out of built-in kotlin and new DSL behavior that ships with AGP 9. +# Starting from AGP 10.x these opt outs will be removed. +android.builtInKotlin=false +android.newDsl=false \ No newline at end of file From aece6c9502f50d11eca482b4bc8bfce16deb5187 Mon Sep 17 00:00:00 2001 From: Hur Ali Date: Mon, 22 Jun 2026 16:28:24 +0500 Subject: [PATCH 3/5] feat: adopt agp v9 with backward compat --- android/build.gradle | 38 ++++++++++++------- .../gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index f324b9a..93fd326 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -8,8 +8,8 @@ buildscript { dependencies { classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") - classpath("com.android.tools.build:gradle:7.3.1") - classpath("com.diffplug.spotless:spotless-plugin-gradle:6.11.0") + classpath("com.android.tools.build:gradle:9.2.1") + classpath("com.diffplug.spotless:spotless-plugin-gradle:8.1.0") } } @@ -32,7 +32,23 @@ def isNewArchitectureEnabled() { } apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' + + +def shouldEnableAgpFallback() { + def agpMajorVersion = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')[0].toInteger() + if (agpMajorVersion <= 8) { + return true + } + + def propertyVal = providers.gradleProperty("android.builtInKotlin").orNull + def isBuiltInKotlinEnabled = propertyVal != null ? propertyVal.toBoolean() : true + + return !isBuiltInKotlinEnabled +} + +if (shouldEnableAgpFallback()) { + apply plugin: 'kotlin-android' +} if (isNewArchitectureEnabled()) { apply plugin: "com.facebook.react" @@ -82,17 +98,11 @@ android { exclude "**/libreact_render*.so" } sourceSets.main { - java { - if (isNewArchitectureEnabled()) { - srcDirs += [ - "src/fabric/java", - "${project.buildDir}/generated/source/codegen/java" - ] - } else { - srcDirs += [ - "src/paper/java" - ] - } + if (isNewArchitectureEnabled()) { + java.directories.add("${project.buildDir}/generated/source/codegen/java") // contains only java files + kotlin.directories.add("src/fabric/java") // contains only kotlin files + } else { + kotlin.directories.add("src/paper/java") // contains both java and kotlin files } } } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index d11cdd9..c61a118 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 812d8a7c1cb07f3c58f823938efa3311457112f8 Mon Sep 17 00:00:00 2001 From: Hur Ali Date: Fri, 3 Jul 2026 17:06:23 +0500 Subject: [PATCH 4/5] fix: patch RNGP for example app --- example/package.json | 3 + .../@react-native+gradle-plugin+0.85.3.patch | 13 +++ example/yarn.lock | 110 +++++++++++++++++- 3 files changed, 120 insertions(+), 6 deletions(-) create mode 100644 example/patches/@react-native+gradle-plugin+0.85.3.patch diff --git a/example/package.json b/example/package.json index 9774546..1267474 100644 --- a/example/package.json +++ b/example/package.json @@ -3,6 +3,7 @@ "version": "0.0.1", "private": true, "scripts": { + "postinstall": "patch-package", "android": "react-native run-android", "build:android": "npm run mkdist && react-native bundle --entry-file index.js --platform android --dev true --bundle-output dist/main.android.jsbundle --assets-dest dist/res", "build:ios": "npm run mkdist && react-native bundle --entry-file index.js --platform ios --dev true --bundle-output dist/main.ios.jsbundle --assets-dest dist", @@ -18,6 +19,8 @@ "@react-navigation/native": "^7.3.3", "@react-navigation/native-stack": "^7.17.5", "@react-navigation/stack": "^7.10.5", + "patch-package": "^8.0.1", + "postinstall-postinstall": "^2.1.0", "react": "19.2.3", "react-native": "^0.85.0", "react-native-gesture-handler": "^3.0.2", diff --git a/example/patches/@react-native+gradle-plugin+0.85.3.patch b/example/patches/@react-native+gradle-plugin+0.85.3.patch new file mode 100644 index 0000000..5c0b6ff --- /dev/null +++ b/example/patches/@react-native+gradle-plugin+0.85.3.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/@react-native/gradle-plugin/gradle/libs.versions.toml b/node_modules/@react-native/gradle-plugin/gradle/libs.versions.toml +index c7502fc..7f788db 100644 +--- a/node_modules/@react-native/gradle-plugin/gradle/libs.versions.toml ++++ b/node_modules/@react-native/gradle-plugin/gradle/libs.versions.toml +@@ -4,7 +4,7 @@ gson = "2.8.9" + guava = "31.0.1-jre" + javapoet = "1.13.0" + junit = "4.13.2" +-kotlin = "2.1.20" ++kotlin = "2.2.0" + assertj = "3.25.1" + ktfmt = "0.22.0" + diff --git a/example/yarn.lock b/example/yarn.lock index 33c4528..58390db 100644 --- a/example/yarn.lock +++ b/example/yarn.lock @@ -2208,6 +2208,11 @@ resolved "https://registry.yarnpkg.com/@vscode/sudo-prompt/-/sudo-prompt-9.3.1.tgz#c562334bc6647733649fd42afc96c0eea8de3b65" integrity sha512-9ORTwwS74VaTn38tNbQhsA5U44zkJfcb0BdTSyyG6frP4e8KMtHuTXYmwefe5dpL8XB1aGSIVTaLjD3BbWb5iA== +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -2694,7 +2699,7 @@ caniuse-lite@^1.0.30001726: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz#22e9706422ad37aa50556af8c10e40e2d93a8b85" integrity sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q== -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -2733,7 +2738,7 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -ci-info@^3.2.0: +ci-info@^3.2.0, ci-info@^3.7.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== @@ -3662,6 +3667,13 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + flat-cache@^3.0.4: version "3.2.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" @@ -3693,6 +3705,15 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -3833,7 +3854,7 @@ gopd@^1.0.1, gopd@^1.2.0: resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -4804,6 +4825,17 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +json-stable-stringify@^1.0.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz#8903cfac42ea1a0f97f35d63a4ce0518f0cc6a70" + integrity sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + isarray "^2.0.5" + jsonify "^0.0.1" + object-keys "^1.1.1" + json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -4816,6 +4848,20 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^6.0.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.1.tgz#b6e31717f22cc37330b081ce0051ed5de53af2f6" + integrity sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== + "jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.3.5" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" @@ -4833,6 +4879,13 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -5173,7 +5226,7 @@ metro@0.84.4, metro@^0.84.3: ws "^7.5.10" yargs "^17.6.2" -micromatch@^4.0.0, micromatch@^4.0.4, micromatch@^4.0.8: +micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -5234,6 +5287,11 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" @@ -5415,7 +5473,7 @@ open@^6.2.0: dependencies: is-wsl "^1.1.0" -open@^7.0.3: +open@^7.0.3, open@^7.4.2: version "7.4.2" resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== @@ -5514,6 +5572,26 @@ parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +patch-package@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.1.tgz#79d02f953f711e06d1f8949c8a13e5d3d7ba1a60" + integrity sha512-VsKRIA8f5uqHQ7NGhwIna6Bx6D9s/1iXlA1hthBVBEbkq+t4kXD0HHt+rJhf/Z+Ci0F/HCB2hvn0qLdLG+Qxlw== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^4.1.2" + ci-info "^3.7.0" + cross-spawn "^7.0.3" + find-yarn-workspace-root "^2.0.0" + fs-extra "^10.0.0" + json-stable-stringify "^1.0.2" + klaw-sync "^6.0.0" + minimist "^1.2.6" + open "^7.4.2" + semver "^7.5.3" + slash "^2.0.0" + tmp "^0.2.4" + yaml "^2.2.2" + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -5571,6 +5649,11 @@ possible-typed-array-names@^1.0.0: resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== +postinstall-postinstall@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" + integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -6156,6 +6239,11 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -6443,6 +6531,11 @@ tinyglobby@^0.2.15: fdir "^6.5.0" picomatch "^4.0.4" +tmp@^0.2.4: + version "0.2.7" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.7.tgz#26f4db11d1601ce8012dcb8a798ece1c06a99059" + integrity sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw== + tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -6594,6 +6687,11 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -6815,7 +6913,7 @@ yaml@^2.2.1: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6" integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ== -yaml@^2.6.1: +yaml@^2.2.2, yaml@^2.6.1: version "2.9.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.9.0.tgz#78274afd93598a1dfdd6130df6a566defcbf9aa4" integrity sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA== From 262c63f55cc323e8815e179731f1bc496b8c10b1 Mon Sep 17 00:00:00 2001 From: Hur Ali Date: Wed, 8 Jul 2026 14:32:54 +0500 Subject: [PATCH 5/5] fix: apply formatting --- .../safeareacontext/InsetsChangeEvent.kt | 2 +- .../safeareacontext/SafeAreaContextPackage.kt | 3 ++- .../SafeAreaProviderManager.kt | 3 ++- .../safeareacontext/SafeAreaUtils.kt | 19 ++++++++++++------- .../th3rdwave/safeareacontext/SafeAreaView.kt | 3 ++- .../safeareacontext/SafeAreaViewEdges.kt | 4 ++-- .../safeareacontext/SafeAreaViewManager.kt | 12 +++++++----- .../safeareacontext/SafeAreaViewMode.kt | 2 +- .../safeareacontext/SafeAreaViewShadowNode.kt | 10 +++++++--- .../safeareacontext/SerializationUtils.kt | 6 ++++-- .../safeareacontext/InsetsChangeEvent.kt | 4 ++-- 11 files changed, 42 insertions(+), 26 deletions(-) diff --git a/android/src/fabric/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt b/android/src/fabric/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt index b60ba5b..4cb8a23 100644 --- a/android/src/fabric/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt +++ b/android/src/fabric/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt @@ -8,7 +8,7 @@ internal class InsetsChangeEvent( surfaceId: Int, viewTag: Int, private val mInsets: EdgeInsets, - private val mFrame: Rect + private val mFrame: Rect, ) : Event(surfaceId, viewTag) { override fun getEventName() = EVENT_NAME diff --git a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextPackage.kt b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextPackage.kt index 10a8c2c..29c4622 100644 --- a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextPackage.kt +++ b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextPackage.kt @@ -30,7 +30,8 @@ class SafeAreaContextPackage : BaseReactPackage() { true, reactModule.needsEagerInit, reactModule.isCxxModule, - BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) + BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, + ) } return ReactModuleInfoProvider { reactModuleInfoMap } } diff --git a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProviderManager.kt b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProviderManager.kt index de6f685..42de837 100644 --- a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProviderManager.kt +++ b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaProviderManager.kt @@ -21,7 +21,8 @@ class SafeAreaProviderManager : override fun getExportedCustomDirectEventTypeConstants() = mutableMapOf( - InsetsChangeEvent.EVENT_NAME to mutableMapOf("registrationName" to "onInsetsChange")) + InsetsChangeEvent.EVENT_NAME to mutableMapOf("registrationName" to "onInsetsChange") + ) override fun addEventEmitters(reactContext: ThemedReactContext, view: SafeAreaProvider) { super.addEventEmitters(reactContext, view) diff --git a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.kt b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.kt index 1fef8dc..9dd9eea 100644 --- a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.kt +++ b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaUtils.kt @@ -16,13 +16,14 @@ private fun getRootWindowInsetsCompatR(rootView: View): EdgeInsets? { WindowInsets.Type.statusBars() or WindowInsets.Type.displayCutout() or WindowInsets.Type.navigationBars() or - WindowInsets.Type.captionBar()) - ?: return null + WindowInsets.Type.captionBar() + ) ?: return null return EdgeInsets( top = insets.top.toFloat(), right = insets.right.toFloat(), bottom = insets.bottom.toFloat(), - left = insets.left.toFloat()) + left = insets.left.toFloat(), + ) } @RequiresApi(Build.VERSION_CODES.M) @@ -38,7 +39,8 @@ private fun getRootWindowInsetsCompatM(rootView: View): EdgeInsets? { // never get the keyboard offset while still working with devices that // hide the navigation bar. bottom = min(insets.systemWindowInsetBottom, insets.stableInsetBottom).toFloat(), - left = insets.systemWindowInsetLeft.toFloat()) + left = insets.systemWindowInsetLeft.toFloat(), + ) } private fun getRootWindowInsetsCompatBase(rootView: View): EdgeInsets? { @@ -48,7 +50,8 @@ private fun getRootWindowInsetsCompatBase(rootView: View): EdgeInsets? { top = visibleRect.top.toFloat(), right = (rootView.width - visibleRect.right).toFloat(), bottom = (rootView.height - visibleRect.bottom).toFloat(), - left = visibleRect.left.toFloat()) + left = visibleRect.left.toFloat(), + ) } private fun getRootWindowInsetsCompat(rootView: View): EdgeInsets? { @@ -76,7 +79,8 @@ fun getSafeAreaInsets(view: View): EdgeInsets? { top = max(windowInsets.top - visibleRect.top, 0f), right = max(min(visibleRect.left + view.width - windowWidth, 0f) + windowInsets.right, 0f), bottom = max(min(visibleRect.top + view.height - windowHeight, 0f) + windowInsets.bottom, 0f), - left = max(windowInsets.left - visibleRect.left, 0f)) + left = max(windowInsets.left - visibleRect.left, 0f), + ) } fun getFrame(rootView: ViewGroup, view: View): Rect? { @@ -98,5 +102,6 @@ fun getFrame(rootView: ViewGroup, view: View): Rect? { x = offset.left.toFloat(), y = offset.top.toFloat(), width = view.width.toFloat(), - height = view.height.toFloat()) + height = view.height.toFloat(), + ) } diff --git a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt index 9c798c6..cc7688b 100644 --- a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt +++ b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt @@ -33,7 +33,8 @@ class SafeAreaView(context: Context?) : SafeAreaViewEdgeModes.ADDITIVE, SafeAreaViewEdgeModes.ADDITIVE, SafeAreaViewEdgeModes.ADDITIVE, - SafeAreaViewEdgeModes.ADDITIVE) + SafeAreaViewEdgeModes.ADDITIVE, + ) val stateWrapper = getStateWrapper() if (stateWrapper != null) { val map = Arguments.createMap() diff --git a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewEdges.kt b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewEdges.kt index d7b64bf..f6a3553 100644 --- a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewEdges.kt +++ b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewEdges.kt @@ -3,14 +3,14 @@ package com.th3rdwave.safeareacontext enum class SafeAreaViewEdgeModes { OFF, ADDITIVE, - MAXIMUM + MAXIMUM, } data class SafeAreaViewEdges( val top: SafeAreaViewEdgeModes, val right: SafeAreaViewEdgeModes, val bottom: SafeAreaViewEdgeModes, - val left: SafeAreaViewEdgeModes + val left: SafeAreaViewEdgeModes, ) class Safe diff --git a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt index 373c9dd..c9f6f6c 100644 --- a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt +++ b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt @@ -36,7 +36,8 @@ class SafeAreaViewManager : ReactViewManager() { if (propList != null) { view.setEdges( SafeAreaViewEdges( - top = propList.getString("top")?.let { SafeAreaViewEdgeModes.valueOf(it.uppercase()) } + top = + propList.getString("top")?.let { SafeAreaViewEdgeModes.valueOf(it.uppercase()) } ?: SafeAreaViewEdgeModes.OFF, right = propList.getString("right")?.let { SafeAreaViewEdgeModes.valueOf(it.uppercase()) } @@ -44,18 +45,19 @@ class SafeAreaViewManager : ReactViewManager() { bottom = propList.getString("bottom")?.let { SafeAreaViewEdgeModes.valueOf(it.uppercase()) - } - ?: SafeAreaViewEdgeModes.OFF, + } ?: SafeAreaViewEdgeModes.OFF, left = propList.getString("left")?.let { SafeAreaViewEdgeModes.valueOf(it.uppercase()) } - ?: SafeAreaViewEdgeModes.OFF)) + ?: SafeAreaViewEdgeModes.OFF, + ) + ) } } override fun updateState( view: ReactViewGroup, props: ReactStylesDiffMap?, - stateWrapper: StateWrapper? + stateWrapper: StateWrapper?, ): Any? { (view as SafeAreaView).setStateWrapper(stateWrapper) return null diff --git a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewMode.kt b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewMode.kt index 9af9a71..06fcc98 100644 --- a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewMode.kt +++ b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewMode.kt @@ -2,5 +2,5 @@ package com.th3rdwave.safeareacontext enum class SafeAreaViewMode { PADDING, - MARGIN + MARGIN, } diff --git a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewShadowNode.kt b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewShadowNode.kt index 939950a..7f1d5ea 100644 --- a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewShadowNode.kt +++ b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewShadowNode.kt @@ -81,7 +81,7 @@ class SafeAreaViewShadowNode : LayoutShadowNode() { private fun getEdgeValue( edgeMode: SafeAreaViewEdgeModes, insetValue: Float, - edgeValue: Float + edgeValue: Float, ): Float { if (edgeMode == SafeAreaViewEdgeModes.OFF) { return edgeValue @@ -139,7 +139,9 @@ class SafeAreaViewShadowNode : LayoutShadowNode() { ViewProps.PADDING_TOP, ViewProps.PADDING_BOTTOM, ViewProps.PADDING_LEFT, - ViewProps.PADDING_RIGHT]) + ViewProps.PADDING_RIGHT, + ] + ) override fun setPaddings(index: Int, padding: Dynamic) { val spacingType = ViewProps.PADDING_MARGIN_SPACING_TYPES[index] mPaddings[spacingType] = @@ -159,7 +161,9 @@ class SafeAreaViewShadowNode : LayoutShadowNode() { ViewProps.MARGIN_TOP, ViewProps.MARGIN_BOTTOM, ViewProps.MARGIN_LEFT, - ViewProps.MARGIN_RIGHT]) + ViewProps.MARGIN_RIGHT, + ] + ) override fun setMargins(index: Int, margin: Dynamic) { val spacingType = ViewProps.PADDING_MARGIN_SPACING_TYPES[index] mMargins[spacingType] = diff --git a/android/src/main/java/com/th3rdwave/safeareacontext/SerializationUtils.kt b/android/src/main/java/com/th3rdwave/safeareacontext/SerializationUtils.kt index 2c98dd3..c7654cb 100644 --- a/android/src/main/java/com/th3rdwave/safeareacontext/SerializationUtils.kt +++ b/android/src/main/java/com/th3rdwave/safeareacontext/SerializationUtils.kt @@ -18,7 +18,8 @@ fun edgeInsetsToJavaMap(insets: EdgeInsets): Map { "top" to PixelUtil.toDIPFromPixel(insets.top), "right" to PixelUtil.toDIPFromPixel(insets.right), "bottom" to PixelUtil.toDIPFromPixel(insets.bottom), - "left" to PixelUtil.toDIPFromPixel(insets.left)) + "left" to PixelUtil.toDIPFromPixel(insets.left), + ) } fun rectToJsMap(rect: Rect): WritableMap { @@ -35,5 +36,6 @@ fun rectToJavaMap(rect: Rect): Map { "x" to PixelUtil.toDIPFromPixel(rect.x), "y" to PixelUtil.toDIPFromPixel(rect.y), "width" to PixelUtil.toDIPFromPixel(rect.width), - "height" to PixelUtil.toDIPFromPixel(rect.height)) + "height" to PixelUtil.toDIPFromPixel(rect.height), + ) } diff --git a/android/src/paper/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt b/android/src/paper/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt index ac3b588..252c90c 100644 --- a/android/src/paper/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt +++ b/android/src/paper/java/com/th3rdwave/safeareacontext/InsetsChangeEvent.kt @@ -10,8 +10,8 @@ internal class InsetsChangeEvent( @Suppress("UNUSED_PARAMETER") surfaceId: Int, viewTag: Int, private val mInsets: EdgeInsets, - private val mFrame: Rect -// New ctor is only available in RN 0.65. + private val mFrame: Rect, + // New ctor is only available in RN 0.65. ) : Event(viewTag) { override fun getEventName() = EVENT_NAME