Slide 26
Slide 26 text
&SSPS
sealed class Error {
abstract fun handle()
class MaintenanceError(
private val context: Context
) : Error() {
override fun handle() {
context.startActivity(
MaintenanceActivity.createIntent(context).apply {
addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
}
)
}
override fun equals(other: Any?): Boolean = other is MaintenanceError
override fun hashCode(): Int {
return context.hashCode()
}
}
class UnknownError(
private val view: View,
private val throwable: Throwable
) : Error() {
override fun handle() {
FirebaseCrashlytics.getInstance().recordException(throwable)
Snackbar.make(view, "ෆ໌ͳΤϥʔͰ͢", Snackbar.LENGTH_SHORT).show()
}
}
companion object {
fun convert(
context: Context,
view: View,
throwable: Throwable
): Error = when {
throwable is HttpException && throwable.code() == 503 -> MaintenanceError(context)
else -> UnknownError(view, throwable)
}
}
}