Merge pull request #307 from cyb3rko/fix-build-warnings
Fix build warnings
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -113,7 +113,6 @@ internal class WebSocketService : Service() {
|
||||
settings.url,
|
||||
settings.sslSettings(),
|
||||
settings.token,
|
||||
cm,
|
||||
alarmManager
|
||||
)
|
||||
.onOpen { onOpen() }
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user