Я думаю, вы не должны идти по этому пути, так как этот разграничивает активность и фрагмент - они оба очень разные.
Это путь, но я бы этого не сделал:
fun <T> Any.callAPI(call: Call<T>?, listener: BaseFragment.OnFragmentInteractionListener, onSucceed: (T?) -> Unit) {
when(this){
is BaseFragment -> performCall(call, listener, onSucceed, {})
is BaseActivity -> performCall(call, onSucceed, {})
}
}
fun <T> BaseActivity.performCall(call: Call<T>?, onSucceed: (T?) -> Unit, onError: (errorCode: String) -> Unit) {
NetworkManager.instance.performCall(call,
object : NetworkManager.OnRequestCallback<T> {
override fun onSuccess(body: T?) {
onSucceed(body)
}
override fun onError(errorCode: String?) {}
override fun onTwoFactorRequired() {
onAuthenticationNeeded()
}
}) { onAppUpdateNeeded() }
}
fun <T> BaseFragment.performCall(call: Call<T>?, onSucceed: (T?) -> Unit, onError: (errorCode: String) -> Unit) {
NetworkManager.instance.performCall(call,
object : NetworkManager.OnRequestCallback<T> {
override fun onSuccess(body: T?) {
onSucceed(body)
}
override fun onError(errorCode: String?) {}
override fun onTwoFactorRequired() {
onAuthenticationNeeded()
}
}) { onAppUpdateNeeded() }
}