How can I make it possible to pass database Instance to the MyFirebaseMessagingService
class which extends FirebaseMessagingService
so that I can save data
payload locally?
Note: I already setup dagger 2 in my app, it's working perfectly.
Below is MyFirebaseMessagingService
class:
class MyFirebaseMessagingService @Inject constructor(exampleOneDao: ExampleOneDao?) : FirebaseMessagingService() {
override fun onMessageReceived(remoteMessage: RemoteMessage?) {
//need db instance to store data payload locally (Room)
}
}
And below is the AppModule
class of Dagger 2
@Module(includes = arrayOf(ViewModelModule::class))
class AppModule() {
// --- DATABASE INJECTION ---
@Provides
@Singleton
internal fun provideDatabase(application: Application): MyDatabase {
return Room.databaseBuilder(application,
MyDatabase::class.java, "MyDatabase.db")
.build()
}
@Provides
@Singleton
internal fun provideExampleOneDao(database: MyDatabase): ExampleOneDao {
return database.exampleOneDao()
}
@Provides
@Singleton
internal fun provideMyFirebaseMessagingService(exampleOneDao:
ExampleOneDao): MyFirebaseMessagingService {
return MyFirebaseMessagingService(exampleOneDao)
}
}
Is it possible to provide database and dao to MyFirebaseMessagingService
class?
I tried above method to provide exampleOneDao
to the MyFirebaseMessagingService
class, but it throws the following Exception
MyFirebaseMessagingService: java.lang.InstantiationException: java.lang.Class<com.example.user.app.firebase.messaging.MyFirebaseMessagingService> has no zero argument constructor
Thank You.