Фикс запуска постоянного уведомления.

Предотвращение запуска фоновых задач до прохождения авторизации.

Обновление библиотек.
This commit is contained in:
2024-11-01 02:19:34 +04:00
parent c4444ff2ca
commit 637a66a647
8 changed files with 35 additions and 32 deletions

View File

@@ -17,20 +17,6 @@
</option> </option>
<option name="signal" value="SIGNAL_UNSPECIFIED" /> <option name="signal" value="SIGNAL_UNSPECIFIED" />
<option name="timeIntervalDays" value="THIRTY_DAYS" /> <option name="timeIntervalDays" value="THIRTY_DAYS" />
<option name="versions">
<list>
<VersionSetting>
<option name="buildVersion" value="17" />
<option name="displayName" value="2.0.1 (17)" />
<option name="displayVersion" value="2.0.1" />
</VersionSetting>
<VersionSetting>
<option name="buildVersion" value="16" />
<option name="displayName" value="2.0.0prod (16)" />
<option name="displayVersion" value="2.0.0prod" />
</VersionSetting>
</list>
</option>
<option name="visibilityType" value="ALL" /> <option name="visibilityType" value="ALL" />
</InsightsFilterSettings> </InsightsFilterSettings>
</value> </value>

1
.idea/misc.xml generated
View File

@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="EntryPointsManager"> <component name="EntryPointsManager">
<list size="2"> <list size="2">

View File

@@ -33,8 +33,8 @@ android {
applicationId = "ru.n08i40k.polytechnic.next" applicationId = "ru.n08i40k.polytechnic.next"
minSdk = 26 minSdk = 26
targetSdk = 35 targetSdk = 35
versionCode = 18 versionCode = 19
versionName = "2.0.2" versionName = "2.0.3"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables { vectorDrawables {

View File

@@ -102,7 +102,7 @@ class CurrentLessonViewService : Service() {
} }
val firstLessonIdx = val firstLessonIdx =
day!!.distanceToNextByLocalDateTime(LocalDateTime(0, 0, 0, 0, 0))?.first day!!.distanceToNextByLocalDateTime(LocalDateTime(1, 1, 1, 0, 0))?.first
?: throw NullPointerException("Is this even real?") ?: throw NullPointerException("Is this even real?")
val distanceToFirst = day!!.lessons[firstLessonIdx]!!.time!!.start.dayMinutes - currentMinutes val distanceToFirst = day!!.lessons[firstLessonIdx]!!.time!!.start.dayMinutes - currentMinutes

View File

@@ -1,10 +1,15 @@
package ru.n08i40k.polytechnic.next.ui package ru.n08i40k.polytechnic.next.ui
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.navigation.compose.NavHost import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.runBlocking
import ru.n08i40k.polytechnic.next.settings.settingsDataStore
import ru.n08i40k.polytechnic.next.ui.auth.AuthScreen import ru.n08i40k.polytechnic.next.ui.auth.AuthScreen
import ru.n08i40k.polytechnic.next.ui.main.MainScreen import ru.n08i40k.polytechnic.next.ui.main.MainScreen
import ru.n08i40k.polytechnic.next.ui.theme.AppTheme import ru.n08i40k.polytechnic.next.ui.theme.AppTheme
@@ -15,10 +20,15 @@ import ru.n08i40k.polytechnic.next.ui.theme.AppTheme
fun PolytechnicApp() { fun PolytechnicApp() {
AppTheme(darkTheme = true, content = { AppTheme(darkTheme = true, content = {
val navController = rememberNavController() val navController = rememberNavController()
val context = LocalContext.current
val accessToken = runBlocking {
context.settingsDataStore.data.map { it.accessToken }.first()
}
NavHost( NavHost(
navController = navController, navController = navController,
startDestination = "auth" startDestination = if (accessToken.isEmpty()) "auth" else "main"
) { ) {
composable(route = "auth") { composable(route = "auth") {
AuthScreen(navController) AuthScreen(navController)

View File

@@ -47,7 +47,6 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.IntOffset
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.core.content.ContextCompat.startActivity
import androidx.hilt.navigation.compose.hiltViewModel import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.viewmodel.compose.viewModel import androidx.lifecycle.viewmodel.compose.viewModel
@@ -134,7 +133,7 @@ private fun NavHostContainer(
} }
private fun openLink(context: Context, link: String) { private fun openLink(context: Context, link: String) {
startActivity(context, Intent(Intent.ACTION_VIEW, Uri.parse(link)), null) context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(link)), null)
} }
@Composable @Composable

View File

@@ -3,12 +3,21 @@ package ru.n08i40k.polytechnic.next.work
import android.content.Context import android.content.Context
import androidx.work.Worker import androidx.work.Worker
import androidx.work.WorkerParameters import androidx.work.WorkerParameters
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import ru.n08i40k.polytechnic.next.PolytechnicApplication import ru.n08i40k.polytechnic.next.PolytechnicApplication
import ru.n08i40k.polytechnic.next.settings.settingsDataStore
class LinkUpdateWorker(context: Context, params: WorkerParameters) : class LinkUpdateWorker(context: Context, params: WorkerParameters) :
Worker(context, params) { Worker(context, params) {
override fun doWork(): Result { override fun doWork(): Result {
val accessToken = runBlocking {
applicationContext.settingsDataStore.data.map { it.accessToken }.first()
}
if (accessToken.isEmpty())
return Result.retry()
runBlocking { runBlocking {
(applicationContext as PolytechnicApplication) (applicationContext as PolytechnicApplication)
.container .container

View File

@@ -1,25 +1,25 @@
[versions] [versions]
accompanistSwiperefresh = "0.36.0" accompanistSwiperefresh = "0.36.0"
agp = "8.7.1" agp = "8.7.2"
firebaseBom = "33.4.0" firebaseBom = "33.5.1"
hiltAndroid = "2.52" hiltAndroid = "2.52"
hiltAndroidCompiler = "2.52" hiltAndroidCompiler = "2.52"
hiltNavigationCompose = "1.2.0" hiltNavigationCompose = "1.2.0"
kotlin = "2.0.10" kotlin = "2.0.10"
coreKtx = "1.13.1" coreKtx = "1.15.0"
junit = "4.13.2" junit = "4.13.2"
junitVersion = "1.2.1" junitVersion = "1.2.1"
espressoCore = "3.6.1" espressoCore = "3.6.1"
kotlinxSerializationJson = "1.7.3" kotlinxSerializationJson = "1.7.3"
lifecycleRuntimeKtx = "2.8.6" lifecycleRuntimeKtx = "2.8.7"
activityCompose = "1.9.3" activityCompose = "1.9.3"
composeBom = "2024.10.00" composeBom = "2024.10.01"
protobufLite = "3.0.1" protobufLite = "3.0.1"
volley = "1.2.1" volley = "1.2.1"
datastore = "1.1.1" datastore = "1.1.1"
navigationCompose = "2.8.3" navigationCompose = "2.8.3"
googleFirebaseCrashlytics = "3.0.2" googleFirebaseCrashlytics = "3.0.2"
workRuntime = "2.9.1" workRuntime = "2.10.0"
[libraries] [libraries]
accompanist-swiperefresh = { module = "com.google.accompanist:accompanist-swiperefresh", version.ref = "accompanistSwiperefresh" } accompanist-swiperefresh = { module = "com.google.accompanist:accompanist-swiperefresh", version.ref = "accompanistSwiperefresh" }
@@ -40,7 +40,7 @@ androidx-ui = { group = "androidx.compose.ui", name = "ui" }
androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest", version = "1.7.4" } androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest", version = "1.7.5" }
androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
androidx-material3 = { group = "androidx.compose.material3", name = "material3" } androidx-material3 = { group = "androidx.compose.material3", name = "material3" }
kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version = "0.6.1" } kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version = "0.6.1" }
@@ -49,10 +49,10 @@ protobuf-lite = { module = "com.google.protobuf:protobuf-lite", version.ref = "p
volley = { group = "com.android.volley", name = "volley", version.ref = "volley" } volley = { group = "com.android.volley", name = "volley", version.ref = "volley" }
androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigationCompose" } androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigationCompose" }
firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebaseBom" } firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebaseBom" }
firebase-analytics = { module = "com.google.firebase:firebase-analytics" } firebase-analytics = { module = "com.google.firebase:firebase-analytics", version = "22.1.2" }
firebase-crashlytics = { group = "com.google.firebase", name = "firebase-crashlytics" } firebase-crashlytics = { group = "com.google.firebase", name = "firebase-crashlytics", version = "19.2.1" }
firebase-messaging = { group = "com.google.firebase", name = "firebase-messaging" } firebase-messaging = { group = "com.google.firebase", name = "firebase-messaging", version = "24.0.3" }
firebase-config = { group = "com.google.firebase", name = "firebase-config" } firebase-config = { group = "com.google.firebase", name = "firebase-config", version = "22.0.1" }
[plugins] [plugins]
android-application = { id = "com.android.application", version.ref = "agp" } android-application = { id = "com.android.application", version.ref = "agp" }