firebase / FirebaseUI-Flutter

Apache License 2.0
91 stars 79 forks source link

🐛 Weird circular dependency between `firebase_ui_auth` and `firebase_ui_oauth` #266

Open tapizquent opened 5 months ago

tapizquent commented 5 months ago

Is there an existing issue for this?

What plugin is this bug for?

Firebase UI Auth, Firebase UI OAuth

What platform(s) does this bug affect?

Android, iOS, Web, macOS, Linux, Windows

List of dependencies used.

flutter pub deps -s list
  

Steps to reproduce

I was trying to make a change to the firebase_ui_auth package to change some colors (that are not configurable and look hideous on dark mode btw, please view #18) , but when I made the change, I noticed that it kept failing on me with

Because firebase_ui_oauth 1.4.17 depends on firebase_ui_auth ^1.12.1 and no versions of firebase_ui_oauth match >1.4.17 <2.0.0, firebase_ui_oauth ^1.4.17 requires firebase_ui_auth from hosted.
So, because award_ace depends on firebase_ui_auth from git which depends on firebase_ui_oauth ^1.4.17, version solving failed.
exit code 1

Upon closer inspection, I noticed that firebase_ui_auth depends on firebase_ui_oauth: ^1.4.17 and firebase_ui_oauth depends on firebase_ui_auth: ^1.12.1. This seems like a weird circular dependency and anti-pattern. To me, having a package depend on one but it depend on the other doesn't seem like a great approach, and causes issue when trying to do what I am trying to do.

Could someone please explain why this is?? Which definitely seems like a bug

Expected Behavior

No circular dependency here. Both should potentially depend on firebase_ui_shared which they already do.

Actual Behavior

Circular dependency

Additional Information

No response

danagbemava-nc commented 5 months ago

Hi @tapizquent, can you provide the steps to reproduce the issue? Pub usually is able to resolve the dependencies by itself. When I added both plugins into a new project it worked without any issue

tapizquent commented 5 months ago

Hey @danagbemava-nc

It is good to know that I am not publishing the package through Pub because I am accessing just my fork from my git url.

Steps are:

You will see the error complaining that the package depends on firebase_ui_oauth and thus must be imported from hosted

Anyway, my concern still applies. Why are these packages depending on each other? Doesn't seem very intuitive

danagbemava-nc commented 5 months ago

I can't say for sure why they depend on each other but I can reproduce the issue.

Labeling for further investigation

cc @lesnitsky