From 118c531d003305a38ba68033363a881251022561 Mon Sep 17 00:00:00 2001 From: Danil Nikolaev Date: Sun, 10 Oct 2021 18:38:43 +0300 Subject: [PATCH] fix VkLink.kt target NullPointerException --- .../com/meloda/fast/api/ApiExtensions.kt | 1 - .../fast/api/model/attachments/VkLink.kt | 2 +- .../api/model/base/attachments/BaseVkLink.kt | 2 +- .../com/meloda/fast/base/BaseActivity.kt | 8 -------- .../com/meloda/fast/common/AppSettings.kt | 1 + .../conversations/ConversationsFragment.kt | 2 +- .../fast/screens/login/LoginFragment.kt | 9 ++++++--- .../fast/screens/login/LoginViewModel.kt | 19 ++++++++++++------- .../meloda/fast/screens/main/MainFragment.kt | 1 - 9 files changed, 22 insertions(+), 23 deletions(-) diff --git a/app/src/main/kotlin/com/meloda/fast/api/ApiExtensions.kt b/app/src/main/kotlin/com/meloda/fast/api/ApiExtensions.kt index 95b757b1..83a8ee8c 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/ApiExtensions.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/ApiExtensions.kt @@ -4,5 +4,4 @@ object ApiExtensions { val Boolean.intString get() = (if (this) 1 else 0).toString() - } \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/attachments/VkLink.kt b/app/src/main/kotlin/com/meloda/fast/api/model/attachments/VkLink.kt index 2a4a9cd0..321c71ac 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/attachments/VkLink.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/attachments/VkLink.kt @@ -9,7 +9,7 @@ data class VkLink( val title: String?, val caption: String?, val photo: VkPhoto?, - val target: String, + val target: String?, val isFavorite: Boolean ) : VkAttachment() { diff --git a/app/src/main/kotlin/com/meloda/fast/api/model/base/attachments/BaseVkLink.kt b/app/src/main/kotlin/com/meloda/fast/api/model/base/attachments/BaseVkLink.kt index c127f0c2..4f1b59c5 100644 --- a/app/src/main/kotlin/com/meloda/fast/api/model/base/attachments/BaseVkLink.kt +++ b/app/src/main/kotlin/com/meloda/fast/api/model/base/attachments/BaseVkLink.kt @@ -9,7 +9,7 @@ data class BaseVkLink( val title: String?, val caption: String?, val photo: BaseVkPhoto?, - val target: String, + val target: String?, val is_favorite: Boolean ) : BaseVkAttachment() { diff --git a/app/src/main/kotlin/com/meloda/fast/base/BaseActivity.kt b/app/src/main/kotlin/com/meloda/fast/base/BaseActivity.kt index 1c910dad..a3e6804e 100644 --- a/app/src/main/kotlin/com/meloda/fast/base/BaseActivity.kt +++ b/app/src/main/kotlin/com/meloda/fast/base/BaseActivity.kt @@ -1,13 +1,11 @@ package com.meloda.fast.base import android.os.Bundle -import android.view.View import androidx.annotation.LayoutRes import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleRegistry -import com.google.android.material.snackbar.Snackbar abstract class BaseActivity : AppCompatActivity, LifecycleOwner { @@ -39,10 +37,4 @@ abstract class BaseActivity : AppCompatActivity, LifecycleOwner { lifecycleRegistry.currentState = Lifecycle.State.DESTROYED } - val rootView: View? get() = findViewById(android.R.id.content) - - fun requireRootView() = rootView!! - - var errorSnackbar: Snackbar? = null - } \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/common/AppSettings.kt b/app/src/main/kotlin/com/meloda/fast/common/AppSettings.kt index 1f9d8b6b..c4039eb1 100644 --- a/app/src/main/kotlin/com/meloda/fast/common/AppSettings.kt +++ b/app/src/main/kotlin/com/meloda/fast/common/AppSettings.kt @@ -13,6 +13,7 @@ import kotlinx.coroutines.Job object AppSettings { val keyIsMultilineEnabled = booleanPreferencesKey("isMultilineEnabled") + } val Context.dataStore: DataStore by preferencesDataStore( diff --git a/app/src/main/kotlin/com/meloda/fast/screens/conversations/ConversationsFragment.kt b/app/src/main/kotlin/com/meloda/fast/screens/conversations/ConversationsFragment.kt index a0024f3f..dc52b546 100644 --- a/app/src/main/kotlin/com/meloda/fast/screens/conversations/ConversationsFragment.kt +++ b/app/src/main/kotlin/com/meloda/fast/screens/conversations/ConversationsFragment.kt @@ -91,7 +91,7 @@ class ConversationsFragment : requireContext().dataStore.data.map { adapter.isMultilineEnabled = it[AppSettings.keyIsMultilineEnabled] ?: true adapter.notifyItemRangeChanged(0, adapter.itemCount) - }.collect { } + }.collect() } binding.createChat.setOnClickListener {} diff --git a/app/src/main/kotlin/com/meloda/fast/screens/login/LoginFragment.kt b/app/src/main/kotlin/com/meloda/fast/screens/login/LoginFragment.kt index ce4b2417..d808d711 100644 --- a/app/src/main/kotlin/com/meloda/fast/screens/login/LoginFragment.kt +++ b/app/src/main/kotlin/com/meloda/fast/screens/login/LoginFragment.kt @@ -77,7 +77,7 @@ class LoginFragment : BaseViewModelFragment(R.layout.fragment_lo is ErrorEvent -> showErrorSnackbar(event.errorText) is CaptchaEvent -> showCaptchaDialog(event.sid, event.image) is ValidationEvent -> showValidationRequired(event.sid) - is SuccessAuth -> goToMain(event.haveAuthorized) + is SuccessAuth -> goToMain(event) is CodeSent -> showValidationDialog() is StartProgressEvent -> onProgressStarted() @@ -384,8 +384,11 @@ class LoginFragment : BaseViewModelFragment(R.layout.fragment_lo snackbar.show() } - private fun goToMain(haveAuthorized: Boolean) = lifecycleScope.launch { - if (haveAuthorized) delay(500) + private fun goToMain(event: SuccessAuth) = lifecycleScope.launch { + UserConfig.userId = event.userId + UserConfig.accessToken = event.vkToken + + if (event.haveAuthorized) delay(500) launchWebView() diff --git a/app/src/main/kotlin/com/meloda/fast/screens/login/LoginViewModel.kt b/app/src/main/kotlin/com/meloda/fast/screens/login/LoginViewModel.kt index f514ba12..c4666d32 100644 --- a/app/src/main/kotlin/com/meloda/fast/screens/login/LoginViewModel.kt +++ b/app/src/main/kotlin/com/meloda/fast/screens/login/LoginViewModel.kt @@ -1,11 +1,10 @@ package com.meloda.fast.screens.login import androidx.lifecycle.viewModelScope -import com.meloda.fast.api.UserConfig import com.meloda.fast.api.VKConstants import com.meloda.fast.api.VKException -import com.meloda.fast.api.network.auth.RequestAuthDirect import com.meloda.fast.api.network.auth.AuthDataSource +import com.meloda.fast.api.network.auth.RequestAuthDirect import com.meloda.fast.base.viewmodel.* import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch @@ -45,10 +44,12 @@ class LoginViewModel @Inject constructor( return@makeJob } - UserConfig.userId = it.userId - UserConfig.accessToken = it.accessToken - - sendEvent(SuccessAuth()) + sendEvent( + SuccessAuth( + userId = it.userId, + vkToken = it.accessToken + ) + ) }, onError = { if (it !is VKException) { @@ -72,4 +73,8 @@ class LoginViewModel @Inject constructor( object CodeSent : VkEvent() -data class SuccessAuth(val haveAuthorized: Boolean = true) : VkEvent() \ No newline at end of file +data class SuccessAuth( + val haveAuthorized: Boolean = true, + val userId: Int, + val vkToken: String +) : VkEvent() \ No newline at end of file diff --git a/app/src/main/kotlin/com/meloda/fast/screens/main/MainFragment.kt b/app/src/main/kotlin/com/meloda/fast/screens/main/MainFragment.kt index 58f5fcf9..980c9f8f 100644 --- a/app/src/main/kotlin/com/meloda/fast/screens/main/MainFragment.kt +++ b/app/src/main/kotlin/com/meloda/fast/screens/main/MainFragment.kt @@ -42,5 +42,4 @@ class MainFragment : BaseViewModelFragment(R.layout.fragment_main } } - } \ No newline at end of file