Add User
Once a user has logged in to the application, then they can add a new user as a family login. Family login is a functionality that allows multiple users to log in to a single application. The Add User flow involves a set of events described in the add user events list. To start the flow, the user needs to trigger AddUserEvent.
AddUser event flow-diagram
This diagram shows the add user flow.
iOS/Swift
Below is the code snippet for Swift to trigger the add user process:
    static func performAddUser(addUserRequest: AddUserRequest) async -> ActionResult {
        return await withCheckedContinuation { continuation in
            let userIdentifier = KsUserIdentifier(tenantId: addUserRequest.tenantId, userId: addUserRequest.userId)
            let addUserEvent = KSMAddUserEvent(userIdentifier: userIdentifier,
                                               activationCode: addUserRequest.activationCode,
                                               pin: addUserRequest.pin,
                                               enableAutoLogin: addUserRequest.enableAutoLogin)
            
            let time = CallTimer(event: addUserEvent)
            MasterControllerAdapter.sharedInstance.sendEvent2MasterController(event: addUserEvent) { event in
                let duration = time.stop()
                let actionResult: ActionResult
                if let resultEvent = event as? KSMAddUserResultEvent {
                    let result = handleAddUserStatus(status: resultEvent.status)
                    actionResult = ActionResult(title: "addUserModel.title".localized(table: localizedTable),
                                                    success: result.success,
                                                    error: result.errorText?.localized(table: localizedTable),
                                                    duration: duration,
                                                    event: event)
                } else if let resultEvent = event as? KSMLoginResultEvent {
                    let result = handleAddUserStatus(status: resultEvent.loginStatus)
                    actionResult = ActionResult(title: "addUserModel.title".localized(table: localizedTable),
                                                    success: result.success,
                                                    error: result.errorText?.localized(table: localizedTable),
                                                    duration: duration,
                                                    event: event)
                } else {
                    actionResult = ActionResult(title: "addUserModel.title".localized(table: localizedTable),
                                                    success: false,
                                                    error: "addUserModel.event.unexpected".localized(table: localizedTable),
                                                    duration: duration,
                                                    event: event)
                }
                
                EventLogObject(actionResult: actionResult,
                               component: localizedTable)
                continuation.resume(returning: actionResult)
            }
        }
    }
Android/Kotlin
In Kotlin, you can use the code snippet below to trigger AddUserEvent:
fun triggerAddUserEvent(
    userIdentifier: UserIdentifier,
    activationCode: String,
    pin: String,
    autoLogin: Boolean
) {
    val addUserEvent = AddUserEvent(userIdentifier, activationCode, pin, autoLogin)
    synchronousEventHandler.postEvent(addUserEvent)?.then {
        // handle result
    }
}
All platforms
As response of this event, Master Controller provides AddUserResultEvent, or a LoginResultEvent if you used autoLogin=true when triggering AddUserEvent. Overall the flow is similar to the activation flow. You can find the possible status codes of AddUserResultEvent here.