From 1196eb6cc50307c616d88bbed90587641d92b251 Mon Sep 17 00:00:00 2001 From: andrekir Date: Fri, 29 Jul 2022 21:28:09 -0300 Subject: [PATCH] improve room database flow --- .../geeksville/mesh/database/DatabaseModule.kt | 14 ++++---------- .../mesh/database/MeshtasticDatabase.kt | 15 +++++++++++++++ .../java/com/geeksville/mesh/ui/DebugFragment.kt | 10 +++------- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/database/DatabaseModule.kt b/app/src/main/java/com/geeksville/mesh/database/DatabaseModule.kt index ec8d4cb24..1f2732ddf 100644 --- a/app/src/main/java/com/geeksville/mesh/database/DatabaseModule.kt +++ b/app/src/main/java/com/geeksville/mesh/database/DatabaseModule.kt @@ -1,26 +1,20 @@ package com.geeksville.mesh.database import android.app.Application -import androidx.room.Room import com.geeksville.mesh.database.dao.PacketDao import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton @InstallIn(SingletonComponent::class) @Module class DatabaseModule { @Provides - fun provideDatabase(application: Application): MeshtasticDatabase { - return Room.databaseBuilder( - application.applicationContext, - MeshtasticDatabase::class.java, - "meshtastic_database" - ) - .fallbackToDestructiveMigration() - .build() - } + @Singleton + fun provideDatabase(app: Application): MeshtasticDatabase = + MeshtasticDatabase.getDatabase(app) @Provides fun providePacketDao(database: MeshtasticDatabase): PacketDao { diff --git a/app/src/main/java/com/geeksville/mesh/database/MeshtasticDatabase.kt b/app/src/main/java/com/geeksville/mesh/database/MeshtasticDatabase.kt index b8857a51a..6d11eb1c3 100644 --- a/app/src/main/java/com/geeksville/mesh/database/MeshtasticDatabase.kt +++ b/app/src/main/java/com/geeksville/mesh/database/MeshtasticDatabase.kt @@ -1,6 +1,8 @@ package com.geeksville.mesh.database +import android.content.Context import androidx.room.Database +import androidx.room.Room import androidx.room.RoomDatabase import com.geeksville.mesh.database.dao.PacketDao import com.geeksville.mesh.database.entity.Packet @@ -8,4 +10,17 @@ import com.geeksville.mesh.database.entity.Packet @Database(entities = [Packet::class], version = 1, exportSchema = false) abstract class MeshtasticDatabase : RoomDatabase() { abstract fun packetDao(): PacketDao + + companion object { + fun getDatabase(context: Context): MeshtasticDatabase { + + return Room.databaseBuilder( + context.applicationContext, + MeshtasticDatabase::class.java, + "meshtastic_database" + ) + .fallbackToDestructiveMigration() + .build() + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/geeksville/mesh/ui/DebugFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/DebugFragment.kt index ee8e84518..c75a3179b 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/DebugFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/DebugFragment.kt @@ -5,7 +5,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment -import androidx.fragment.app.viewModels +import androidx.fragment.app.activityViewModels import androidx.lifecycle.asLiveData import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -22,19 +22,15 @@ class DebugFragment : Fragment() { // This property is only valid between onCreateView and onDestroyView. private val binding get() = _binding!! - // FIXME hacky way to grab packets re-creating UIViewModel instead of using activityViewModels() - private val model: UIViewModel by viewModels() + private val model: UIViewModel by activityViewModels() override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { + ): View { _binding = DebugFragmentBinding.inflate(inflater, container, false) return binding.root } - //Button to clear All log - - //List all log override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState)