Pārlūkot izejas kodu

code improvements

milan jurkulák 2 gadi atpakaļ
vecāks
revīzija
b8ecc3c012

+ 1 - 0
app/proguard-rules.pro

@@ -27,6 +27,7 @@
 -keep,allowobfuscation,allowshrinking class retrofit2.Response
 -keep,allowobfuscation,allowshrinking class kotlin.coroutines.*
 
+-dontwarn java.lang.invoke.StringConcatFactory
 -dontwarn java.awt.font.FontRenderContext
 -dontwarn java.awt.font.LineBreakMeasurer
 -dontwarn java.awt.font.TextLayout

+ 10 - 14
app/src/main/AndroidManifest.xml

@@ -1,14 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <!--
-/*
- * Copyright (c) Milan Jurkulák 2023.
- * Contact:
- * e: mimoccc@gmail.com
- * e: mj@mjdev.org
- * w: https://mjdev.org
- */
--->
+  ~  Copyright (c) Milan Jurkulák 2024.
+  ~  Contact:
+  ~  e: mimoccc@gmail.com
+  ~  e: mj@mjdev.org
+  ~  w: https://mjdev.org
+  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools">
@@ -34,12 +32,10 @@
 
     <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
 
-    <uses-permission
-        android:name="android.permission.AUTHENTICATE_ACCOUNTS"
-        android:maxSdkVersion="22" />
-    <uses-permission
-        android:name="android.permission.GET_ACCOUNTS"
-        android:maxSdkVersion="22" />
+    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
+    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
+    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
+    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
 
     <uses-feature
         android:name="android.hardware.touchscreen"

+ 1 - 8
app/src/main/kotlin/org/mjdev/tvapp/app/Application.kt

@@ -11,20 +11,13 @@ package org.mjdev.tvapp.app
 import dagger.hilt.android.HiltAndroidApp
 import org.mjdev.tvapp.BuildConfig
 import org.mjdev.tvapp.cast.CastService
-import org.mjdev.tvapp.sync.SyncService.Companion.createSyncAccount
-import org.mjdev.tvapp.sync.SyncService.Companion.requestSync
+import org.mjdev.tvapp.sync.SyncService.Companion.createAccountAndSync
 import org.mjdev.tvlib.application.TvApplication
 import timber.log.Timber
 
 @HiltAndroidApp
 class Application : TvApplication() {
 
-    private fun createAccountAndSync() {
-        createSyncAccount()?.let { account ->
-            requestSync(account)
-        }
-    }
-
     override fun onCreate() {
         super.onCreate()
         if (BuildConfig.DEBUG) {

+ 1 - 0
app/src/main/kotlin/org/mjdev/tvapp/cast/CastService.kt

@@ -138,6 +138,7 @@ class CastService : Service(), SessionManagerListener<CastSession> {
         // Handle transfer failure.
     }
 
+    @RequiresApi(Build.VERSION_CODES.Q)
     @SuppressLint("ForegroundServiceType")
     override fun onCreate() {
         try {

+ 1 - 0
app/src/main/kotlin/org/mjdev/tvapp/database/DAO.kt

@@ -23,6 +23,7 @@ import org.mjdev.tvapp.data.local.ParsedLink
 import org.mjdev.tvapp.data.local.TVChannel
 import kotlin.reflect.KClass
 
+@Suppress("unused", "MemberVisibilityCanBePrivate")
 class DAO(
     @ApplicationContext
     val context: Context,

+ 7 - 7
app/src/main/kotlin/org/mjdev/tvapp/sync/SyncAdapter.kt

@@ -34,7 +34,7 @@ import org.mjdev.tvlib.events.post.postEvent
 import org.mjdev.tvlib.extensions.GlobalExt.launchIO
 
 @Keep
-@Suppress("unused")
+@Suppress("unused" , "DEPRECATION")
 class SyncAdapter(
     context: Context,
     val apiService: ApiService,
@@ -46,17 +46,17 @@ class SyncAdapter(
         context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
     }
 
-    private val mWifi by lazy {
-        @Suppress("DEPRECATION")
-        connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
-    }
+    private val activeNetworkInfo
+        get() = connManager.activeNetworkInfo
+
+    private val isConnected
+        get() = activeNetworkInfo?.isAvailable == true && activeNetworkInfo?.isConnected == true
 
     private fun ifDebug(syncer: Syncer) = if (BuildConfig.DEBUG) syncer else null
     private fun ifNotDebug(syncer: Syncer) = if (!BuildConfig.DEBUG) syncer else null
 
     private val customSyncers: List<Syncer> by lazy {
-        @Suppress("DEPRECATION")
-        if (mWifi?.isConnected == true) {
+        if (isConnected) {
             listOfNotNull(
                 GithubMoviesSyncer(this),
             )

+ 5 - 0
app/src/main/kotlin/org/mjdev/tvapp/sync/SyncService.kt

@@ -16,6 +16,7 @@ import android.content.ContentResolver.setIsSyncable
 import android.content.ContentResolver.setSyncAutomatically
 import android.content.Context
 import android.content.Intent
+import android.os.Build
 import android.os.Bundle
 import android.os.IBinder
 import androidx.annotation.Keep
@@ -26,6 +27,7 @@ import org.mjdev.tvapp.repository.ApiService
 import timber.log.Timber
 import javax.inject.Inject
 
+@Suppress("MemberVisibilityCanBePrivate")
 @Keep
 @AndroidEntryPoint
 class SyncService : Service() {
@@ -69,6 +71,9 @@ class SyncService : Service() {
                     val accounts = accountManager.getAccountsByType(ACCOUNT_TYPE)
                     if (accounts.isEmpty()) {
                         if (accountManager.addAccountExplicitly(account, "", Bundle())) {
+                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+                                accountManager.notifyAccountAuthenticated(account)
+                            }
                             setIsSyncable(account, AUTHORITY, 1)
                             setSyncAutomatically(account, AUTHORITY, true)
                         } else {

+ 4 - 2
app/src/main/kotlin/org/mjdev/tvapp/sync/SyncStarter.kt

@@ -8,6 +8,7 @@
 
 package org.mjdev.tvapp.sync
 
+import android.annotation.SuppressLint
 import android.content.Context
 import android.content.Intent
 import android.content.BroadcastReceiver
@@ -15,8 +16,9 @@ import org.mjdev.tvapp.sync.SyncService.Companion.createAccountAndSync
 
 class SyncStarter : BroadcastReceiver() {
 
-    override fun onReceive(context: Context, intent: Intent?) {
-        context.createAccountAndSync()
+    @SuppressLint("UnsafeProtectedBroadcastReceiver")
+    override fun onReceive(context: Context?, intent: Intent?) {
+        context?.createAccountAndSync()
     }
 
 }

+ 2 - 1
app/src/main/kotlin/org/mjdev/tvapp/sync/auth/AuthenticatorService.kt

@@ -22,6 +22,7 @@ class AuthenticatorService : Service() {
         authenticator = Authenticator(this)
     }
 
-    override fun onBind(intent: Intent?): IBinder = authenticator.iBinder
+    override fun onBind(intent: Intent?): IBinder =
+        authenticator.iBinder
 
 }

+ 2 - 1
app/src/main/kotlin/org/mjdev/tvapp/sync/base/Syncer.kt

@@ -57,7 +57,8 @@ abstract class Syncer(
     @CallSuper
     suspend fun sync(coroutineScope: CoroutineScope) {
         with(coroutineScope) {
-            while(pauseState.value) delay(500)
+            while(pauseState.value)
+                delay(500)
             onSyncStart()
             observeEvent<PauseEvent> { event ->
                 pause(coroutineScope, event.timeout)

+ 1 - 1
documentation/app/org.mjdev.tvapp.cast/-cast-service/index.md

@@ -116,7 +116,7 @@ class [CastService](index.md) : [Service](https://developer.android.com/referenc
 | [obtainStyledAttributes](../../org.mjdev.tvapp.sync.auth/-authenticator-service/index.md#1790084466%2FFunctions%2F-912451524) | [androidJvm]<br>fun [obtainStyledAttributes](../../org.mjdev.tvapp.sync.auth/-authenticator-service/index.md#1790084466%2FFunctions%2F-912451524)(p0: [IntArray](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/index.html)): [TypedArray](https://developer.android.com/reference/kotlin/android/content/res/TypedArray.html)<br>fun [obtainStyledAttributes](../../org.mjdev.tvapp.sync.auth/-authenticator-service/index.md#-1642243463%2FFunctions%2F-912451524)(p0: [AttributeSet](https://developer.android.com/reference/kotlin/android/util/AttributeSet.html)?, p1: [IntArray](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/index.html)): [TypedArray](https://developer.android.com/reference/kotlin/android/content/res/TypedArray.html)<br>fun [obtainStyledAttributes](../../org.mjdev.tvapp.sync.auth/-authenticator-service/index.md#-1436889597%2FFunctions%2F-912451524)(p0: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html), p1: [IntArray](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/index.html)): [TypedArray](https://developer.android.com/reference/kotlin/android/content/res/TypedArray.html)<br>fun [obtainStyledAttributes](../../org.mjdev.tvapp.sync.auth/-authenticator-service/index.md#1344552345%2FFunctions%2F-912451524)(p0: [AttributeSet](https://developer.android.com/reference/kotlin/android/util/AttributeSet.html)?, p1: [IntArray](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int-array/index.html), p2: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html), p3: [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)): [TypedArray](https://developer.android.com/reference/kotlin/android/content/res/TypedArray.html) |
 | [onBind](on-bind.md) | [androidJvm]<br>open override fun [onBind](on-bind.md)(intent: [Intent](https://developer.android.com/reference/kotlin/android/content/Intent.html)?): [IBinder](https://developer.android.com/reference/kotlin/android/os/IBinder.html)? |
 | [onConfigurationChanged](../../org.mjdev.tvapp.sync.auth/-authenticator-service/index.md#-26093835%2FFunctions%2F-912451524) | [androidJvm]<br>open override fun [onConfigurationChanged](../../org.mjdev.tvapp.sync.auth/-authenticator-service/index.md#-26093835%2FFunctions%2F-912451524)(p0: [Configuration](https://developer.android.com/reference/kotlin/android/content/res/Configuration.html)) |
-| [onCreate](on-create.md) | [androidJvm]<br>open override fun [onCreate](on-create.md)() |
+| [onCreate](on-create.md) | [androidJvm]<br>@[RequiresApi](https://developer.android.com/reference/kotlin/androidx/annotation/RequiresApi.html)(value = 29)<br>open override fun [onCreate](on-create.md)() |
 | [onDestroy](on-destroy.md) | [androidJvm]<br>open override fun [onDestroy](on-destroy.md)() |
 | [onLowMemory](../../org.mjdev.tvapp.sync.auth/-authenticator-service/index.md#914780206%2FFunctions%2F-912451524) | [androidJvm]<br>open override fun [onLowMemory](../../org.mjdev.tvapp.sync.auth/-authenticator-service/index.md#914780206%2FFunctions%2F-912451524)() |
 | [onRebind](../../org.mjdev.tvapp.sync.auth/-authenticator-service/index.md#1824585879%2FFunctions%2F-912451524) | [androidJvm]<br>open fun [onRebind](../../org.mjdev.tvapp.sync.auth/-authenticator-service/index.md#1824585879%2FFunctions%2F-912451524)(p0: [Intent](https://developer.android.com/reference/kotlin/android/content/Intent.html)) |

+ 3 - 0
documentation/app/org.mjdev.tvapp.cast/-cast-service/on-create.md

@@ -3,4 +3,7 @@
 # onCreate
 
 [androidJvm]\
+
+@[RequiresApi](https://developer.android.com/reference/kotlin/androidx/annotation/RequiresApi.html)(value = 29)
+
 open override fun [onCreate](on-create.md)()

+ 1 - 1
documentation/app/org.mjdev.tvapp.sync/-sync-starter/index.md

@@ -29,7 +29,7 @@ class [SyncStarter](index.md) : [BroadcastReceiver](https://developer.android.co
 | [hashCode](../../org.mjdev.tvapp.widget/-refresh-action/index.md#1794629105%2FFunctions%2F-912451524) | [androidJvm]<br>open fun [hashCode](../../org.mjdev.tvapp.widget/-refresh-action/index.md#1794629105%2FFunctions%2F-912451524)(): [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html) |
 | [isInitialStickyBroadcast](../../org.mjdev.tvapp.widget/-my-app-widget-receiver/index.md#-448034677%2FFunctions%2F-912451524) | [androidJvm]<br>fun [isInitialStickyBroadcast](../../org.mjdev.tvapp.widget/-my-app-widget-receiver/index.md#-448034677%2FFunctions%2F-912451524)(): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) |
 | [isOrderedBroadcast](../../org.mjdev.tvapp.widget/-my-app-widget-receiver/index.md#1250697259%2FFunctions%2F-912451524) | [androidJvm]<br>fun [isOrderedBroadcast](../../org.mjdev.tvapp.widget/-my-app-widget-receiver/index.md#1250697259%2FFunctions%2F-912451524)(): [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html) |
-| [onReceive](on-receive.md) | [androidJvm]<br>open override fun [onReceive](on-receive.md)(context: [Context](https://developer.android.com/reference/kotlin/android/content/Context.html), intent: [Intent](https://developer.android.com/reference/kotlin/android/content/Intent.html)?) |
+| [onReceive](on-receive.md) | [androidJvm]<br>open override fun [onReceive](on-receive.md)(context: [Context](https://developer.android.com/reference/kotlin/android/content/Context.html)?, intent: [Intent](https://developer.android.com/reference/kotlin/android/content/Intent.html)?) |
 | [peekService](../../org.mjdev.tvapp.widget/-my-app-widget-receiver/index.md#-1162131393%2FFunctions%2F-912451524) | [androidJvm]<br>open fun [peekService](../../org.mjdev.tvapp.widget/-my-app-widget-receiver/index.md#-1162131393%2FFunctions%2F-912451524)(p0: [Context](https://developer.android.com/reference/kotlin/android/content/Context.html), p1: [Intent](https://developer.android.com/reference/kotlin/android/content/Intent.html)): [IBinder](https://developer.android.com/reference/kotlin/android/os/IBinder.html) |
 | [setDebugUnregister](../../org.mjdev.tvapp.widget/-my-app-widget-receiver/index.md#375803713%2FFunctions%2F-912451524) | [androidJvm]<br>fun [setDebugUnregister](../../org.mjdev.tvapp.widget/-my-app-widget-receiver/index.md#375803713%2FFunctions%2F-912451524)(p0: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)) |
 | [setOrderedHint](../../org.mjdev.tvapp.widget/-my-app-widget-receiver/index.md#48379132%2FFunctions%2F-912451524) | [androidJvm]<br>fun [setOrderedHint](../../org.mjdev.tvapp.widget/-my-app-widget-receiver/index.md#48379132%2FFunctions%2F-912451524)(p0: [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)) |

+ 1 - 1
documentation/app/org.mjdev.tvapp.sync/-sync-starter/on-receive.md

@@ -3,4 +3,4 @@
 # onReceive
 
 [androidJvm]\
-open override fun [onReceive](on-receive.md)(context: [Context](https://developer.android.com/reference/kotlin/android/content/Context.html), intent: [Intent](https://developer.android.com/reference/kotlin/android/content/Intent.html)?)
+open override fun [onReceive](on-receive.md)(context: [Context](https://developer.android.com/reference/kotlin/android/content/Context.html)?, intent: [Intent](https://developer.android.com/reference/kotlin/android/content/Intent.html)?)

+ 1 - 1
documentation/app/package-list

@@ -342,7 +342,7 @@ $dokka.location:org.mjdev.tvapp.sync/SyncService/onBind/#android.content.Intent/
 $dokka.location:org.mjdev.tvapp.sync/SyncService/onCreate/#/PointingToDeclaration/app/org.mjdev.tvapp.sync/-sync-service/on-create.md
 $dokka.location:org.mjdev.tvapp.sync/SyncStarter///PointingToDeclaration/app/org.mjdev.tvapp.sync/-sync-starter/index.md
 $dokka.location:org.mjdev.tvapp.sync/SyncStarter/SyncStarter/#/PointingToDeclaration/app/org.mjdev.tvapp.sync/-sync-starter/-sync-starter.md
-$dokka.location:org.mjdev.tvapp.sync/SyncStarter/onReceive/#android.content.Context#android.content.Intent?/PointingToDeclaration/app/org.mjdev.tvapp.sync/-sync-starter/on-receive.md
+$dokka.location:org.mjdev.tvapp.sync/SyncStarter/onReceive/#android.content.Context?#android.content.Intent?/PointingToDeclaration/app/org.mjdev.tvapp.sync/-sync-starter/on-receive.md
 $dokka.location:org.mjdev.tvapp.ui.pages////PointingToDeclaration/app/org.mjdev.tvapp.ui.pages/index.md
 $dokka.location:org.mjdev.tvapp.ui.pages/AboutPage///PointingToDeclaration/app/org.mjdev.tvapp.ui.pages/-about-page/index.md
 $dokka.location:org.mjdev.tvapp.ui.pages/AboutPage/AboutPage/#/PointingToDeclaration/app/org.mjdev.tvapp.ui.pages/-about-page/-about-page.md