From 7b415b6d61be4ebc19f4e4e5980ecbe9285c4345 Mon Sep 17 00:00:00 2001 From: Niko Diamadis Date: Mon, 26 Dec 2022 19:14:14 +0100 Subject: [PATCH] Implement changes required by new Kotlin codebase --- .../com/github/gotify/api/ClientFactory.kt | 2 +- .../gotify/init/InitializationActivity.kt | 34 +++++++++++-------- .../com/github/gotify/login/LoginActivity.kt | 22 ++++++------ .../gotify/messages/ListMessageAdapter.kt | 4 +-- .../gotify/messages/MessagesActivity.kt | 26 +++++++------- .../github/gotify/messages/MessagesModel.kt | 2 +- .../messages/provider/ApplicationHolder.kt | 6 ++-- .../github/gotify/picasso/PicassoHandler.kt | 8 ++--- .../gotify/service/WebSocketConnection.kt | 2 +- .../github/gotify/service/WebSocketService.kt | 22 ++++++------ .../github/gotify/sharing/ShareActivity.kt | 8 ++--- 11 files changed, 68 insertions(+), 68 deletions(-) diff --git a/app/src/main/java/com/github/gotify/api/ClientFactory.kt b/app/src/main/java/com/github/gotify/api/ClientFactory.kt index 571ca94..fb315fa 100644 --- a/app/src/main/java/com/github/gotify/api/ClientFactory.kt +++ b/app/src/main/java/com/github/gotify/api/ClientFactory.kt @@ -49,7 +49,7 @@ internal object ClientFactory { } fun userApiWithToken(settings: Settings): UserApi? { - return clientToken(settings.url(), settings.sslSettings(), settings.token()) + return clientToken(settings.url, settings.sslSettings(), settings.token) .createService(UserApi::class.java) } diff --git a/app/src/main/java/com/github/gotify/init/InitializationActivity.kt b/app/src/main/java/com/github/gotify/init/InitializationActivity.kt index febd64f..675ba55 100644 --- a/app/src/main/java/com/github/gotify/init/InitializationActivity.kt +++ b/app/src/main/java/com/github/gotify/init/InitializationActivity.kt @@ -59,16 +59,18 @@ class InitializationActivity : AppCompatActivity() { private fun tryAuthenticate() { ClientFactory.userApiWithToken(settings) - .currentUser() - .enqueue(Callback.callInUI(this, { authenticated(it) }) { apiException -> - failed(apiException) - }) + ?.currentUser() + ?.enqueue( + Callback.callInUI(this, { if (it != null) authenticated(it) }) { apiException -> + failed(apiException) + } + ) } private fun failed(exception: ApiException) { - when (exception.code()) { + when (exception.code) { 0 -> { - dialog(getString(R.string.not_available, settings.url())) + dialog(getString(R.string.not_available, settings.url)) return } 401 -> { @@ -77,9 +79,9 @@ class InitializationActivity : AppCompatActivity() { } } - var response = exception.body() + var response = exception.body response = response.substring(0, 200.coerceAtMost(response.length)) - dialog(getString(R.string.other_error, settings.url(), exception.code(), response)) + dialog(getString(R.string.other_error, settings.url, exception.code, response)) } private fun dialog(message: String) { @@ -94,7 +96,7 @@ class InitializationActivity : AppCompatActivity() { private fun authenticated(user: User) { Log.i("Authenticated as ${user.name}") - settings.user(user.name, user.isAdmin) + settings.setUser(user.name, user.isAdmin) requestVersion { startActivity(Intent(this, MessagesActivity::class.java)) finish() @@ -108,9 +110,11 @@ class InitializationActivity : AppCompatActivity() { } private fun requestVersion(runnable: Runnable) { - requestVersion({ version: VersionInfo -> - Log.i("Server version: ${version.version}@${version.buildDate}") - settings.serverVersion(version.version) + requestVersion({ version: VersionInfo? -> + if (version != null) { + Log.i("Server version: ${version.version}@${version.buildDate}") + settings.serverVersion = version.version + } runnable.run() }) { runnable.run() } } @@ -119,8 +123,8 @@ class InitializationActivity : AppCompatActivity() { callback: SuccessCallback, errorCallback: Callback.ErrorCallback ) { - ClientFactory.versionApi(settings.url(), settings.sslSettings()) - .version - .enqueue(Callback.callInUI(this, callback, errorCallback)) + ClientFactory.versionApi(settings.url, settings.sslSettings()) + ?.version + ?.enqueue(Callback.callInUI(this, callback, errorCallback)) } } diff --git a/app/src/main/java/com/github/gotify/login/LoginActivity.kt b/app/src/main/java/com/github/gotify/login/LoginActivity.kt index b618e2f..4c81dc1 100644 --- a/app/src/main/java/com/github/gotify/login/LoginActivity.kt +++ b/app/src/main/java/com/github/gotify/login/LoginActivity.kt @@ -104,8 +104,8 @@ class LoginActivity : AppCompatActivity() { try { ClientFactory.versionApi(fixedUrl, tempSslSettings()) - .version - .enqueue(Callback.callInUI(this, onValidUrl(fixedUrl), onInvalidUrl(fixedUrl))) + ?.version + ?.enqueue(Callback.callInUI(this, onValidUrl(fixedUrl), onInvalidUrl(fixedUrl))) } catch (e: Exception) { binding.checkurlProgress.visibility = View.GONE binding.checkurl.visibility = View.VISIBLE @@ -196,10 +196,10 @@ class LoginActivity : AppCompatActivity() { private fun onValidUrl(url: String): SuccessCallback { return SuccessCallback { version -> - settings.url(url) + settings.url = url binding.checkurlProgress.visibility = View.GONE binding.checkurl.visibility = View.VISIBLE - binding.checkurl.text = getString(R.string.found_gotify_version, version.version) + binding.checkurl.text = getString(R.string.found_gotify_version, version?.version) binding.username.visibility = View.VISIBLE binding.username.requestFocus() binding.password.visibility = View.VISIBLE @@ -222,7 +222,7 @@ class LoginActivity : AppCompatActivity() { binding.login.visibility = View.GONE binding.loginProgress.visibility = View.VISIBLE - val client = ClientFactory.basicAuth(settings.url(), tempSslSettings(), username, password) + val client = ClientFactory.basicAuth(settings.url, tempSslSettings(), username, password) client.createService(UserApi::class.java) .currentUser() .enqueue(Callback.callInUI(this, { newClientDialog(client) }) { @@ -256,16 +256,16 @@ class LoginActivity : AppCompatActivity() { val newClient = Client().name(nameProvider.text.toString()) client.createService(ClientApi::class.java) .createClient(newClient) - .enqueue(Callback.callInUI(this, { onCreatedClient(it) }) { + .enqueue(Callback.callInUI(this, { if (it != null) onCreatedClient(it) }) { onFailedToCreateClient() }) } } private fun onCreatedClient(client: Client) { - settings.token(client.token) - settings.validateSSL(!disableSslValidation) - settings.cert(caCertContents) + settings.token = client.token + settings.validateSSL = !disableSslValidation + settings.cert = caCertContents.toString() Utils.showSnackBar(this, getString(R.string.created_client)) startActivity(Intent(this, InitializationActivity::class.java)) @@ -284,10 +284,10 @@ class LoginActivity : AppCompatActivity() { } private fun versionError(url: String, exception: ApiException): String { - return getString(R.string.version_failed_status_code, "$url/version", exception.code()) + return getString(R.string.version_failed_status_code, "$url/version", exception.code) } private fun tempSslSettings(): SSLSettings { - return SSLSettings(!disableSslValidation, caCertContents) + return SSLSettings(!disableSslValidation, caCertContents.toString()) } } diff --git a/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.kt b/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.kt index ee268e2..64e68f3 100644 --- a/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.kt +++ b/app/src/main/java/com/github/gotify/messages/ListMessageAdapter.kt @@ -79,7 +79,7 @@ class ListMessageAdapter( holder.message!!.text = message.message.message } holder.title!!.text = message.message.title - picasso.load(Utils.resolveAbsoluteUrl("${settings.url()}/", message.image)) + picasso.load(Utils.resolveAbsoluteUrl("${settings.url}/", message.image)) .error(R.drawable.ic_alarm) .placeholder(R.drawable.ic_placeholder) .into(holder.image) @@ -144,7 +144,7 @@ class ListMessageAdapter( if (dateTime != null) { text = if (relativeTimeFormat) { // Relative time format - Utils.dateToRelative(dateTime) + Utils.dateToRelative(dateTime!!) } else { // Absolute time format val time = dateTime!!.toInstant().toEpochMilli() diff --git a/app/src/main/java/com/github/gotify/messages/MessagesActivity.kt b/app/src/main/java/com/github/gotify/messages/MessagesActivity.kt index e5df8a5..34bd7e7 100644 --- a/app/src/main/java/com/github/gotify/messages/MessagesActivity.kt +++ b/app/src/main/java/com/github/gotify/messages/MessagesActivity.kt @@ -196,7 +196,7 @@ class MessagesActivity : AppCompatActivity(), NavigationView.OnNavigationItemSel .get() .load( Utils.resolveAbsoluteUrl( - viewModel.settings.url() + "/", app.image + viewModel.settings.url + "/", app.image ) ) .error(R.drawable.ic_alarm) @@ -223,12 +223,12 @@ class MessagesActivity : AppCompatActivity(), NavigationView.OnNavigationItemSel val headerView: View = binding.navView.getHeaderView(0) val settings = viewModel.settings val user = headerView.findViewById(R.id.header_user) - user.text = settings.user().name + user.text = settings.user?.name val connection = headerView.findViewById(R.id.header_connection) - connection.text = getString(R.string.connection, settings.user().name, settings.url()) + connection.text = getString(R.string.connection, settings.user?.name, settings.url) val version = headerView.findViewById(R.id.header_version) version.text = - getString(R.string.versions, BuildConfig.VERSION_NAME, settings.serverVersion()) + getString(R.string.versions, BuildConfig.VERSION_NAME, settings.serverVersion) val refreshAll = headerView.findViewById(R.id.refresh_all) refreshAll.setOnClickListener { view: View? -> onRefreshAll( @@ -480,7 +480,7 @@ class MessagesActivity : AppCompatActivity(), NavigationView.OnNavigationItemSel private inner class UpdateMissedMessages : AsyncTask() { override fun doInBackground(vararg ids: Long?): Boolean { - val id = Utils.first(ids) + val id = ids.first()!! if (id == -1L) { return false } @@ -488,8 +488,7 @@ class MessagesActivity : AppCompatActivity(), NavigationView.OnNavigationItemSel viewModel.client.createService( MessageApi::class.java ) - ) - .missingMessages(id) + ).missingMessages(id).filterNotNull() viewModel.messages.addMessages(newMessages) return newMessages.isNotEmpty() } @@ -528,7 +527,7 @@ class MessagesActivity : AppCompatActivity(), NavigationView.OnNavigationItemSel private fun deleteApp(appId: Long) { val settings = viewModel.settings val client = - ClientFactory.clientToken(settings.url(), settings.sslSettings(), settings.token()) + ClientFactory.clientToken(settings.url, settings.sslSettings(), settings.token) client.createService(ApplicationApi::class.java) .deleteApp(appId) .enqueue( @@ -561,7 +560,7 @@ class MessagesActivity : AppCompatActivity(), NavigationView.OnNavigationItemSel } override fun doInBackground(vararg appIds: Long?): Long { - val appId = Utils.first(appIds) + val appId = appIds.first()!! viewModel.messages.loadMoreIfNotPresent(appId) return appId } @@ -610,20 +609,19 @@ class MessagesActivity : AppCompatActivity(), NavigationView.OnNavigationItemSel } } - private inner class DeleteClientAndNavigateToLogin : - AsyncTask() { + private inner class DeleteClientAndNavigateToLogin : AsyncTask() { override fun doInBackground(vararg ignore: Void?): Void? { val settings = viewModel.settings val api = ClientFactory.clientToken( - settings.url(), settings.sslSettings(), settings.token() + settings.url, settings.sslSettings(), settings.token ) .createService(ClientApi::class.java) stopService(Intent(this@MessagesActivity, WebSocketService::class.java)) try { - val clients = Api.execute(api.clients) + val clients = Api.execute(api.clients) ?: emptyList() var currentClient: Client? = null for (client in clients) { - if (client.token == settings.token()) { + if (client.token == settings.token) { currentClient = client break } diff --git a/app/src/main/java/com/github/gotify/messages/MessagesModel.kt b/app/src/main/java/com/github/gotify/messages/MessagesModel.kt index bf8377c..10c5f54 100644 --- a/app/src/main/java/com/github/gotify/messages/MessagesModel.kt +++ b/app/src/main/java/com/github/gotify/messages/MessagesModel.kt @@ -27,7 +27,7 @@ class MessagesModel(parentView: Activity) : ViewModel() { init { settings = Settings(parentView) picassoHandler = PicassoHandler(parentView, settings) - client = ClientFactory.clientToken(settings.url(), settings.sslSettings(), settings.token()) + client = ClientFactory.clientToken(settings.url, settings.sslSettings(), settings.token) appsHolder = ApplicationHolder(parentView, client) messages = MessageFacade(client.createService(MessageApi::class.java), appsHolder) } diff --git a/app/src/main/java/com/github/gotify/messages/provider/ApplicationHolder.kt b/app/src/main/java/com/github/gotify/messages/provider/ApplicationHolder.kt index 84e1139..a27e4c7 100644 --- a/app/src/main/java/com/github/gotify/messages/provider/ApplicationHolder.kt +++ b/app/src/main/java/com/github/gotify/messages/provider/ApplicationHolder.kt @@ -23,10 +23,8 @@ class ApplicationHolder(private val activity: Activity, private val client: ApiC .enqueue( Callback.callInUI( activity, - { apps: List -> - onReceiveApps( - apps - ) + { apps: List? -> + if (apps != null) onReceiveApps(apps) } ) { e: ApiException -> onFailedApps(e) }) } diff --git a/app/src/main/java/com/github/gotify/picasso/PicassoHandler.kt b/app/src/main/java/com/github/gotify/picasso/PicassoHandler.kt index e60254d..ad780bf 100644 --- a/app/src/main/java/com/github/gotify/picasso/PicassoHandler.kt +++ b/app/src/main/java/com/github/gotify/picasso/PicassoHandler.kt @@ -46,7 +46,7 @@ class PicassoHandler(private val context: Context, private val settings: Setting } @Throws(IOException::class) - fun getImageFromUrl(url: String): Bitmap { + fun getImageFromUrl(url: String?): Bitmap { return picasso.load(url).get() } @@ -56,7 +56,7 @@ class PicassoHandler(private val context: Context, private val settings: Setting } try { return getImageFromUrl( - Utils.resolveAbsoluteUrl("${settings.url()}/", appIdToAppImage[appId]) + Utils.resolveAbsoluteUrl("${settings.url}/", appIdToAppImage[appId]) ) } catch (e: IOException) { Log.e("Could not load image for notification", e) @@ -65,12 +65,12 @@ class PicassoHandler(private val context: Context, private val settings: Setting } fun updateAppIds() { - ClientFactory.clientToken(settings.url(), settings.sslSettings(), settings.token()) + ClientFactory.clientToken(settings.url, settings.sslSettings(), settings.token) .createService(ApplicationApi::class.java) .apps .enqueue(Callback.call({ apps -> appIdToAppImage.clear() - appIdToAppImage.putAll(MessageImageCombiner.appIdToImage(apps)) + appIdToAppImage.putAll(MessageImageCombiner.appIdToImage(apps ?: emptyList())) }) { appIdToAppImage.clear() }) } diff --git a/app/src/main/java/com/github/gotify/service/WebSocketConnection.kt b/app/src/main/java/com/github/gotify/service/WebSocketConnection.kt index a59acd0..a5e72ae 100644 --- a/app/src/main/java/com/github/gotify/service/WebSocketConnection.kt +++ b/app/src/main/java/com/github/gotify/service/WebSocketConnection.kt @@ -18,7 +18,7 @@ import okhttp3.* internal class WebSocketConnection( private val baseUrl: String, - settings: SSLSettings?, + settings: SSLSettings, private val token: String, private val connectivityManager: ConnectivityManager, private val alarmManager: AlarmManager diff --git a/app/src/main/java/com/github/gotify/service/WebSocketService.kt b/app/src/main/java/com/github/gotify/service/WebSocketService.kt index b84edb4..ba3718e 100644 --- a/app/src/main/java/com/github/gotify/service/WebSocketService.kt +++ b/app/src/main/java/com/github/gotify/service/WebSocketService.kt @@ -45,9 +45,9 @@ class WebSocketService : Service() { super.onCreate() settings = Settings(this) val client = ClientFactory.clientToken( - settings.url(), + settings.url, settings.sslSettings(), - settings.token() + settings.token ) missingMessageUtil = MissedMessageUtil(client.createService(MessageApi::class.java)) Log.i("Create ${javaClass.simpleName}") @@ -63,7 +63,7 @@ class WebSocketService : Service() { Log.w("Destroy ${javaClass.simpleName}") } - override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int { + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { Log.init(this) if (connection != null) { connection!!.close() @@ -80,16 +80,16 @@ class WebSocketService : Service() { showForegroundNotification(getString(R.string.websocket_init)) if (lastReceivedMessage.get() == NOT_LOADED) { - missingMessageUtil.lastReceivedMessage { lastReceivedMessage.set(it) } + missingMessageUtil.lastReceivedMessage { lastReceivedMessage.set(it ?: 0L) } } val cm = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager val alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager connection = WebSocketConnection( - settings.url(), + settings.url, settings.sslSettings(), - settings.token(), + settings.token, cm, alarmManager ) @@ -105,7 +105,7 @@ class WebSocketService : Service() { onNetworkFailure(minutes) } }) - .onMessage { onMessage(it) } + .onMessage { if (it != null) onMessage(it) } .onReconnected { notifyMissedNotifications() } .start() @@ -120,9 +120,9 @@ class WebSocketService : Service() { getString(R.string.websocket_closed), getString(R.string.websocket_reconnect) ) ClientFactory.userApiWithToken(settings) - .currentUser() - .enqueue(Callback.call({ doReconnect() }) { exception -> - if (exception.code() == 401) { + ?.currentUser() + ?.enqueue(Callback.call({ doReconnect() }) { exception -> + if (exception.code == 401) { showForegroundNotification( getString(R.string.user_action), getString(R.string.websocket_closed_logout) @@ -164,7 +164,7 @@ class WebSocketService : Service() { return } - val messages = missingMessageUtil.missingMessages(messageId) + val messages = missingMessageUtil.missingMessages(messageId).filterNotNull() if (messages.size > 5) { onGroupedMessages(messages) diff --git a/app/src/main/java/com/github/gotify/sharing/ShareActivity.kt b/app/src/main/java/com/github/gotify/sharing/ShareActivity.kt index 712d82c..28773bc 100644 --- a/app/src/main/java/com/github/gotify/sharing/ShareActivity.kt +++ b/app/src/main/java/com/github/gotify/sharing/ShareActivity.kt @@ -58,9 +58,9 @@ class ShareActivity : AppCompatActivity() { } val client = ClientFactory.clientToken( - settings.url(), + settings.url, settings.sslSettings(), - settings.token() + settings.token ) appsHolder = ApplicationHolder(this, client) appsHolder.onUpdate { @@ -116,7 +116,7 @@ class ShareActivity : AppCompatActivity() { PushMessage({ val pushClient = ClientFactory.clientToken( - settings.url(), + settings.url, settings.sslSettings(), appsHolder.get()[appIndex].token ) @@ -150,7 +150,7 @@ class ShareActivity : AppCompatActivity() { ) : AsyncTask() { @Deprecated("Deprecated in Java") override fun doInBackground(vararg messages: Message?): String { - return backgroundAction(Utils.first(messages)) + return backgroundAction(messages.first()) } @Deprecated("Deprecated in Java")