Fix: Fixed a few database bugs
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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})"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user