Merge pull request #307 from cyb3rko/fix-build-warnings

Fix build warnings
This commit is contained in:
Jannis Mattheis
2023-07-29 20:10:47 +02:00
committed by GitHub
8 changed files with 51 additions and 52 deletions

View File

@@ -8,6 +8,7 @@ import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.view.View
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import com.github.gotify.R
import com.github.gotify.SSLSettings
@@ -35,11 +36,6 @@ import java.security.cert.X509Certificate
import okhttp3.HttpUrl
internal class LoginActivity : AppCompatActivity() {
companion object {
// return value from startActivityForResult when choosing a certificate
private const val FILE_SELECT_CODE = 1
}
private lateinit var binding: ActivityLoginBinding
private lateinit var settings: Settings
@@ -47,6 +43,27 @@ internal class LoginActivity : AppCompatActivity() {
private var caCertContents: String? = null
private lateinit var advancedDialog: AdvancedDialog
private val certificateDialogResultLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
try {
require(result.resultCode == RESULT_OK) { "result was ${result.resultCode}" }
requireNotNull(result.data) { "file path was null" }
val uri = result.data!!.data ?: throw IllegalArgumentException("file path was null")
val fileStream = contentResolver.openInputStream(uri)
?: throw IllegalArgumentException("file path was invalid")
val content = Utils.readFileFromStream(fileStream)
val name = getNameOfCertContent(content)
// temporarily set the contents (don't store to settings until they decide to login)
caCertContents = content
advancedDialog.showRemoveCACertificate(name)
} catch (e: Exception) {
Utils.showSnackBar(this, getString(R.string.select_ca_failed, e.message))
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
UncaughtExceptionHandler.registerCurrentThread()
@@ -152,9 +169,8 @@ internal class LoginActivity : AppCompatActivity() {
intent.addCategory(Intent.CATEGORY_OPENABLE)
try {
startActivityForResult(
Intent.createChooser(intent, getString(R.string.select_ca_file)),
FILE_SELECT_CODE
certificateDialogResultLauncher.launch(
Intent.createChooser(intent, getString(R.string.select_ca_file))
)
} catch (e: ActivityNotFoundException) {
// case for user not having a file browser installed
@@ -162,30 +178,6 @@ internal class LoginActivity : AppCompatActivity() {
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
try {
if (requestCode == FILE_SELECT_CODE) {
require(resultCode == RESULT_OK) { "result was $resultCode" }
requireNotNull(data) { "file path was null" }
val uri = data.data ?: throw IllegalArgumentException("file path was null")
val fileStream = contentResolver.openInputStream(uri)
?: throw IllegalArgumentException("file path was invalid")
val content = Utils.readFileFromStream(fileStream)
val name = getNameOfCertContent(content)
// temporarily set the contents (don't store to settings until they decide to login)
caCertContents = content
advancedDialog.showRemoveCACertificate(name)
}
} catch (e: Exception) {
Utils.showSnackBar(this, getString(R.string.select_ca_failed, e.message))
}
}
private fun getNameOfCertContent(content: String): String {
val ca = CertUtils.parseCertificate(content)
return (ca as X509Certificate).subjectDN.name

View File

@@ -15,6 +15,7 @@ import android.view.MenuItem
import android.view.View
import android.widget.ImageButton
import android.widget.TextView
import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
@@ -68,6 +69,7 @@ internal class MessagesActivity :
private var isLoadMore = false
private var updateAppOnDrawerClose: Long? = null
private lateinit var listMessageAdapter: ListMessageAdapter
private lateinit var onBackPressedCallback: OnBackPressedCallback
private val receiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
@@ -108,6 +110,7 @@ internal class MessagesActivity :
listAnimation
)
}
addBackPressCallback()
messagesView.addItemDecoration(dividerItemDecoration)
messagesView.setHasFixedSize(true)
@@ -126,6 +129,9 @@ internal class MessagesActivity :
swipeRefreshLayout.setOnRefreshListener { onRefresh() }
binding.drawerLayout.addDrawerListener(
object : SimpleDrawerListener() {
override fun onDrawerOpened(drawerView: View) {
onBackPressedCallback.isEnabled = true
}
override fun onDrawerClosed(drawerView: View) {
updateAppOnDrawerClose?.let { selectApp ->
updateAppOnDrawerClose = null
@@ -135,6 +141,7 @@ internal class MessagesActivity :
}
invalidateOptionsMenu()
}
onBackPressedCallback.isEnabled = false
}
}
)
@@ -242,12 +249,15 @@ internal class MessagesActivity :
refreshAll.setOnClickListener { refreshAll() }
}
override fun onBackPressed() {
if (binding.drawerLayout.isDrawerOpen(GravityCompat.START)) {
binding.drawerLayout.closeDrawer(GravityCompat.START)
} else {
super.onBackPressed()
private fun addBackPressCallback() {
onBackPressedCallback = object : OnBackPressedCallback(false) {
override fun handleOnBackPressed() {
if (binding.drawerLayout.isDrawerOpen(GravityCompat.START)) {
binding.drawerLayout.closeDrawer(GravityCompat.START)
}
}
}
onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
}
override fun onNavigationItemSelected(item: MenuItem): Boolean {

View File

@@ -9,6 +9,7 @@ internal class MessagesModelFactory(
) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
if (modelClass == MessagesModel::class.java) {
@Suppress("UNCHECKED_CAST")
return modelClass.cast(MessagesModel(modelParameterActivity)) as T
}
throw IllegalArgumentException(

View File

@@ -1,7 +1,6 @@
package com.github.gotify.service
import android.app.AlarmManager
import android.net.ConnectivityManager
import android.os.Build
import android.os.Handler
import android.os.Looper
@@ -24,7 +23,6 @@ internal class WebSocketConnection(
private val baseUrl: String,
settings: SSLSettings,
private val token: String?,
private val connectivityManager: ConnectivityManager,
private val alarmManager: AlarmManager
) {
companion object {
@@ -200,12 +198,6 @@ internal class WebSocketConnection(
}
errorCount++
val network = connectivityManager.activeNetworkInfo
if (network == null || !network.isConnected) {
Log.i("WebSocket($id): Network not connected")
}
val minutes = (errorCount * 2 - 1).coerceAtMost(20)
onNetworkFailure.execute(minutes)

View File

@@ -113,7 +113,6 @@ internal class WebSocketService : Service() {
settings.url,
settings.sslSettings(),
settings.token,
cm,
alarmManager
)
.onOpen { onOpen() }

View File

@@ -110,6 +110,7 @@ internal class SettingsActivity : AppCompatActivity(), OnSharedPreferenceChangeL
private fun showListPreferenceDialog(preference: ListPreference) {
val dialogFragment = MaterialListPreference()
dialogFragment.arguments = Bundle(1).apply { putString("key", preference.key) }
@Suppress("DEPRECATION") // https://issuetracker.google.com/issues/181793702#comment3
dialogFragment.setTargetFragment(this, 0)
dialogFragment.show(
parentFragmentManager,