AniTrend / anitrend-v2

Rewrite project for AniTrend 🔥
GNU General Public License v3.0
45 stars 6 forks source link

[feature-auth] Broken observers for emitting new intent events between shared view model #552

Closed wax911 closed 5 months ago

wax911 commented 5 months ago

AniTrend Issue Guidelines

Before opening a new issue, please take a moment to review our community guidelines to make the contribution process easy and effective for everyone involved.

You may find an answer in closed issues: https://github.com/AniTrend/anitrend-v2/issues?q=is%3Aissue+is%3Aclosed

Description of Bug

While authentication work prior to this, I am not sure when it broke nor what broke it, could either be coroutines, koin-android (shared viewmodels) or androidx.lifecycle that broke it.

Device & Build Information

Applies to all latest builds

Download Source:

Additional Context

Maybe worth investigating: https://github.com/AniTrend/anitrend-v2/pull/507 & https://github.com/AniTrend/anitrend-v2/pull/494

wax911 commented 5 months ago

Upon initial investigation it is apparent that the sharedViewModel or activityViewModel returns different instance between the parent activity and the child fragment:

2024-03-26 10:44:13.670  8030-8030  [Koin]                  co.anitrend                          D  (+) index 'co.anitrend.auth.component.viewmodel.AuthViewModel::_root_' -> '[Factory:'co.anitrend.auth.component.viewmodel.AuthViewModel']'
2024-03-26 10:48:26.782  8030-8030  [Koin]                  co.anitrend                          D  |- 'co.anitrend.auth.component.viewmodel.AuthViewModel' ...
2024-03-26 10:48:26.782  8030-8030  [Koin]                  co.anitrend                          D  |- ? t:'co.anitrend.auth.component.viewmodel.AuthViewModel' - q:'null' look in injected parameters
2024-03-26 10:48:26.783  8030-8030  [Koin]                  co.anitrend                          D  |- ? t:'co.anitrend.auth.component.viewmodel.AuthViewModel' - q:'null' look at scope source
2024-03-26 10:48:26.783  8030-8030  [Koin]                  co.anitrend                          D  |- ? t:'co.anitrend.auth.component.viewmodel.AuthViewModel' - q:'null' look in other scopes
2024-03-26 10:48:26.783  8030-8030  [Koin]                  co.anitrend                          D  |- 'co.anitrend.auth.component.viewmodel.AuthViewModel' ...
2024-03-26 10:48:26.783  8030-8030  [Koin]                  co.anitrend                          D  | (+) '[Factory:'co.anitrend.auth.component.viewmodel.AuthViewModel']'
2024-03-26 10:48:26.803  8030-8030  [Koin]                  co.anitrend                          D  |- 'co.anitrend.auth.component.viewmodel.AuthViewModel' in 20.083463 ms
2024-03-26 10:48:26.803  8030-8030  [Koin]                  co.anitrend                          D  |- 'co.anitrend.auth.component.viewmodel.AuthViewModel' in 21.12692 ms
2024-03-26 10:48:26.804  8030-8030  AuthScreen              co.anitrend                          D  co.anitrend.auth.component.viewmodel.AuthViewModel@edf5102
2024-03-26 10:48:26.877  8030-8030  [Koin]                  co.anitrend                          D  |- 'co.anitrend.auth.component.viewmodel.AuthViewModel' ...
2024-03-26 10:48:26.877  8030-8030  [Koin]                  co.anitrend                          D  |- ? t:'co.anitrend.auth.component.viewmodel.AuthViewModel' - q:'null' look in injected parameters
2024-03-26 10:48:26.877  8030-8030  [Koin]                  co.anitrend                          D  |- ? t:'co.anitrend.auth.component.viewmodel.AuthViewModel' - q:'null' look at scope source
2024-03-26 10:48:26.878  8030-8030  [Koin]                  co.anitrend                          D  |- ? t:'co.anitrend.auth.component.viewmodel.AuthViewModel' - q:'null' look in other scopes
2024-03-26 10:48:26.878  8030-8030  [Koin]                  co.anitrend                          D  |- 'co.anitrend.auth.component.viewmodel.AuthViewModel' ...
2024-03-26 10:48:26.879  8030-8030  [Koin]                  co.anitrend                          D  | (+) '[Factory:'co.anitrend.auth.component.viewmodel.AuthViewModel']'
2024-03-26 10:48:26.900  8030-8030  [Koin]                  co.anitrend                          D  |- 'co.anitrend.auth.component.viewmodel.AuthViewModel' in 21.447902 ms
2024-03-26 10:48:26.900  8030-8030  [Koin]                  co.anitrend                          D  |- 'co.anitrend.auth.component.viewmodel.AuthViewModel' in 22.943066 ms
2024-03-26 10:48:26.901  8030-8030  AuthContent             co.anitrend                          D  co.anitrend.auth.component.viewmodel.AuthViewModel@ed61a0c
wax911 commented 5 months ago

Confirmed to be related to koin 3.5.3, upon downgrading I and retesting I've confirmed to have fixed the issue

2024-03-26 15:13:05.022 21511-21511 [Koin]                  co.anitrend                          D  |- 'co.anitrend.auth.component.viewmodel.AuthViewModel' ...
2024-03-26 15:13:05.023 21511-21511 [Koin]                  co.anitrend                          D  |- ? t:'co.anitrend.auth.component.viewmodel.AuthViewModel' - q:'null' look in injected parameters
2024-03-26 15:13:05.023 21511-21511 [Koin]                  co.anitrend                          D  |- ? t:'co.anitrend.auth.component.viewmodel.AuthViewModel' - q:'null' look at scope source
2024-03-26 15:13:05.023 21511-21511 [Koin]                  co.anitrend                          D  |- ? t:'co.anitrend.auth.component.viewmodel.AuthViewModel' - q:'null' look in other scopes
2024-03-26 15:13:05.024 21511-21511 [Koin]                  co.anitrend                          D  |- 'co.anitrend.auth.component.viewmodel.AuthViewModel' ...
2024-03-26 15:13:05.024 21511-21511 [Koin]                  co.anitrend                          D  | (+) '[Factory:'co.anitrend.auth.component.viewmodel.AuthViewModel']'
2024-03-26 15:13:05.047 21511-21511 [Koin]                  co.anitrend                          D  |- 'co.anitrend.auth.component.viewmodel.AuthViewModel' in 23.052371 ms
2024-03-26 15:13:05.047 21511-21511 [Koin]                  co.anitrend                          D  |- 'co.anitrend.auth.component.viewmodel.AuthViewModel' in 24.343733 ms
2024-03-26 15:13:05.047 21511-21511 AuthScreen              co.anitrend                          D  co.anitrend.auth.component.viewmodel.AuthViewModel@edf5102
2024-03-26 15:13:05.117 21511-21511 AuthContent             co.anitrend                          D  AuthContent{bb79e05} (82608ae1-5931-4401-a729-a8282ec7b594 id=0x7f0a02ea tag=AuthContent) -> co.anitrend.auth.component.viewmodel.AuthViewModel@edf5102
2024-03-26 15:13:29.414 21511-21511 LeakCanary              co.anitrend                          D  Watching instance of co.anitrend.auth.component.viewmodel.AuthViewModel (co.anitrend.auth.component.viewmodel.AuthViewModel received ViewModel#onCleared() callback) with key 019716d5-5abf-42e8-ab8f-c49a142aa863
wax911 commented 5 months ago

See: https://github.com/InsertKoinIO/koin/issues/1831