From a70c6fd7cd8760d8d5cad8d1493cb0806ce64040 Mon Sep 17 00:00:00 2001 From: Kirill Zyusko Date: Sun, 4 Feb 2024 16:47:51 +0100 Subject: [PATCH] refactor: move all interactive keyboard code to dedicated `interactive` folder (Android) (#353) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 📜 Description Move all interactive keyboard code to dedicated `interactive` folder/package in kotlin/Android. ## 💡 Motivation and Context Ideally in root android folder I'd like to keep a single `package` file and all other code should be placed in folders. Initially I created generic purpose folders, like `events`/`listeners`/`views` etc. However sometimes it may be hard to create generic purpose folders for specific files. Theoretically I could create folders `controllers`/`providers`, but they would contain only single files. So I took an inspiration from https://github.com/kirillzyusko/react-native-keyboard-controller/pull/346 PR, where I created `traversal` folder for keeping functionality related to view traversal/keyboard toolbar. And in this PR I moved all interactive-keyboard related code into `interactive` folder - it keeps file-system clean 😎 ## 📢 Changelog ### CI - free up disk for `e2e` tests (Android); ### Android - added `interactive` folder; - move `interpolators` folder to `interactive`; - moved `InteractiveKeyboardProvider` and `KeyboardAnimationController` to `interactive` folder. ## 🤔 How Has This Been Tested? Tested on CI. ## 📸 Screenshots (if appropriate): |Before|After| |-------|-----| |image|image| ## 📝 Checklist - [x] CI successfully passed - [x] I added new mocks and corresponding unit-tests if library API was changed --- .github/workflows/android-e2e-test.yml | 7 +++++++ .../{ => interactive}/InteractiveKeyboardProvider.kt | 2 +- .../{ => interactive}/KeyboardAnimationController.kt | 2 +- .../{ => interactive}/interpolators/Interpolator.kt | 2 +- .../{ => interactive}/interpolators/IosInterpolator.kt | 2 +- .../{ => interactive}/interpolators/LinearInterpolator.kt | 2 +- .../listeners/KeyboardAnimationCallback.kt | 2 +- .../views/KeyboardGestureAreaReactViewGroup.kt | 8 ++++---- 8 files changed, 17 insertions(+), 10 deletions(-) rename android/src/main/java/com/reactnativekeyboardcontroller/{ => interactive}/InteractiveKeyboardProvider.kt (61%) rename android/src/main/java/com/reactnativekeyboardcontroller/{ => interactive}/KeyboardAnimationController.kt (99%) rename android/src/main/java/com/reactnativekeyboardcontroller/{ => interactive}/interpolators/Interpolator.kt (89%) rename android/src/main/java/com/reactnativekeyboardcontroller/{ => interactive}/interpolators/IosInterpolator.kt (82%) rename android/src/main/java/com/reactnativekeyboardcontroller/{ => interactive}/interpolators/LinearInterpolator.kt (72%) diff --git a/.github/workflows/android-e2e-test.yml b/.github/workflows/android-e2e-test.yml index 38b9cba692..618a3e1bb7 100644 --- a/.github/workflows/android-e2e-test.yml +++ b/.github/workflows/android-e2e-test.yml @@ -32,6 +32,13 @@ jobs: cancel-in-progress: true steps: - uses: actions/checkout@v4 + - name: Free Disk Space (Ubuntu) + uses: jlumbroso/free-disk-space@main + with: + # force to remove default tools + tool-cache: true + # preserve Android + android: false - uses: actions/setup-node@v4 with: node-version: 18.x diff --git a/android/src/main/java/com/reactnativekeyboardcontroller/InteractiveKeyboardProvider.kt b/android/src/main/java/com/reactnativekeyboardcontroller/interactive/InteractiveKeyboardProvider.kt similarity index 61% rename from android/src/main/java/com/reactnativekeyboardcontroller/InteractiveKeyboardProvider.kt rename to android/src/main/java/com/reactnativekeyboardcontroller/interactive/InteractiveKeyboardProvider.kt index e7ba6f337e..dbae13463d 100644 --- a/android/src/main/java/com/reactnativekeyboardcontroller/InteractiveKeyboardProvider.kt +++ b/android/src/main/java/com/reactnativekeyboardcontroller/interactive/InteractiveKeyboardProvider.kt @@ -1,4 +1,4 @@ -package com.reactnativekeyboardcontroller +package com.reactnativekeyboardcontroller.interactive object InteractiveKeyboardProvider { var shown = false diff --git a/android/src/main/java/com/reactnativekeyboardcontroller/KeyboardAnimationController.kt b/android/src/main/java/com/reactnativekeyboardcontroller/interactive/KeyboardAnimationController.kt similarity index 99% rename from android/src/main/java/com/reactnativekeyboardcontroller/KeyboardAnimationController.kt rename to android/src/main/java/com/reactnativekeyboardcontroller/interactive/KeyboardAnimationController.kt index 2090308e1e..7e753a205a 100644 --- a/android/src/main/java/com/reactnativekeyboardcontroller/KeyboardAnimationController.kt +++ b/android/src/main/java/com/reactnativekeyboardcontroller/interactive/KeyboardAnimationController.kt @@ -1,4 +1,4 @@ -package com.reactnativekeyboardcontroller +package com.reactnativekeyboardcontroller.interactive import android.os.CancellationSignal import android.view.View diff --git a/android/src/main/java/com/reactnativekeyboardcontroller/interpolators/Interpolator.kt b/android/src/main/java/com/reactnativekeyboardcontroller/interactive/interpolators/Interpolator.kt similarity index 89% rename from android/src/main/java/com/reactnativekeyboardcontroller/interpolators/Interpolator.kt rename to android/src/main/java/com/reactnativekeyboardcontroller/interactive/interpolators/Interpolator.kt index 7e6a1740fb..ffbf077e00 100644 --- a/android/src/main/java/com/reactnativekeyboardcontroller/interpolators/Interpolator.kt +++ b/android/src/main/java/com/reactnativekeyboardcontroller/interactive/interpolators/Interpolator.kt @@ -1,4 +1,4 @@ -package com.reactnativekeyboardcontroller.interpolators +package com.reactnativekeyboardcontroller.interactive.interpolators interface Interpolator { /** diff --git a/android/src/main/java/com/reactnativekeyboardcontroller/interpolators/IosInterpolator.kt b/android/src/main/java/com/reactnativekeyboardcontroller/interactive/interpolators/IosInterpolator.kt similarity index 82% rename from android/src/main/java/com/reactnativekeyboardcontroller/interpolators/IosInterpolator.kt rename to android/src/main/java/com/reactnativekeyboardcontroller/interactive/interpolators/IosInterpolator.kt index b2a7eb7369..504e10a20f 100644 --- a/android/src/main/java/com/reactnativekeyboardcontroller/interpolators/IosInterpolator.kt +++ b/android/src/main/java/com/reactnativekeyboardcontroller/interactive/interpolators/IosInterpolator.kt @@ -1,4 +1,4 @@ -package com.reactnativekeyboardcontroller.interpolators +package com.reactnativekeyboardcontroller.interactive.interpolators class IosInterpolator : Interpolator { override fun interpolate( diff --git a/android/src/main/java/com/reactnativekeyboardcontroller/interpolators/LinearInterpolator.kt b/android/src/main/java/com/reactnativekeyboardcontroller/interactive/interpolators/LinearInterpolator.kt similarity index 72% rename from android/src/main/java/com/reactnativekeyboardcontroller/interpolators/LinearInterpolator.kt rename to android/src/main/java/com/reactnativekeyboardcontroller/interactive/interpolators/LinearInterpolator.kt index 79364f1654..2afa028bfa 100644 --- a/android/src/main/java/com/reactnativekeyboardcontroller/interpolators/LinearInterpolator.kt +++ b/android/src/main/java/com/reactnativekeyboardcontroller/interactive/interpolators/LinearInterpolator.kt @@ -1,4 +1,4 @@ -package com.reactnativekeyboardcontroller.interpolators +package com.reactnativekeyboardcontroller.interactive.interpolators class LinearInterpolator : Interpolator { override fun interpolate( diff --git a/android/src/main/java/com/reactnativekeyboardcontroller/listeners/KeyboardAnimationCallback.kt b/android/src/main/java/com/reactnativekeyboardcontroller/listeners/KeyboardAnimationCallback.kt index 7451cb5e56..61edfaebfe 100644 --- a/android/src/main/java/com/reactnativekeyboardcontroller/listeners/KeyboardAnimationCallback.kt +++ b/android/src/main/java/com/reactnativekeyboardcontroller/listeners/KeyboardAnimationCallback.kt @@ -18,11 +18,11 @@ import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.UIManagerHelper import com.facebook.react.views.textinput.ReactEditText import com.facebook.react.views.view.ReactViewGroup -import com.reactnativekeyboardcontroller.InteractiveKeyboardProvider import com.reactnativekeyboardcontroller.events.KeyboardTransitionEvent import com.reactnativekeyboardcontroller.extensions.dispatchEvent import com.reactnativekeyboardcontroller.extensions.dp import com.reactnativekeyboardcontroller.extensions.isKeyboardAnimation +import com.reactnativekeyboardcontroller.interactive.InteractiveKeyboardProvider import kotlin.math.abs private val TAG = KeyboardAnimationCallback::class.qualifiedName diff --git a/android/src/main/java/com/reactnativekeyboardcontroller/views/KeyboardGestureAreaReactViewGroup.kt b/android/src/main/java/com/reactnativekeyboardcontroller/views/KeyboardGestureAreaReactViewGroup.kt index 68e44ff142..d13c879b15 100644 --- a/android/src/main/java/com/reactnativekeyboardcontroller/views/KeyboardGestureAreaReactViewGroup.kt +++ b/android/src/main/java/com/reactnativekeyboardcontroller/views/KeyboardGestureAreaReactViewGroup.kt @@ -11,11 +11,11 @@ import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.views.view.ReactViewGroup -import com.reactnativekeyboardcontroller.KeyboardAnimationController import com.reactnativekeyboardcontroller.extensions.copyBoundsInWindow -import com.reactnativekeyboardcontroller.interpolators.Interpolator -import com.reactnativekeyboardcontroller.interpolators.IosInterpolator -import com.reactnativekeyboardcontroller.interpolators.LinearInterpolator +import com.reactnativekeyboardcontroller.interactive.KeyboardAnimationController +import com.reactnativekeyboardcontroller.interactive.interpolators.Interpolator +import com.reactnativekeyboardcontroller.interactive.interpolators.IosInterpolator +import com.reactnativekeyboardcontroller.interactive.interpolators.LinearInterpolator import kotlin.math.absoluteValue import kotlin.math.roundToInt