Skip to content

Instantly share code, notes, and snippets.

@alorma
Created March 1, 2018 17:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alorma/222d6ab85cfeacd0422ae7a2faae7892 to your computer and use it in GitHub Desktop.
Save alorma/222d6ab85cfeacd0422ae7a2faae7892 to your computer and use it in GitHub Desktop.
class CreateTriggerPresenter @Inject constructor(
private val permissionRequest: DexterBuilder.SinglePermissionListener,
private val androidGetContact: AndroidGetContact,
val logger: Logger)
: BasePresenter<CreateTriggerState, CreateTriggerRoute, CreateTriggerAction, CreateTriggerView>(logger) {
override fun action(action: CreateTriggerAction) {
when (action) {
is RequestContactAction -> onContactRequest()
is ContactImportAction -> onContactImport(action)
}
}
private fun onContactRequest() {
permissionRequest.withListener(object : BasePermissionListener() {
override fun onPermissionGranted(response: PermissionGrantedResponse) {
navigate(SelectContact())
}
override fun onPermissionDenied(response: PermissionDeniedResponse) {
render(if (response.isPermanentlyDenied) {
DeniedAlwaysPermissionMessage()
} else {
DeniedPermissionMessage()
})
}
override fun onPermissionRationaleShouldBeShown(permission: PermissionRequest, token: PermissionToken) {
token.continuePermissionRequest()
}
}).check()
}
private fun onContactImport(action: ContactImportAction) {
disposables += androidGetContact.loadContact(action.uri)
.subscribeOnIO()
.observeOnUI()
.subscribe({
render(ContactLoaded(it))
}, {
logger.e("Contact error: $it", it)
})
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment