# Sessions

class Sessions

The session service.

This class allows performing session related actions like establishing a new one, restoring a session that already exists, suspending it or disconnecting it when the session has to be ended. It also allows adding a listener to receive the session state (@see SessionsListener).

## Properties

currentState
Link copied to clipboard
val currentState: Session.State

Current session state.

id
Link copied to clipboard
val id: String?

Identifier of the current user when the session is connected. If the session is still not connected, value will be null.

isDoNotDisturbEnabled
Link copied to clipboard
val isDoNotDisturbEnabled: Boolean

Checks if the user has enabled the Do-Not-Disturb option. By default, the value is false. The value will be null while the session is not connected.

rx
Link copied to clipboard
val rx: SessionsRx

Access to the reactive API of the service.

token
Link copied to clipboard
val token: String?

Session token when the session is connected. If the session is still not connected, value will be null.

username
Link copied to clipboard
val username: String?

Username of the current user when the session is connected. If the session is still not connected, value will be null.

## Functions

addListener
Link copied to clipboard
fun addListener(listener: SessionsListener)

Adds a listener to receive session state events.

canRestoreSession
Link copied to clipboard
fun canRestoreSession(context: Context): Boolean

Checks if there is enough information to restore the session.

connect
Link copied to clipboard
fun connect(authentication: Authentication, context: Context)

Connects a new session.

disconnect
Link copied to clipboard
fun disconnect(context: Context)

Destroys the active session established against the server. IMPORTANT: After invoking this method, the session will be no longer active and a new SippoClient instance needs to be configured.

enableDoNotDisturb
Link copied to clipboard
fun enableDoNotDisturb(context: Context, isEnabled: Boolean, onCompletion: (SippoResourceError?) -> Unit)

Enables/Disables the Do-Not-Disturb option. When activated, disables the current Firebase token to avoid receiving push notifications from the server and blocks incoming calls received through socket.

fetchAuthProvider
Link copied to clipboard
fun fetchAuthProvider(onComplete: (Either<AuthProvider, SippoResourceError>) -> Unit)

Fetches the available AuthProvider.

getLocalUser
Link copied to clipboard
fun getLocalUser(onCompletion: (Either<WacUser, SippoResourceError>) -> Unit)

Retrieves the information of the local user.

getSessionId
Link copied to clipboard
fun getSessionId(onCompletion: (Either<String?, SippoResourceError>) -> Unit)

Retrieves the session identifier in the signaling server. The identifier will be null if the session has not been established yet.

isPermissionGranted
Link copied to clipboard
fun isPermissionGranted(permission: Permission): Boolean

Checks if a permission is granted for the user in the current session.

removeListener
Link copied to clipboard
fun removeListener(listener: SessionsListener)

Removes the specified listener.

restore
Link copied to clipboard
fun restore(context: Context)

Restores the active session.

setPushToken
Link copied to clipboard
fun setPushToken(context: Context, token: String)

Sets a new Firebase token to receive push notifications from the server. It is recommended to call it when Firebase provides the token to the application. The SDK will register this token for the current session (if any) and for the following ones. If another token is provided, the method should be called again with the new value.

suspend
Link copied to clipboard
fun suspend()

Suspends the active session. It should be called when the application goes to background.

updateLocalUser
Link copied to clipboard
fun updateLocalUser(user: WacUser, onCompletion: (Either<WacUser, SippoResourceError>) -> Unit)

Updates de local user.