package sushi.hardcore.droidfs.file_operations import android.content.Context import sushi.hardcore.droidfs.R import sushi.hardcore.droidfs.Theme import sushi.hardcore.droidfs.widgets.CustomAlertDialogBuilder class TaskResult private constructor(val state: State, val failedItem: T?, val errorMessage: String?) { enum class State { SUCCESS, /** * Task completed but failed */ FAILED, /** * Task thrown an exception */ ERROR, CANCELLED, } fun showErrorAlertDialog(context: Context, theme: Theme) { CustomAlertDialogBuilder(context, theme) .setTitle(R.string.error) .setMessage(context.getString(R.string.task_failed, errorMessage)) .setPositiveButton(R.string.ok, null) .show() } companion object { fun completed(failedItem: T?): TaskResult { return if (failedItem == null) { TaskResult(State.SUCCESS, null, null) } else { TaskResult(State.FAILED, failedItem, null) } } fun error(errorMessage: String?): TaskResult { return TaskResult(State.ERROR, null, errorMessage) } fun cancelled(): TaskResult { return TaskResult(State.CANCELLED, null, null) } } }