Skip to content

Instantly share code, notes, and snippets.

@photizzo
Created June 5, 2020 06:56
Show Gist options
  • Save photizzo/57bdcbf4f2caf248b21bc5ad588a72cd to your computer and use it in GitHub Desktop.
Save photizzo/57bdcbf4f2caf248b21bc5ad588a72cd to your computer and use it in GitHub Desktop.
Visitor implementatin logic
package com.entraid.remote.implementation
import android.content.Context
import android.util.Log
import bolts.Continuation
import bolts.Task
import com.entraid.data.repository.visitors.VisitorRemote
import com.entraid.models.EluziniParseDbConstants
import com.entraid.models.GetHostResponseRequestModel
import com.entraid.models.welcome.*
import com.entraid.remote.*
import com.entraid.remote.model.NewMessage
import com.entraid.remote.service.EluziniApiService
import com.google.firebase.database.FirebaseDatabase
import com.parse.*
import io.reactivex.Observable
import io.reactivex.ObservableEmitter
import io.reactivex.ObservableOnSubscribe
import java.io.File
import java.util.*
import java.util.concurrent.TimeUnit
import javax.inject.Inject
class VisitorRemoteImplementation @Inject constructor(
private val eluziniApiService: EluziniApiService,
private val context: Context
) : VisitorRemote {
override fun getHosts(getHostsRequest: GetHostsRequest): Observable<HostsResponse> {
return Observable.create { emitter ->
val query = ParseUser.getQuery()
query.whereEqualTo("domain", getHostsRequest.domain) // find adults
query.findInBackground(object : FindCallback<ParseUser> {
override fun done(objects: List<ParseUser>, e: ParseException?) {
if (e == null) {
// The query was successful.
val hosts = objects.map {
val fullName = it.getString("name")
val objectId = it.objectId
val parseUser = it
Hosts(fullName ?: "", objectId, 0, parseUser)
}
emitter.onNext(HostsResponse(hosts))
} else {
// Something went wrong.
emitter.onError(Throwable(e.localizedMessage))
}
}
})
}
}
override fun generateVisitorId(): Observable<String> {
return Observable.timer(3000, TimeUnit.MILLISECONDS)
.map {
UUID.randomUUID().toString()
}
}
override fun visitorCheckIn(submitVisitorCheckInRequest: VisitorCheckInRequest): Observable<VisitorCheckInResponse> {
var savedParsedObject: ParseObject? = null
var currentUser: ParseUser? = null
val observable: Observable<VisitorCheckInResponse> = Observable.create { emitter ->
//write the image file first
var parseObjectVisitors: ParseObject? = null
var parseObjectConversations: ParseObject? = null
val userIds = listOf(
submitVisitorCheckInRequest.selectedHost?.objectId,
(submitVisitorCheckInRequest.currentUserParse as ParseUser).objectId
)
val userQuery = ParseUser.getQuery()
userQuery.include(EluziniParseDbConstants.User.location)
userQuery.whereEqualTo(EluziniParseDbConstants.User.objectId, ParseUser.getCurrentUser().objectId)
val task = userQuery.firstInBackground
task.continueWithTask(Continuation<ParseUser, Task<ParseUser>> { task ->
if (task.isFaulted) {
task.error.printStackTrace()
emitter.onError(task.error)
null
} else {
currentUser = task.result
// submitVisitorCheckInRequest.imageUrl = parseImageFile.url
return@Continuation /*if (parseSignedNDAFile != null) parseSignedNDAFile.saveInBackground() else*/ task
}
})
.continueWithTask(Continuation<ParseUser, Task<Void>> { task ->
if (task.isFaulted) {
task.error.printStackTrace()
emitter.onError(task.error)
null
} else {
val parseObject = ParseObject(EluziniParseDbConstants.Visitor.VISITOR_TABLE_NAME)
val visitedUser = submitVisitorCheckInRequest.visitedUserParse as ParseUser
val visitedUserLocation = currentUser?.getParseObject(EluziniParseDbConstants.User.location)
Log.e("TAG", "visited user location id ${visitedUserLocation?.objectId} current user ${currentUser?.has(EluziniParseDbConstants.User.location)}")
parseObject.put(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER, visitedUser)
parseObject.put(EluziniParseDbConstants.Visitor.VISITOR_DATA_SENDER, (submitVisitorCheckInRequest.currentUserParse as ParseUser).objectId)
parseObject.put(
EluziniParseDbConstants.Visitor.VISITOR_VISITOR_IMAGE_URL,
submitVisitorCheckInRequest.imageUrl
)
parseObject.put(
EluziniParseDbConstants.Visitor.VISITOR_SIGNED_NDA,
submitVisitorCheckInRequest.signedNDAFile
)
parseObject.put(EluziniParseDbConstants.Visitor.VISITED_DOMAIN, submitVisitorCheckInRequest.domain)
parseObject.put(
EluziniParseDbConstants.Visitor.VISITOR_FULL_NAME,
submitVisitorCheckInRequest.fullName
)
parseObject.put(
EluziniParseDbConstants.Visitor.VISITOR_ORGANIZATION_NAME,
submitVisitorCheckInRequest.organisation
)
parseObject.put(EluziniParseDbConstants.Visitor.VISITOR_EMAIL, submitVisitorCheckInRequest.email)
parseObject.put(EluziniParseDbConstants.Visitor.VISITOR_PHONE, submitVisitorCheckInRequest.phone)
parseObject.put(
EluziniParseDbConstants.Visitor.VISITOR_PURPOSE,
submitVisitorCheckInRequest.purposeOfVisit
)
parseObject.put(
EluziniParseDbConstants.Visitor.VISITOR_ADDRESS,
submitVisitorCheckInRequest.address
)
parseObject.put(EluziniParseDbConstants.Visitor.VISITOR_IS_CHECKED_IN, true)
parseObject.put(
EluziniParseDbConstants.Visitor.VISITOR_PURPOSE_DESC,
submitVisitorCheckInRequest.purposeOfVisit
)
parseObject.put(
EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES,
submitVisitorCheckInRequest.items
)
parseObject.put(
EluziniParseDbConstants.Visitor.VISITOR_SN_NUMBER_OF_ITEMS,
submitVisitorCheckInRequest.itemsSerials
)
parseObject.put(
EluziniParseDbConstants.Visitor.VISITOR_ITEMS_QUANTITY,
submitVisitorCheckInRequest.itemQuantities
)
if(visitedUserLocation != null){
parseObject.put(
EluziniParseDbConstants.Visitor.VISITOR_LOCATION,
visitedUserLocation
)
}
parseObjectVisitors = parseObject
savedParsedObject = parseObject
println("saving visitor check-in object started")
return@Continuation parseObject.saveInBackground()
}
})
.continueWithTask(Continuation<Void, Task<List<ParseObject>>> { task ->
if (task.isFaulted) {
task.error.printStackTrace()
emitter.onError(task.error)
null
} else {
println("saving visitor check-in object successful")
val parseQuery =
ParseQuery<ParseObject>(EluziniParseDbConstants.Conversation.CONVERSATIONS_TABLE_NAME)
parseQuery.whereContainsAll(EluziniParseDbConstants.Conversation.CONVERSATIONS_USERS, userIds)
return@Continuation parseQuery.findInBackground()
}
})
.continueWithTask(Continuation<List<ParseObject>, Task<Void>> { task ->
if (task.isFaulted) {
task.error.printStackTrace()
emitter.onError(task.error)
null
} else {
var parseObject: ParseObject? = null
println("query result returned ")
if (task.result.isEmpty()) {
//no conversation between hosts and visitor create the conversation
parseObject = ParseObject(EluziniParseDbConstants.Conversation.CONVERSATIONS_TABLE_NAME)
parseObject.put(EluziniParseDbConstants.Conversation.CONVERSATIONS_USERS, userIds)
parseObject.put(
EluziniParseDbConstants.Conversation.CONVERSATIONS_USER1,
submitVisitorCheckInRequest.currentUserParse as ParseUser
)
parseObject.put(
EluziniParseDbConstants.Conversation.CONVERSATIONS_USER2,
submitVisitorCheckInRequest.visitedUserParse as ParseUser
)
} else {
parseObject = task.result.get(0)
}
parseObject.put(
EluziniParseDbConstants.Conversation.CONVERSATIONS_LAST_MESSAGE,
"You have a visitor. Please check your notifications to confirm the visitor. "
)
parseObject.put(
EluziniParseDbConstants.Conversation.CONVERSATIONS_MESSAGE_SENDER_ID,
(submitVisitorCheckInRequest.currentUserParse as ParseUser).getObjectId()
)
parseObject.put(EluziniParseDbConstants.Conversation.CONVERSATIONS_MESSAGE_LAST_MESSAGE, Date())
parseObjectConversations = parseObject
return@Continuation parseObject.saveInBackground()
}
})
.continueWithTask(Continuation<Void, Task<Void>> { task ->
if (task.isFaulted) {
task.error.printStackTrace()
emitter.onError(task.error)
null
} else {
val parseObject = ParseObject(EluziniParseDbConstants.ConversationMesages.MESSAGE_TABLE_NAME)
parseObject.put(
EluziniParseDbConstants.ConversationMesages.MESSAGE_VISITOR,
parseObjectVisitors as Any
)
parseObject.put(
EluziniParseDbConstants.ConversationMesages.MESSAGE_CONVERSATION,
parseObjectConversations as Any
)
parseObject.put(
EluziniParseDbConstants.ConversationMesages.MESSAGE_TABLE_MESSAGE,
"You have a visitor. Please check your notifications to confirm the visitor. "
)
parseObject.put(
EluziniParseDbConstants.ConversationMesages.MESSAGE_RECIEVER_ID,
(submitVisitorCheckInRequest.visitedUserParse as ParseUser).getObjectId()
)
parseObject.put(
EluziniParseDbConstants.ConversationMesages.MESSAGE_SENDER,
ParseUser.getCurrentUser()
)
parseObject.put(EluziniParseDbConstants.ConversationMesages.MESSAGE_TYPE, "visitor")
println("conversation is about to be saved. ")
return@Continuation parseObject.saveInBackground()
}
})
.continueWithTask(Continuation<Void, Task<Void>> { task ->
if (task.isFaulted) {
task.error.printStackTrace()
emitter.onError(task.error)
null
} else {
val tableName = savedParsedObject!!.className
val parseObjectId = savedParsedObject!!.objectId
val visitorCheckInResponse = VisitorCheckInResponse(id = 200)
val dateAndTime = "${getDate()} ${getTime()}"
val userId = ParseUser.getCurrentUser().objectId
val message =
"${submitVisitorCheckInRequest.fullName} is here to see you. ${if (submitVisitorCheckInRequest.purposeOfVisit.isNotEmpty()) "\nPurpose of visit: ${submitVisitorCheckInRequest.purposeOfVisit}" else ""}"
val receiverId = (submitVisitorCheckInRequest.visitedUserParse as ParseUser).objectId
val newMessage = NewMessage(message, dateAndTime, userId, tableName, parseObjectId)
val reference = FirebaseDatabase.getInstance().reference
reference.child(EluziniParseDb.FCM_MESSAGES_KEY)
.child(receiverId)
.push().setValue(newMessage)
emitter.onNext(visitorCheckInResponse)
return@Continuation null
}
})
}
return observable.doOnNext {
println("on next called")
}
}
override fun visitorCheckOut(visitorCheckOutRequest: VisitorCheckOutRequest): Observable<VisitorCheckOutResponse> {
var fullName = ""
var savedParseObject: ParseObject? = null
return Observable.create { emitter ->
val visitorParseQuery = ParseQuery<ParseObject>(EluziniParseDbConstants.Visitor.VISITOR_TABLE_NAME)
visitorParseQuery.include(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER)
visitorParseQuery.orderByDescending(EluziniParseDbConstants.Visitor.VISITOR_UPDATED_AT)
visitorParseQuery.getInBackground(visitorCheckOutRequest.visitorId)
.continueWithTask { task ->
if (task.isFaulted) {
task.error.printStackTrace()
emitter.onError(task.error)
null
} else {
val parseObject = task.result
fullName = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_FULL_NAME) ?: ""
val isCheckedIn = parseObject.getBoolean(EluziniParseDbConstants.Visitor.VISITOR_IS_CHECKED_IN)
if (!isCheckedIn) {
emitter.onError(Throwable("Visitor checked out already"))
return@continueWithTask null
}
parseObject.put(EluziniParseDbConstants.Visitor.VISITOR_IS_CHECKED_IN, false)
savedParseObject = parseObject
parseObject.saveInBackground()
}
}.continueWithTask(Continuation<Void, Task<Void>> { task ->
if (task.isFaulted) {
task.error.printStackTrace()
emitter.onError(task.error)
} else {
val tableName = savedParseObject!!.className
val parseObjectId = savedParseObject!!.objectId
val dateAndTime = "${getDate()} ${getTime()}"
val userId = ParseUser.getCurrentUser().objectId
val message = "${fullName} has checked out"
val receiverId = savedParseObject!!.getParseObject(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER)?.objectId?:""
val newMessage = NewMessage(message, dateAndTime, userId, tableName, parseObjectId)
Log.e("TAG", "visitor check out details recevierId: $receiverId \n message: $newMessage ")
val reference = FirebaseDatabase.getInstance().reference
reference.child(EluziniParseDb.FCM_MESSAGES_KEY)
.child(receiverId)
.push().setValue(newMessage)
emitter.onNext(VisitorCheckOutResponse(true))
}
null
})
}
}
override fun findVisitorById(id: String): Observable<VisitorModel> {
return Observable.create { emitter ->
val query = ParseQuery.getQuery<ParseObject>(EluziniParseDbConstants.Visitor.VISITOR_TABLE_NAME)
query.include(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER)
query.getInBackground(id).continueWithTask(Continuation<ParseObject, Task<Void>> { task ->
if (task.isFaulted) {
task.error.printStackTrace()
emitter.onError(task.error)
} else {
val parseObject = task.result
val visitorId = parseObject.objectId
val date = parseObject.createdAt.time.getFormattedDate(context)
val fullName = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_FULL_NAME) ?: ""
val organisation =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ORGANIZATION_NAME) ?: ""
val address = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ADDRESS) ?: ""
val phone = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_PHONE) ?: ""
val email = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_EMAIL) ?: ""
val purposeOfVisit = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_PURPOSE) ?: ""
val items = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: ""
val itemsSerials = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: ""
val itemQuantities = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: ""
val signedNDAFile = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_SIGNED_NDA) ?: ""
val imageUrl =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_VISITOR_IMAGE_URL) ?: ""
val domain = parseObject.getString(EluziniParseDbConstants.Visitor.VISITED_DOMAIN) ?: ""
var visitedUserParse: Any? = null
val isDeclined = parseObject.get(EluziniParseDbConstants.Visitor.VISITOR_IS_DECLINED)
val dateString = parseObject.createdAt.toString().getDate()
val timeString = parseObject.createdAt.toString().getTime()
val isChekedIn = parseObject.getBoolean(EluziniParseDbConstants.Visitor.VISITOR_IS_CHECKED_IN)
if (parseObject.getParseUser(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER) != null && parseObject.getParseUser(
EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER
)!!.isDataAvailable
) {
visitedUserParse =
parseObject.getParseUser(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER)
}
val visitorModel = VisitorModel(
parseObject,
visitorId,
date,
fullName,
organisation,
address,
phone,
email,
purposeOfVisit,
items,
itemsSerials,
itemQuantities,
signedNDAFile,
imageUrl,
domain,
visitedUserParse,
isDeclined,
dateString,
timeString,
isChekedIn
)
emitter.onNext(visitorModel)
}
null
})
}
}
override fun getAllVisitors(getAllVisitorsModelRequest: GetAllVisitorsModelRequest): Observable<List<VisitorModel>> {
val observable = Observable.create(object : ObservableOnSubscribe<List<VisitorModel>> {
override fun subscribe(emitter: ObservableEmitter<List<VisitorModel>>) {
val visitorListQuery = ParseQuery<ParseObject>(EluziniParseDbConstants.Visitor.VISITOR_TABLE_NAME)
visitorListQuery.whereEqualTo("domain", getAllVisitorsModelRequest.domain)
visitorListQuery.include(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER)
visitorListQuery.orderByDescending("createdAt")
visitorListQuery.findInBackground { objects, e ->
if (e == null) {
val visitorModels = objects.map {
val parseObject = it
val visitorId = parseObject.objectId
val date = parseObject.createdAt.time.getFormattedDate(context)
val fullName =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_FULL_NAME) ?: ""
val organisation =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ORGANIZATION_NAME) ?: ""
val address = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ADDRESS) ?: ""
val phone = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_PHONE) ?: ""
val email = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_EMAIL) ?: ""
val purposeOfVisit =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_PURPOSE) ?: ""
val items = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: ""
val itemsSerials =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: ""
val itemQuantities =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: ""
val signedNDAFile =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_SIGNED_NDA) ?: ""
val imageUrl =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_VISITOR_IMAGE_URL) ?: ""
val domain = parseObject.getString(EluziniParseDbConstants.Visitor.VISITED_DOMAIN) ?: ""
var visitedUserParse: Any? = null
val isDeclined = parseObject.get(EluziniParseDbConstants.Visitor.VISITOR_IS_DECLINED)
val isChekedIn =
parseObject.getBoolean(EluziniParseDbConstants.Visitor.VISITOR_IS_CHECKED_IN)
val dateString = parseObject.createdAt.toString().getDate()
val timeString = parseObject.createdAt.toString().getTime()
if (parseObject.getParseUser(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER) != null && parseObject.getParseUser(
EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER
)!!.isDataAvailable
) {
visitedUserParse =
parseObject.getParseUser(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER)
}
val visitorModel = VisitorModel(
parseObject,
visitorId,
date.toString(),
fullName,
organisation,
address,
phone,
email,
purposeOfVisit,
items,
itemsSerials,
itemQuantities,
signedNDAFile,
imageUrl,
domain,
visitedUserParse,
isDeclined,
dateString,
timeString,
isChekedIn
)
visitorModel
}
emitter.onNext(visitorModels)
} else {
emitter.onError(Throwable(e.localizedMessage))
}
}
}
})/*.map {
val visitorModelTwo = it
if (visitorModelOne == null) {
//first time
visitorModelOne = visitorModelTwo
(visitorModelOne)
} else {
//check if anything has changed
if (visitorModelOne!!.size != visitorModelTwo.size) {
visitorModelOne = visitorModelTwo
(visitorModelOne)
} else {
val hasChanged =
visitorModelOne!!.mapIndexed { index: Int, visitorNotificationModel: VisitorModel ->
(visitorNotificationModel.isDeclined != visitorModelTwo[index].isDeclined)
}
if (hasChanged.contains(true)) {
visitorModelOne = visitorModelTwo
(visitorModelOne)
} else {
Observable.error<Throwable>(Throwable("1"))
}
}
visitorModelOne
}
}*/
// return Observable.interval(5, TimeUnit.SECONDS)
// .flatMap { observable }
return observable.map {
it
}
}
override fun getHostResponseToVisitorCheckIn(getHostResponseRequestModel: GetHostResponseRequestModel): Observable<VisitorModel> {
return Observable.create {emitter ->
val visitorListQuery = ParseQuery<ParseObject>(getHostResponseRequestModel.tableName)
visitorListQuery.whereEqualTo("objectId", getHostResponseRequestModel.objectId)
visitorListQuery.include(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER)
visitorListQuery.orderByDescending("createdAt")
visitorListQuery.firstInBackground
.continueWithTask(Continuation <ParseObject, Task<Void>>{task ->
if(task.isFaulted){
emitter.onError(task.error)
return@Continuation null
}else {
val parseObject = task.result
val visitorId = parseObject.objectId
val date = parseObject.createdAt.time.getFormattedDate(context)
val fullName =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_FULL_NAME) ?: ""
val organisation =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ORGANIZATION_NAME) ?: ""
val address = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ADDRESS) ?: ""
val phone = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_PHONE) ?: ""
val email = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_EMAIL) ?: ""
val purposeOfVisit =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_PURPOSE) ?: ""
val items = parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: ""
val itemsSerials =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: ""
val itemQuantities =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_ITEM_NAMES) ?: ""
val signedNDAFile =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_SIGNED_NDA) ?: ""
val imageUrl =
parseObject.getString(EluziniParseDbConstants.Visitor.VISITOR_VISITOR_IMAGE_URL) ?: ""
val domain = parseObject.getString(EluziniParseDbConstants.Visitor.VISITED_DOMAIN) ?: ""
var visitedUserParse: Any? = null
val isDeclined = parseObject.get(EluziniParseDbConstants.Visitor.VISITOR_IS_DECLINED)
val isChekedIn =
parseObject.getBoolean(EluziniParseDbConstants.Visitor.VISITOR_IS_CHECKED_IN)
val dateString = parseObject.createdAt.toString().getDate()
val timeString = parseObject.createdAt.toString().getTime()
if (parseObject.getParseUser(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER) != null && parseObject.getParseUser(
EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER
)!!.isDataAvailable
) {
visitedUserParse =
parseObject.getParseUser(EluziniParseDbConstants.Visitor.VISITOR_VISITED_USER)
}
val visitorModel = VisitorModel(
parseObject,
visitorId,
date.toString(),
fullName,
organisation,
address,
phone,
email,
purposeOfVisit,
items,
itemsSerials,
itemQuantities,
signedNDAFile,
imageUrl,
domain,
visitedUserParse,
isDeclined,
dateString,
timeString,
isChekedIn
)
emitter.onNext(visitorModel)
return@Continuation null
}
})
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment