java.lang.IllegalStateException: Database directory is not writable
at com.ethran.notable.data.DbUtilsKt.getDbDir(dbUtils.kt:25)
at com.ethran.notable.data.db.DatabaseModule.provideDatabase(Db.kt:123)
at com.ethran.notable.data.db.DatabaseModule_ProvideDatabaseFactory.provideDatabase(DatabaseModule_ProvideDatabaseFactory.java:45)
at com.ethran.notable.DaggerNotableApp_HiltComponents_SingletonC$SingletonCImpl$SwitchingProvider.get(DaggerNotableApp_HiltComponents_SingletonC.java:893)
at dagger.internal.DoubleCheck.getSynchronized(DoubleCheck.java:54)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:45)
at com.ethran.notable.DaggerNotableApp_HiltComponents_SingletonC$SingletonCImpl.notebookDao(DaggerNotableApp_HiltComponents_SingletonC.java:775)
at com.ethran.notable.DaggerNotableApp_HiltComponents_SingletonC$SingletonCImpl.bookRepository(DaggerNotableApp_HiltComponents_SingletonC.java:779)
at com.ethran.notable.DaggerNotableApp_HiltComponents_SingletonC$SingletonCImpl$SwitchingProvider.get(DaggerNotableApp_HiltComponents_SingletonC.java:896)
at dagger.internal.DoubleCheck.getSynchronized(DoubleCheck.java:54)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:45)
at com.ethran.notable.DaggerNotableApp_HiltComponents_SingletonC$SingletonCImpl$SwitchingProvider.get(DaggerNotableApp_HiltComponents_SingletonC.java:920)
at dagger.internal.DoubleCheck.getSynchronized(DoubleCheck.java:54)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:45)
at com.ethran.notable.MainActivity.onCreate$lambda$0$4$0(MainActivity.kt:131)
at com.ethran.notable.MainActivity.$r8$lambda$ICeUWKrgd0PbvArwTvA9d7LL-8E(:0)
at com.ethran.notable.MainActivity$$ExternalSyntheticLambda0.invoke(D8$$SyntheticClass:0)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:122)
at androidx.compose.runtime.internal.ComposableLambdaImpl$invoke$1.invoke(ComposableLambda.kt:123)
at androidx.compose.runtime.internal.ComposableLambdaImpl$invoke$1.invoke(ComposableLambda.kt:123)
at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:201)
at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(ComposerImpl.kt:1691)
at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(ComposerImpl.kt:2027)
at androidx.compose.runtime.ComposerImpl.doCompose-aFTiNEg(ComposerImpl.kt:2664)
at androidx.compose.runtime.ComposerImpl.recompose-aFTiNEg$runtime(ComposerImpl.kt:2588)
at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:1080)
at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:1406)
at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:159)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2.invokeSuspend$lambda$2(Recomposer.kt:638)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$$ExternalSyntheticLambda0.invoke(D8$$SyntheticClass:0)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:39)
at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:108)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1027)
at android.view.Choreographer.doCallbacks(Choreographer.java:852)
at android.view.Choreographer.doFrame(Choreographer.java:783)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1014)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7583)
at java.lang.reflect.Method.invoke(Method.java:-2)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)
v0.2.1