Skip to content

Commit

Permalink
Update names periodically
Browse files Browse the repository at this point in the history
  • Loading branch information
Sajeg committed Oct 26, 2024
1 parent eb20f07 commit bf7d110
Show file tree
Hide file tree
Showing 12 changed files with 73 additions and 13 deletions.
3 changes: 3 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ android {
}

dependencies {
// Work Manager
implementation(libs.androidx.work.runtime.ktx)

// Preferences
implementation(libs.androidx.datastore.preferences)

Expand Down
3 changes: 2 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:usesCleartextTraffic="true"
android:allowBackup="true"
Expand All @@ -30,7 +31,7 @@
</intent-filter>
</activity>
<service
android:name=".AccessibilityService"
android:name=".classes.AccessibilityService"
android:exported="true"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<intent-filter>
Expand Down
34 changes: 31 additions & 3 deletions app/src/main/java/com/sajeg/questrpc/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,20 @@ import androidx.core.content.ContextCompat.startActivity
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.preferencesDataStore
import androidx.work.Constraints
import androidx.work.ExistingPeriodicWorkPolicy
import androidx.work.NetworkType
import androidx.work.PeriodicWorkRequestBuilder
import androidx.work.WorkManager
import com.sajeg.questrpc.classes.AppManager
import com.sajeg.questrpc.classes.AppName
import com.sajeg.questrpc.classes.BackgroundUpdater
import com.sajeg.questrpc.classes.MetaDataDownloader
import com.sajeg.questrpc.classes.SettingsManager
import com.sajeg.questrpc.composables.SignInDiscord
import com.sajeg.questrpc.composables.getInstalledVrGames
import com.sajeg.questrpc.ui.theme.QuestRPCTheme
import java.util.concurrent.TimeUnit

val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")

Expand All @@ -55,6 +66,21 @@ class MainActivity : ComponentActivity() {
QuestRPCTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
Main(Modifier.padding(innerPadding))
val uploadWorkRequest =
PeriodicWorkRequestBuilder<BackgroundUpdater>(6, TimeUnit.HOURS)
.setConstraints(
Constraints.Builder()
.setRequiredNetworkType(NetworkType.UNMETERED)
.build()
)
.build()
WorkManager
.getInstance(this)
.enqueueUniquePeriodicWork(
"updateNames",
ExistingPeriodicWorkPolicy.KEEP,
uploadWorkRequest
)
}
}
}
Expand Down Expand Up @@ -152,7 +178,9 @@ fun RightScreen(modifier: Modifier) {
}

LazyColumn(
modifier = modifier.padding(15.dp).animateContentSize()
modifier = modifier
.padding(15.dp)
.animateContentSize()
) {
item {
Text("Apps: ", style = MaterialTheme.typography.headlineLarge)
Expand Down Expand Up @@ -247,7 +275,7 @@ fun RightScreen(modifier: Modifier) {
newExcludedApps.remove(packageName)
}
}
items(excludedApps, { it } ) { packageName ->
items(excludedApps, { it }) { packageName ->
ExcludedAppsCard(packageName, context, modifier) {
AppManager().removeExcludedApp(packageName, context)
excludedApps.remove(packageName)
Expand All @@ -261,7 +289,7 @@ private fun ExcludedAppsCard(
packageName: String,
context: Context,
modifier: Modifier,
onIncludePressed: (packageName : String) -> Unit
onIncludePressed: (packageName: String) -> Unit
) {
if (packageName == "null") {
return
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sajeg.questrpc
package com.sajeg.questrpc.classes

import android.accessibilityservice.AccessibilityService
import android.content.Intent
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sajeg.questrpc
package com.sajeg.questrpc.classes

import android.content.Context
import android.content.pm.PackageManager
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sajeg.questrpc
package com.sajeg.questrpc.classes

import android.content.Context

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sajeg.questrpc
package com.sajeg.questrpc.classes

data class AppName(val packageName: String, val name: String) {
override fun toString(): String {
Expand Down
27 changes: 27 additions & 0 deletions app/src/main/java/com/sajeg/questrpc/classes/BackgroundUpdater.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.sajeg.questrpc.classes

import android.content.Context
import androidx.work.Worker
import androidx.work.WorkerParameters
import com.sajeg.questrpc.composables.getInstalledVrGames

class BackgroundUpdater(appContext: Context, workerParams: WorkerParameters) :
Worker(appContext, workerParams) {

override fun doWork(): Result {
val apps = getInstalledVrGames(applicationContext)
val packageNames = mutableListOf<String>()
apps.forEach { app ->
packageNames.add(app.packageName)
}
try {
MetaDataDownloader().getAppsName(packageNames) { newNames ->
AppManager().addStoreNames(newNames, applicationContext)
}
} catch (e: Exception) {
return Result.failure()
}

return Result.success()
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package com.sajeg.questrpc
package com.sajeg.questrpc.classes

import android.content.Context
import android.util.JsonReader
import android.util.Log
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sajeg.questrpc
package com.sajeg.questrpc.classes

import android.content.BroadcastReceiver
import android.content.Context
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.sajeg.questrpc
package com.sajeg.questrpc.classes

import android.content.Context
import androidx.datastore.preferences.core.edit
import androidx.datastore.preferences.core.stringPreferencesKey
import com.sajeg.questrpc.dataStore
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.first
Expand Down
2 changes: 2 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@ espressoCore = "3.6.1"
lifecycleRuntimeKtx = "2.8.6"
activityCompose = "1.9.3"
composeBom = "2024.10.00"
workRuntimeKtx = "2.9.1"

[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "datastorePreferences" }
androidx-work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "workRuntimeKtx" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
Expand Down

0 comments on commit bf7d110

Please sign in to comment.