Fix: Fixed a few database bugs

This commit is contained in:
HeCodes2Much
2024-05-26 07:58:55 +01:00
parent a598ae6362
commit c998942895
6 changed files with 37 additions and 38 deletions

View File

@@ -7,11 +7,10 @@ import android.widget.Toast
import androidx.fragment.app.Fragment
fun Fragment.showKeyboard() {
val imm = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager
view?.let { v ->
v.requestFocus()
imm?.showSoftInput(v, InputMethodManager.SHOW_IMPLICIT)
}
val view = view?.findFocus() ?: return
val imm = view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
@Suppress("DEPRECATION")
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY)
}
fun Fragment.hideKeyboard() {

View File

@@ -54,10 +54,10 @@ inline fun EditText.setHideKeyboardEditorActionListener(crossinline onAction: (I
}
fun View.showKeyboard() {
val imm = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager
this.let { v ->
v.requestFocus()
imm?.showSoftInput(v, InputMethodManager.SHOW_IMPLICIT)
if (this.requestFocus()) {
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
@Suppress("DEPRECATION")
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY)
}
}

View File

@@ -6,7 +6,7 @@ import androidx.room.RoomDatabase
import com.github.droidworksstudio.launcher.data.dao.AppInfoDAO
import com.github.droidworksstudio.launcher.data.entities.AppInfo
@Database(entities = [AppInfo::class], version = 1)
@Database(entities = [AppInfo::class], version = 1, exportSchema = false)
abstract class AppDatabase : RoomDatabase() {
abstract fun appDao(): AppInfoDAO
}

View File

@@ -1,6 +1,5 @@
package com.github.droidworksstudio.launcher.data.dao
import android.util.Log
import androidx.room.*
import com.github.droidworksstudio.launcher.data.entities.AppInfo
@@ -10,20 +9,23 @@ import kotlinx.coroutines.flow.Flow
interface AppInfoDAO {
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insert(app: AppInfo)
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insertAll(apps: List<AppInfo>)
@Update
suspend fun update(app: AppInfo)
@Delete
suspend fun delete(app: AppInfo)
@Query("SELECT * FROM app ORDER BY app_name ASC")
@Query("SELECT * FROM app ORDER BY app_name COLLATE NOCASE ASC")
fun getAllApps(): List<AppInfo>
@Query("SELECT * FROM app ORDER BY app_name ASC")
@Query("SELECT * FROM app ORDER BY app_name COLLATE NOCASE ASC")
fun getAllAppsFlow(): Flow<List<AppInfo>>
@Query("SELECT * FROM app WHERE is_hidden = 0 ORDER BY app_name ASC")
@Query("SELECT * FROM app WHERE is_hidden = 0 ORDER BY app_name COLLATE NOCASE ASC")
fun getDrawAppsFlow(): Flow<List<AppInfo>>
@Query("SELECT * FROM app WHERE is_favorite = 1 ORDER BY app_order ASC, id ASC")
@@ -35,11 +37,11 @@ interface AppInfoDAO {
@Query("SELECT * FROM app WHERE is_lock = 1 ORDER BY app_order ASC")
fun getLockAppsFlow(): Flow<List<AppInfo>>
@Query("SELECT * FROM app WHERE app_name LIKE :query AND is_hidden = 0")
@Query("SELECT * FROM app WHERE app_name LIKE :query COLLATE NOCASE AND is_hidden = 0")
fun searchApps(query: String?): Flow<List<AppInfo>>
@Update
fun updateAppInfo(appInfo: AppInfo)
suspend fun updateAppInfo(appInfo: AppInfo)
@Update
suspend fun updateAppOrder(appInfo: List<AppInfo>)
@@ -48,21 +50,21 @@ interface AppInfoDAO {
suspend fun updateAppName(appInfo: AppInfo, newAppName: String) {
appInfo.appName = newAppName
update(appInfo)
Log.d("Tag", "${appInfo.appName} : Repo Order: ${appInfo.appOrder}")
logUpdate("App name updated", appInfo)
}
@Transaction
suspend fun updateAppHidden(appInfo: AppInfo, appHidden: Boolean) {
appInfo.hidden = appHidden
update(appInfo)
Log.d("Tag", "${appInfo.appName} : Repo Order: ${appInfo.hidden}")
logUpdate("App hidden status updated", appInfo)
}
@Transaction
suspend fun updateLockApp(appInfo: AppInfo, appLock: Boolean) {
appInfo.lock = appLock
update(appInfo)
Log.d("Tag", "${appInfo.appName} : Repo Order: ${appInfo.lock}")
logUpdate("App lock status updated", appInfo)
}
@Query("SELECT MAX(`app_order`) FROM app")
@@ -73,4 +75,12 @@ interface AppInfoDAO {
@Query("SELECT * FROM app WHERE package_name = :packageName")
suspend fun getAppByPackageName(packageName: String): AppInfo?
private fun logUpdate(message: String, appInfo: AppInfo) {
// You can replace this with a logging library like Timber for more advanced logging capabilities.
Log.d(
"AppInfoDAO",
"$message: ${appInfo.appName} (Order: ${appInfo.appOrder}, Hidden: ${appInfo.hidden}, Lock: ${appInfo.lock})"
)
}
}

View File

@@ -11,15 +11,15 @@ import com.github.droidworksstudio.launcher.helper.PreferenceHelper
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ViewModelComponent
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.android.scopes.ViewModelScoped
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton
@Module
@InstallIn(ViewModelComponent::class)
@InstallIn(SingletonComponent::class)
object DatabaseModule {
@Provides
@ViewModelScoped
@Singleton
fun provideLocalDatabase(
@ApplicationContext context: Context
): AppDatabase =
@@ -30,36 +30,27 @@ object DatabaseModule {
).build()
@Provides
@ViewModelScoped
@Singleton
fun provideAppDao(appDatabase: AppDatabase): AppInfoDAO = appDatabase.appDao()
@Provides
@ViewModelScoped
fun providePackageManager(@ApplicationContext context: Context): PackageManager {
return context.packageManager
}
@Provides
@ViewModelScoped
@Singleton
fun providePreferenceHelper(@ApplicationContext context: Context): PreferenceHelper {
return PreferenceHelper(context)
}
@Provides
@ViewModelScoped
fun provideContext(@ApplicationContext context: Context): Context {
return context
}
@Provides
@ViewModelScoped
fun provideAppHelper(): AppHelper {
return AppHelper()
}
@Provides
@ViewModelScoped
fun provideBottomDialogHelper(): BottomDialogHelper {
return BottomDialogHelper()
}
}
}

View File

@@ -72,8 +72,7 @@ class SettingsFragment : Fragment(),
val packageInfo =
requireContext().packageManager.getPackageInfo(requireContext().packageName, 0)
binding.versionInfo.text = getString(
R.string.settings_version,
binding.versionInfo.text = getString(R.string.settings_version).format(
getString(R.string.app_name),
packageInfo.versionName
)