Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Resolve circular dependencies on JS side #2970

Merged
merged 22 commits into from
Jul 2, 2024

Conversation

latekvo
Copy link
Contributor

@latekvo latekvo commented Jun 28, 2024

This PR removes circular dependencies found via:

yarn madge --extensions js,ts,tsx --circular src

@latekvo latekvo marked this pull request as ready for review July 1, 2024 13:06
@latekvo latekvo requested review from m-bert and j-piasecki July 1, 2024 13:06
Copy link
Contributor

@m-bert m-bert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, let's hear what @j-piasecki has to say 😅

src/RNGestureHandlerModule.web.ts Outdated Show resolved Hide resolved
src/RNGestureHandlerModule.web.ts Outdated Show resolved Hide resolved
src/components/GestureButtonsProps.tsx Outdated Show resolved Hide resolved
src/components/GestureButtons.tsx Outdated Show resolved Hide resolved
src/handlers/FlingGestureHandler.ts Outdated Show resolved Hide resolved
src/components/touchables/GenericTouchableProps.tsx Outdated Show resolved Hide resolved
src/web_hammer/NodeManager.ts Show resolved Hide resolved
src/handlers/gestureCommonUtils.ts Outdated Show resolved Hide resolved
src/handlers/handlerTag.ts Outdated Show resolved Hide resolved
@latekvo latekvo requested review from j-piasecki and m-bert July 2, 2024 07:48
@j-piasecki
Copy link
Member

@m-bert I think you mentioned adding a CI workflow dedicated to making sure we don't introduce another cycle by accident, is that happening?

@m-bert
Copy link
Contributor

m-bert commented Jul 2, 2024

@j-piasecki Yes, I did mention adding CI workflow 😅 In order for it to make sense we have to get rid of all circular dependencies. At the beginning we didn't care that much about the one connected with Hammer, so it was postponed. Now that I see that we did remove all circular dependencies, I think adding CI workflow would be good idea.

Also, we could add it to pre-commit hook, let me know what do you think.

@latekvo could you add this workflow?

@latekvo
Copy link
Contributor Author

latekvo commented Jul 2, 2024

@m-bert alright, should I add it to this PR, or do you think it deserves one of it's own?

@m-bert
Copy link
Contributor

m-bert commented Jul 2, 2024

I think it would be nice to add it in this PR 😅

@latekvo
Copy link
Contributor Author

latekvo commented Jul 2, 2024

New madge workflow

image

Comment on lines 32 to 33
- name: Check for circular dependencies
run: yarn madge --extensions js,ts,tsx --circular src
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be possible to add script in our package.json and then use it here? Like yarn circular-dependency-check. This way it would be easier to run this in our repo (we wouldn't have to remember all those arguments and so on).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, will do

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

don't we want a script for both the JS and the native side in this case?
or is this a bit far fetched for now?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is madge capable of doing such things?

Also keep in mind that in order to add this script we would have to have 0 circular dependencies on native side (I don't say we have them, that's something that we have to check).

So in conclusion, it would be great to have such script for native, but not in this PR.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Although madge likely won't work, for kotlin there is a tool called Classycle which could be made into a workflow.

But of course, i don't think doing this in this PR would be a good idea either 😄
I was just asking if it was something you'd like to be done.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it could be done, though first, it would be great to check how many of them are in the codebase to have an idea of the effort it would take.

package.json Outdated
@@ -15,7 +15,8 @@
"lint:js": "eslint --ext '.js,.ts,.tsx' src/ example/src FabricExample/src MacOSExample/src && yarn prettier --check './{src,example,FabricExample,MacOSExample}/**/*.{js,jsx,ts,tsx}'",
"lint:js-root": "eslint --ext '.js,.ts,.tsx' src/ && yarn prettier --check './src/**/*.{js,jsx,ts,tsx}'",
"lint:android": "./android/gradlew -p android spotlessCheck -q",
"checkIntegrity": "(cd ./FabricExample/android && ./gradlew generateCodegenArtifactsFromSchema -PskipCodegenCopyTask) && (cd ./android && ./gradlew checkIntegrityBetweenArchitectures)"
"checkIntegrity": "(cd ./FabricExample/android && ./gradlew generateCodegenArtifactsFromSchema -PskipCodegenCopyTask) && (cd ./android && ./gradlew checkIntegrityBetweenArchitectures)",
"checkForCircularDependencies": "yarn madge --extensions js,ts,tsx --circular src"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"checkForCircularDependencies": "yarn madge --extensions js,ts,tsx --circular src"
"circularDependencyCheck": "yarn madge --extensions js,ts,tsx --circular src"

I think it is enough, we don't have to overcomplicate that name. Also I think using - as separator is more readable than camelCase, but since we have checkIntegrity script we can leave that (or we can change both, cc @j-piasecki)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, i agree but preferred to follow the convention instead of having both cases in a single filename next to eachother.

Same for the name, but since you prefer the latter one, I'll change it.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, I get what you mean by "same for the name" 😅 Currently we have only one script that starts with check so I think it is a bit different compared to - and camelCase. Starting with check prefix isn't that bad, but having many scripts starting with the same prefix would make tab autocomplete a bit frustrating 😅

This is a topic for discussion and I think that following Reanimated convention would be better, but let's hear @j-piasecki opinion on that.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can merge it as is, but create a follow-up that will take care of this, given that we already have a ts-check script (to use dashes instead of camelCase).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

alright

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@latekvo latekvo merged commit 8290ad4 into main Jul 2, 2024
2 checks passed
@latekvo latekvo deleted the @latekvo/resolve-circular-dependencies branch July 2, 2024 12:31
github-merge-queue bot pushed a commit to valora-inc/wallet that referenced this pull request Aug 6, 2024
…5714)

[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[react-native-gesture-handler](https://github.com/software-mansion/react-native-gesture-handler)
| [`^2.17.1` ->
`^2.18.1`](https://renovatebot.com/diffs/npm/react-native-gesture-handler/2.17.1/2.18.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/react-native-gesture-handler/2.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-native-gesture-handler/2.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-native-gesture-handler/2.17.1/2.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-native-gesture-handler/2.17.1/2.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>software-mansion/react-native-gesture-handler
(react-native-gesture-handler)</summary>

###
[`v2.18.1`](https://github.com/software-mansion/react-native-gesture-handler/releases/tag/2.18.1)

[Compare
Source](https://github.com/software-mansion/react-native-gesture-handler/compare/2.18.0...2.18.1)

#### 🐛 Bug fixes

- Fix build on RN 0.74 by [@&#8203;m-bert](https://github.com/m-bert)
in
[software-mansion/react-native-gesture-handler#3024

#### What's Changed

- Bump ws from 6.2.2 to 6.2.3 in /example by
[@&#8203;dependabot](https://github.com/dependabot) in
[software-mansion/react-native-gesture-handler#3003
- Bump requirejs from 2.3.6 to 2.3.7 by
[@&#8203;dependabot](https://github.com/dependabot) in
[software-mansion/react-native-gesture-handler#3009
- Bump fast-xml-parser from 4.2.5 to 4.4.1 by
[@&#8203;dependabot](https://github.com/dependabot) in
[software-mansion/react-native-gesture-handler#3016
- Bump ws from 6.2.2 to 6.2.3 in /docs by
[@&#8203;dependabot](https://github.com/dependabot) in
[software-mansion/react-native-gesture-handler#3021
- Add documentation page for `Pressable` component by
[@&#8203;latekvo](https://github.com/latekvo) in
[software-mansion/react-native-gesture-handler#2992
- Add docs page for Reanimated Swipeable by
[@&#8203;latekvo](https://github.com/latekvo) in
[software-mansion/react-native-gesture-handler#2962

**Full Changelog**:
software-mansion/react-native-gesture-handler@2.18.0...2.18.1

###
[`v2.18.0`](https://github.com/software-mansion/react-native-gesture-handler/releases/tag/2.18.0)

[Compare
Source](https://github.com/software-mansion/react-native-gesture-handler/compare/2.17.1...2.18.0)

#### ❗ Important changes

- Create a separate component out of the new Swipeable row by
[@&#8203;latekvo](https://github.com/latekvo) in
[software-mansion/react-native-gesture-handler#2936
- Create gesturized pressable component by
[@&#8203;latekvo](https://github.com/latekvo) in
[software-mansion/react-native-gesture-handler#2942,
[software-mansion/react-native-gesture-handler#2977,
[software-mansion/react-native-gesture-handler#2982,
[software-mansion/react-native-gesture-handler#2981
- Support for React Native 0.75 by
[@&#8203;j-piasecki](https://github.com/j-piasecki) in
[software-mansion/react-native-gesture-handler#2966

#### 👍 Improvements

- \[macOS] Add `ForceTouch` warning by
[@&#8203;m-bert](https://github.com/m-bert) in
[software-mansion/react-native-gesture-handler#2954
- Remove shared value read on the JS thread during detector update by
[@&#8203;j-piasecki](https://github.com/j-piasecki) in
[software-mansion/react-native-gesture-handler#2957
- Use a newer constructor for all Gesture Handler events on Android by
[@&#8203;j-piasecki](https://github.com/j-piasecki) in
[software-mansion/react-native-gesture-handler#2967
- Persist rotation and pinch gesture through pointer changes on android
by [@&#8203;coado](https://github.com/coado) in
[software-mansion/react-native-gesture-handler#2983
- \[macOS] Add `NativeViewGestureHandler` by
[@&#8203;m-bert](https://github.com/m-bert) in
[software-mansion/react-native-gesture-handler#3004
- Add `enabled` prop support to swipeable by
[@&#8203;latekvo](https://github.com/latekvo) in
[software-mansion/react-native-gesture-handler#3011

#### 🐛 Bug fixes

- Make handler comparator work only on non-null objects by
[@&#8203;j-piasecki](https://github.com/j-piasecki) in
[software-mansion/react-native-gesture-handler#2964
- fix: bind scope to null to prevent issues with inline requires by
[@&#8203;EvanBacon](https://github.com/EvanBacon) in
[software-mansion/react-native-gesture-handler#2972
- Replace `queueMicrotask` with `requestAnimationFrame` by
[@&#8203;m-bert](https://github.com/m-bert) in
[software-mansion/react-native-gesture-handler#2969
- Resolve circular dependencies on JS side by
[@&#8203;latekvo](https://github.com/latekvo) in
[software-mansion/react-native-gesture-handler#2970
- Fix Android native buttons emitting 2 press events when talkback is
enabled by [@&#8203;latekvo](https://github.com/latekvo) in
[software-mansion/react-native-gesture-handler#3002
- Fix `ScrollView` intercepting touches through out-of-bounds children
by [@&#8203;j-piasecki](https://github.com/j-piasecki) in
[software-mansion/react-native-gesture-handler#3017
- Change `onPress` argument in buttons by
[@&#8203;m-bert](https://github.com/m-bert) in
[software-mansion/react-native-gesture-handler#3006
- \[macOS] Fix handlers not responding after opening context menu by
[@&#8203;m-bert](https://github.com/m-bert) in
[software-mansion/react-native-gesture-handler#3008
- \[iOS | macOS] Fix translation calculation in `LongPress` by
[@&#8203;m-bert](https://github.com/m-bert) in
[software-mansion/react-native-gesture-handler#3013
- Fix cancelling manual activation gestures blocking interactivity on
iOS by [@&#8203;latekvo](https://github.com/latekvo) in
[software-mansion/react-native-gesture-handler#3007

#### 🔢 Miscellaneous

- Bump ws from 6.2.2 to 6.2.3 in /FabricExample by
[@&#8203;dependabot](https://github.com/dependabot) in
[software-mansion/react-native-gesture-handler#2949
- Bump braces from 3.0.2 to 3.0.3 in /MacOSExample by
[@&#8203;dependabot](https://github.com/dependabot) in
[software-mansion/react-native-gesture-handler#2956
- docs: bump `@swmansion/t-rex-ui` to 0.0.12 by
[@&#8203;patrycjakalinska](https://github.com/patrycjakalinska) in
[software-mansion/react-native-gesture-handler#2958
- Bump braces from 3.0.2 to 3.0.3 in /FabricExample by
[@&#8203;dependabot](https://github.com/dependabot) in
[software-mansion/react-native-gesture-handler#2965
- Set consistent prettier version across all package.jsons by
[@&#8203;latekvo](https://github.com/latekvo) in
[software-mansion/react-native-gesture-handler#2971
- Change naming scheme in package.json from camelCase to dash-case by
[@&#8203;latekvo](https://github.com/latekvo) in
[software-mansion/react-native-gesture-handler#2973
- Unify comments and simplify some conditions. by
[@&#8203;m-bert](https://github.com/m-bert) in
[software-mansion/react-native-gesture-handler#2984
- docs: Update Expo installation instructions by
[@&#8203;amandeepmittal](https://github.com/amandeepmittal) in
[software-mansion/react-native-gesture-handler#2991
- Bump fast-loops from 1.1.3 to 1.1.4 in /docs by
[@&#8203;dependabot](https://github.com/dependabot) in
[software-mansion/react-native-gesture-handler#2986
- Remove plural form in docs by
[@&#8203;m-bert](https://github.com/m-bert) in
[software-mansion/react-native-gesture-handler#2995
- Bump fast-loops from 1.1.3 to 1.1.4 in /example by
[@&#8203;dependabot](https://github.com/dependabot) in
[software-mansion/react-native-gesture-handler#2994
- Don't run old arch integrity check on every PR by
[@&#8203;j-piasecki](https://github.com/j-piasecki) in
[software-mansion/react-native-gesture-handler#2998
- docs: fix footer on landing by
[@&#8203;patrycjakalinska](https://github.com/patrycjakalinska) in
[software-mansion/react-native-gesture-handler#2997
- docs: Replace HireUsSection with `@swmansion/t-rex-ui` component by
[@&#8203;patrycjakalinska](https://github.com/patrycjakalinska) in
[software-mansion/react-native-gesture-handler#2996
- Mention `drawerWillShow` in `DrawerLayout` docs by
[@&#8203;m-bert](https://github.com/m-bert) in
[software-mansion/react-native-gesture-handler#3000
- chore: Refactor gradle task to JS scripts by
[@&#8203;maciekstosio](https://github.com/maciekstosio) in
[software-mansion/react-native-gesture-handler#3001
- Update dependencies related to tests by
[@&#8203;j-piasecki](https://github.com/j-piasecki) in
[software-mansion/react-native-gesture-handler#3005
- \[macOS] Switch `hasPointerInside` to `containsPointInView` by
[@&#8203;m-bert](https://github.com/m-bert) in
[software-mansion/react-native-gesture-handler#3012

#### New Contributors

- [@&#8203;coado](https://github.com/coado) made their first
contribution in
[software-mansion/react-native-gesture-handler#2983
- [@&#8203;amandeepmittal](https://github.com/amandeepmittal) made
their first contribution in
[software-mansion/react-native-gesture-handler#2991

**Full Changelog**:
software-mansion/react-native-gesture-handler@2.17.0...2.18.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 5pm,every weekend" in timezone
America/Los_Angeles, Automerge - "after 5pm,every weekend" in timezone
America/Los_Angeles.

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View the
[repository job
log](https://developer.mend.io/github/valora-inc/wallet).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJucG0iLCJyZW5vdmF0ZSJdfQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: valora-bot <valorabot@valoraapp.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants