dropbox / kaiken

User scoping library for Android applications.
Apache License 2.0
69 stars 11 forks source link

Better error message for missing InjectorHolder #164

Closed joshafeinberg closed 2 years ago

joshafeinberg commented 2 years ago

Currently if I mark an activity as @Injectable but I do not provide an InjectorHolder I get an error

e: java.lang.IllegalStateException: The class MainActivity does not implement DependencyProviderResolver
        at com.dropbox.kaiken.processor.InjectableActivityValidatorKt.validateActivity(InjectableActivityValidator.kt:35)
        at com.dropbox.kaiken.processor.InjectableCodeGenerator$mapper$1.invoke(InjectableCodeGenerator.kt:63)
        at com.dropbox.kaiken.processor.InjectableCodeGenerator$mapper$1.invoke(InjectableCodeGenerator.kt:50)

This is confusing because I do implement DependencyProviderResolver by using AuthOptionalActivity but I do not have an InjectorHolder. Even the code for the error checks for InjectorHolder and not DependencyProviderResolver (https://github.com/dropbox/kaiken/blob/main/processor/src/main/java/com/dropbox/kaiken/processor/InjectableActivityValidator.kt#L46)

We should probably update the error to be more understandable