forked from github/wulkanowy-mirror
Remove savedInstance in MessagePreviewFragment (#2477)
This commit is contained in:
parent
0e99c81eb8
commit
88def5eff8
@ -47,7 +47,6 @@ class MailboxChooserDialog : BaseDialogFragment<DialogMailboxChooserBinding>(),
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
presenter.onAttachView(
|
presenter.onAttachView(
|
||||||
|
@ -82,10 +82,10 @@ class MessagePreviewFragment :
|
|||||||
get() = getString(R.string.message_not_exists)
|
get() = getString(R.string.message_not_exists)
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val MESSAGE_ID_KEY = "message_id"
|
private const val MESSAGE_ARG_KEY = "message"
|
||||||
|
|
||||||
fun newInstance(message: Message) = MessagePreviewFragment().apply {
|
fun newInstance(message: Message) = MessagePreviewFragment().apply {
|
||||||
arguments = bundleOf(MESSAGE_ID_KEY to message)
|
arguments = bundleOf(MESSAGE_ARG_KEY to message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ class MessagePreviewFragment :
|
|||||||
messageContainer = binding.messagePreviewContainer
|
messageContainer = binding.messagePreviewContainer
|
||||||
presenter.onAttachView(
|
presenter.onAttachView(
|
||||||
view = this,
|
view = this,
|
||||||
message = (savedInstanceState ?: arguments)?.serializable(MESSAGE_ID_KEY),
|
message = requireArguments().serializable(MESSAGE_ARG_KEY),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -233,11 +233,6 @@ class MessagePreviewFragment :
|
|||||||
(activity as MainActivity).popView()
|
(activity as MainActivity).popView()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onSaveInstanceState(outState: Bundle) {
|
|
||||||
outState.putSerializable(MESSAGE_ID_KEY, presenter.messageWithAttachments?.message)
|
|
||||||
super.onSaveInstanceState(outState)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
presenter.onDetachView()
|
presenter.onDetachView()
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
|
@ -3,10 +3,15 @@ package io.github.wulkanowy.ui.modules.message.preview
|
|||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import androidx.core.text.parseAsHtml
|
import androidx.core.text.parseAsHtml
|
||||||
import io.github.wulkanowy.R
|
import io.github.wulkanowy.R
|
||||||
import io.github.wulkanowy.data.*
|
|
||||||
import io.github.wulkanowy.data.db.entities.Message
|
import io.github.wulkanowy.data.db.entities.Message
|
||||||
import io.github.wulkanowy.data.db.entities.MessageWithAttachment
|
import io.github.wulkanowy.data.db.entities.MessageWithAttachment
|
||||||
import io.github.wulkanowy.data.enums.MessageFolder
|
import io.github.wulkanowy.data.enums.MessageFolder
|
||||||
|
import io.github.wulkanowy.data.flatResourceFlow
|
||||||
|
import io.github.wulkanowy.data.logResourceStatus
|
||||||
|
import io.github.wulkanowy.data.onResourceData
|
||||||
|
import io.github.wulkanowy.data.onResourceError
|
||||||
|
import io.github.wulkanowy.data.onResourceNotLoading
|
||||||
|
import io.github.wulkanowy.data.onResourceSuccess
|
||||||
import io.github.wulkanowy.data.repositories.MessageRepository
|
import io.github.wulkanowy.data.repositories.MessageRepository
|
||||||
import io.github.wulkanowy.data.repositories.PreferencesRepository
|
import io.github.wulkanowy.data.repositories.PreferencesRepository
|
||||||
import io.github.wulkanowy.data.repositories.StudentRepository
|
import io.github.wulkanowy.data.repositories.StudentRepository
|
||||||
@ -28,17 +33,17 @@ class MessagePreviewPresenter @Inject constructor(
|
|||||||
private val analytics: AnalyticsHelper
|
private val analytics: AnalyticsHelper
|
||||||
) : BasePresenter<MessagePreviewView>(errorHandler, studentRepository) {
|
) : BasePresenter<MessagePreviewView>(errorHandler, studentRepository) {
|
||||||
|
|
||||||
var messageWithAttachments: MessageWithAttachment? = null
|
private var messageWithAttachments: MessageWithAttachment? = null
|
||||||
|
|
||||||
private lateinit var lastError: Throwable
|
private lateinit var lastError: Throwable
|
||||||
|
|
||||||
private var retryCallback: () -> Unit = {}
|
private var retryCallback: () -> Unit = {}
|
||||||
|
|
||||||
fun onAttachView(view: MessagePreviewView, message: Message?) {
|
fun onAttachView(view: MessagePreviewView, message: Message) {
|
||||||
super.onAttachView(view)
|
super.onAttachView(view)
|
||||||
view.initView()
|
view.initView()
|
||||||
errorHandler.showErrorMessage = ::showErrorViewOnError
|
errorHandler.showErrorMessage = ::showErrorViewOnError
|
||||||
loadData(requireNotNull(message))
|
loadData(message)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onMessageLoadRetry(message: Message) {
|
private fun onMessageLoadRetry(message: Message) {
|
||||||
|
@ -4,30 +4,31 @@ import android.content.Intent
|
|||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Parcelable
|
import android.os.Parcelable
|
||||||
|
import androidx.core.os.BundleCompat
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
|
||||||
|
// Even though API was introduced in 33, we use 34 as 33 is bugged in some scenarios.
|
||||||
|
|
||||||
inline fun <reified T : Serializable> Bundle.serializable(key: String): T = when {
|
inline fun <reified T : Serializable> Bundle.serializable(key: String): T = when {
|
||||||
Build.VERSION.SDK_INT >= 33 -> getSerializable(key, T::class.java)!!
|
Build.VERSION.SDK_INT >= 34 -> getSerializable(key, T::class.java)!!
|
||||||
else -> @Suppress("DEPRECATION") getSerializable(key) as T
|
else -> @Suppress("DEPRECATION") getSerializable(key) as T
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <reified T : Serializable> Bundle.nullableSerializable(key: String): T? = when {
|
inline fun <reified T : Serializable> Bundle.nullableSerializable(key: String): T? = when {
|
||||||
Build.VERSION.SDK_INT >= 33 -> getSerializable(key, T::class.java)
|
Build.VERSION.SDK_INT >= 34 -> getSerializable(key, T::class.java)
|
||||||
else -> @Suppress("DEPRECATION") getSerializable(key) as T?
|
else -> @Suppress("DEPRECATION") getSerializable(key) as T?
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
inline fun <reified T : Parcelable> Bundle.parcelableArray(key: String): Array<T>? = when {
|
inline fun <reified T : Parcelable> Bundle.parcelableArray(key: String): Array<T>? =
|
||||||
Build.VERSION.SDK_INT >= 33 -> getParcelableArray(key, T::class.java)
|
BundleCompat.getParcelableArray(this, key, T::class.java) as Array<T>?
|
||||||
else -> @Suppress("DEPRECATION") getParcelableArray(key) as Array<T>?
|
|
||||||
}
|
|
||||||
|
|
||||||
inline fun <reified T : Serializable> Intent.serializable(key: String): T = when {
|
inline fun <reified T : Serializable> Intent.serializable(key: String): T = when {
|
||||||
Build.VERSION.SDK_INT >= 33 -> getSerializableExtra(key, T::class.java)!!
|
Build.VERSION.SDK_INT >= 34 -> getSerializableExtra(key, T::class.java)!!
|
||||||
else -> @Suppress("DEPRECATION") getSerializableExtra(key) as T
|
else -> @Suppress("DEPRECATION") getSerializableExtra(key) as T
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <reified T : Serializable> Intent.nullableSerializable(key: String): T? = when {
|
inline fun <reified T : Serializable> Intent.nullableSerializable(key: String): T? = when {
|
||||||
Build.VERSION.SDK_INT >= 33 -> getSerializableExtra(key, T::class.java)
|
Build.VERSION.SDK_INT >= 34 -> getSerializableExtra(key, T::class.java)
|
||||||
else -> @Suppress("DEPRECATION") getSerializableExtra(key) as T?
|
else -> @Suppress("DEPRECATION") getSerializableExtra(key) as T?
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user