package com.topjohnwu.magisk.arch

import android.content.Context
import kotlinx.coroutines.CoroutineScope

/**
 * Class for passing events from ViewModels to Activities/Fragments
 * (see https://medium.com/google-developers/livedata-with-snackbar-navigation-and-other-events-the-singleliveevent-case-ac2622673150)
 */
abstract class ViewEvent

abstract class ViewEventWithScope: ViewEvent() {
    lateinit var scope: CoroutineScope
}

interface ContextExecutor {
    operator fun invoke(context: Context)
}

interface ActivityExecutor {
    operator fun invoke(activity: UIActivity<*>)
}

interface FragmentExecutor {
    operator fun invoke(fragment: BaseFragment<*>)
}
