Android SDK release notes

## [0.58.0] - 2023-02-06

### Features

  • [ROAD-3477] Expose get contact by ID

## [0.57.1] - 2023-02-02

### Bug Fixes

  • [ROAD-3469] Use the contact repository to resolve transfer information for the conferenceLog service.

  • [ROAD-3474] Fix the method that determines when a message is incoming

## [0.57.0] - 2023-01-31

### Chores

  • [ROAD-3397] Upgrade Gradle and kotlin version

### Features

  • [ROAD-3451] Avoid obtaining the userName from the user service, in favour of the presence service.

  • [ROAD-1754] Add support for Message Archive Management

## [0.56.0] - 2023-01-12

### Code Refactors

  • [ROAD-3340] Delete PUSH service on XMPP module

### Features

  • [ROAD-3177] Create new ChatService

  • [ROAD-1758] Expose chat service through SippoClient

## [0.55.0] - 2022-12-28

Breaking changes:

  • The user service now returns instances of type WacUser

  • The sippo-sdk no longer returns an instance of WacUser n any of its services, It returns User instead.

  • The Agenda Service now requires a SourceQuery to request the contact list

### Chores

  • [ROAD-3272] Run tests on every MR

### Code Refactors

  • [ROAD-3127] Rename user from sippoServer package to WacUser

  • [ROAD-3157] Create a repository for the presence events

  • [ROAD-3159] Create a repository for the contact events

  • [ROAD-3129] Remove gatewayUsername field from WacUser

  • [ROAD-3291] Validate notification push

### Features

  • [ROAD-3128] New user repository

  • [ROAD-3130] Apply user repository in the sippo-sdk module

  • [ROAD-3132] Create contact repository

  • [ROAD-3133] Apply contact repository to every service on the SDK

### Tests

  • [ROAD-3267] Alert service test

## [0.54.1] - 2022-12-15

### Bug Fixes

  • [ROAD-3256] Move WebRTC utils to Janus module

## [0.54.0] - 2022-12-15

### Chores

  • [ROAD-3233] Upgrade google-webrtc library version to M108

## [0.53.0] - 2022-12-02

### Code Refactors

  • [ROAD-3126] Remove id from WacPresence

  • [ROAD-3148] Move presence implementation from sippoServer module

### Features

  • [ROAD-3213] Send firebase push token to XMPP PushService

  • [ROAD-2834] Create AudioDeviceModule settings based on blacklisted models

## [0.52.1] - 2022-11-30

### Bug Fixes

  • [ROAD-3203] Resolve user acceptedBy process

## [0.52.0] - 2022-11-21

### Features

  • [ROAD-2862] Alerts SDK integration with WAC

## [0.51.0] - 2022-11-03

### Features

  • [ROAD-2757] Create a missed calls service.

## [0.50.0] - 2022-10-07

### Features

  • [QUOBDEV-1588] Create Presence Repository

  • [QUOBDEV-1772] Use the presence repository to resolve a conferenceEntry

  • [QUOBDEV-1768] Use the presence repository to resolve a participants in the conference service

  • [ROAD-2727] Return error when a malformed WacPresence is received

  • [ROAD-2745] Allow to subscribe to the presence of the current from the presences service

### BREAKING CHANGES

A new field has been added to the Callee interface and to all the classes that implement it.

A new field has been added to the Participant class

## [0.49.0] - 2022-10-03

### Chores

  • [ROAD-2165] Automate version bumping

  • [QUOBDEV-1879] Upgrade Dokka version

  • [ROAD-2646] Fix commit message generated on a new version

### Features

  • [ROAD-2081] Expose Conference MediaTypes

## [0.48.0] - 2022-07-22

### Chores

  • [ROAD-2500] Include information about the push commit rule in Readme file

  • [ROAD-2321] Update git-cliff configuration

  • [ROAD-2499] Fix the publication configuration for the SDK artefacts

### Features

  • [ROAD-2485] Expose session token and user identifier

## [0.47.0] - 2022-03-29

### Bug Fixes

  • [QA-2484] Prevent multiple logins to qss

  • [QA-2782] Update correctly the state for outgoing invitations

### Chores

  • [QUOBDEV-1373] Include configuration file for the new changelog generation tool

  • [QUOBDEV-1834] Update jenkins node to native

  • [QUOBDEV-1831] Add scripts to tag a version and publish the SDK artifacts

  • [QUOBDEV-1836] Trigger jenkins build only with new version commits

### Code Refactors

  • [QUOBDEV-1528] Remove anonymous login

### Features

  • [QUOBDEV-1704] Sends ack requests every 20 seconds using the XMPP ping protocol

  • [QUOBDEV-1765] Add group selection capability

### BREAKING CHANGES

The anonymous login was removed from the Session Service

## [0.46.1] - 2021-12-04

### Bug Fixes

  • [QA-2760] Allow only one thread at a time to update the user service cache

  • [QA-2761] Wait for the sipposerver socket to authenticate before sending any requests

## [0.46.0] - 2021-11-19

### Features

  • [QUOBDEV-1517] Print socket messages in verbose level to facilitate log tracking

## [0.45.0] - 2021-11-09

### Bug Fixes

  • [QA-2720] Catch exception when Presences service is instantiated

### Chores

  • [QUOBDEV-1549] Remove unnecessary Smack dependencies

  • [QUOBDEV-1548] Do not include excluded dependencies in the POM file when publishing the SDK artifacts

### Code Refactors

  • [QUOBDEV-1515] Remove parameter context in disconnect method since it is not used

  • [QUOBDEV-1518] Refactor example app in order to have different services in different activities

### Features

  • [QUOBDEV-1519] Add FirebaseMessaging Service to the example app

  • [QUOBDEV-1510] Include the new AuthProvider and the previous Provider model in the session service.

  • [ROAD-1751] Create a Chat Service

### BREAKING CHANGES

Presences is now a SippoService, so when an error occurs during the service instantiation, presences.value() will be null and presences.error() will return the specific error.

The method to fetch the providers has been modified, it now returns a list of the new Provider model. A method to fetch the AuthProvider has been added.

There is a new type of SippoClientError, ActionNotAllowed.

The parameters order for the SDK’s configure method has been changed and a new optional parameter (the XMPP port) has been added.

## [0.44.1] - 2021-10-26

### Bug Fixes

  • [QA-2629] Janus client refactor to avoid NPEs. Remove Janus Stack

## [0.44.0] - 2021-10-25

### Bug Fixes

  • [QA-2619] Send push token when the session is restored

### Documentation Improvements

  • [QUOBDEV-1401] Improve setPushToken documentation

### BREAKING CHANGES

The method to configure the SippoClient now receives the application context as parameter.

## [0.43.3] - 2021-10-25

### Bug Fixes

  • [DECA-42] Enable HardwareAcousticEchoCanceler based on user preferences

## [0.43.2] - 2021-10-25

### Bug Fixes

  • [DECA-38] Avoid to delete session info if the restore does not fail because the session is invalid

### BREAKING CHANGES

Previously, the restore method errors caused that the session state changed to Error (reason = RESTORE_NOT_POSSIBLE), and the session info was always deleted. Now, different errors are exposed as different reasons in the session state and the session info will only be deleted if the server responds that the session is no longer valid (reason = WRONG_CREDENTIALS).

## [0.43.1] - 2021-10-25

### Bug Fixes

  • [QA-2516] Apply the new Caller model in the Invitation service

## [0.43.0] - 2021-10-25

### Documentation Improvements

  • [QUOBDEV-1193] Review of legacy documentation

  • [QUOBDEV-1247] Update session documentation

### Features

  • [ROAD-1224] Expose caller information from the QSS invitation

### BREAKING CHANGES

The model of the caller information in the QSS invitations has been changed. In this new model the display name, user name, contact name and the user identifier are included.

## [0.42.0] - 2021-10-25

### Features

  • [ROAD-1531] Add support for Do-Not-Disturb option

## [0.41.0] - 2021-10-25

### Bug Fixes

  • [FERMAX-152] Wait for QSS to connect to expose its session identifier

### BREAKING CHANGES

The session ID is now obtained via the method getSessionId (and its Rx version).

## [0.40.0] - 2021-10-25

### Bug Fixes

  • [QA-2397] Add an optional name to a PSTN participant

### Features

  • [ROAD-1580] Add a new reason (TemporarilyUnavailable) to Invitation rejected state

### BREAKING CHANGES

The constructor for PSTN now requires an identifier and a name instead of only a phone.

There is a new reason for the rejected state in the Invitation model (UserNotAvailable). The InvitationResult enum class (used in the Candidate model for the conference log) includes also a USER_NOT_AVAILABLE option.

## [0.39.0] - 2021-10-25

### Chores

  • [QUOBDEV-1225] Improve README file

### Features

  • [QUOBDEV-1217] Allow user to hold and unhold a conference

### BREAKING CHANGES

ConferenceListener includes now two more methods (onParticipantHeld and onParticipantUnheld).

## [0.38.0] - 2021-10-25

### Chores

  • [QUOBDEV-1278] Use reStructuredText for samples

### Features

  • [QUOBDEV-1191] Expose the whole contact object on deleted contact event instead of the contact identifier

  • [QUOBDEV-1165] Make User model parcelable

### BREAKING CHANGES

The onContactDeleted event now returns a Contact object instead of a String identifier.

The secondary constructor of Contact has been deleted.

## [0.37.0] - 2021-10-25

### Bug Fixes

  • [QA-2064] Stop QSS reconnections when the socket is stopped

### Chores

  • [QUOBDEV-802] Publish artifacts and documentation when a new tag is pushed

### Features

  • [QUOBDEV-1183] Expose the group identifier as part of the source when the contact comes from a user group

  • [QUOBDEV-1176] Move updated group events to Groups service

  • [QUOBDEV-996] Add support for unattended transfers

### BREAKING CHANGES

The Contact model uses a new Source model (different of the Source model used in the Agenda’s API) and classes related to Contact (Email, Phone,…) will have to be re-imported because they have been moved to a different package.

All events related to a group are handled through the Groups service, consequently GroupListener and GroupInfo disappears.

ConferenceListener must implement a new event called onTransferReceived.

## [0.36.0] - 2021-07-12

### Bug Fixes

  • [QA-2082] Set context on login via REST

### Chores

  • [QUOBDEV-802] Generate artifacts through Jenkins

### Features

  • [ROAD-1302] Consume info from login and set cookie

## [0.35.0] - 2021-07-12

### Features

  • [QUOBDEV-758] Migrate wac socket to websocket

  • [QUOBDEV-805] Resolve groups for conferenceLog

  • [QUOBDEV-852] Apply new Invitation model

### BREAKING CHANGES

In ConferenceEntry, the Participant list is now modelled as a ParticipantInfo list. Also, in the conference log Invitation model the ‘from’ field is modelled as a Participant and the ‘to’ field is modelled as a Callee.

The new invitation model no longer identifies the caller and callee through a String, but uses the new Callee model.<br>The method for sending new invitations to a conference has been changed using the new model mentioned above.

## [0.34.1] - 2021-07-12

### Bug Fixes

  • [QA-1844] Ensure the order of conferencelog entries

  • [QA-1845] Filter results from user resolver

### Chores

  • [QUOBDEV-1104] Set git-chglog settings based on gitlab

## [0.34.0] - 2021-02-09

### Chores

  • [QUOBDEV-915] Add git-chglog config to automatically generate the changelog using commit messages

### Code Refactors

  • [QUOBDEV-902] Remove the Address model

  • [QUOBDEV-914] Remove deprecated Contacts service

  • [QUOBDEV-903] Update User model with the new Email and Phone types

  • [QUOBDEV-978] Emit the events for the local user’s presence separately

### Features

  • [QUOBDEV-804] Add methods to update and retrieve the local user

### BREAKING CHANGES

The Contact model now uses Email and Phone classes instead of the generic Address class. This Address class has been removed.

The deprecated Contacts has been removed in favor of Agenda service. All the related classes have been removed too. <br>The methods in Presences service that were using the previous Contact model are not longer available.

The User model now uses the Email and Phone classes instead of Strings.

The presence events are not longer emitted by the presenceUpdated observable. Instead, there are two observables (localPresenceUpdated and remotePresenceUpdated) that will emit the proper events. The callbacks of PresencesListener have been updated consequently

There is no longer a public object in the session service to expose the user of the current session. Instead, there is a new method getLocalUser and a new variable with the value of their username.

## [0.33.0] - 2021-02-09

### Features

  • [QUOBDEV-826] Add presence subscription support with new contacts

## [0.32.0] - 2021-02-09

### Features

  • [SIPPOAND-216] Implement the new contact service using userContact service and addressBook service

## [0.31.0] - 2021-02-09

### Features

  • [SIPPOAND-229] Model the possible states of Presence

### BREAKING CHANGES

There is a new Presence model. All the fields remain the same except the online attribute, that has been replaced by a state to include more options (online, offline, away or busy).

## [0.30.1] - 2021-02-09

### Bug Fixes

  • [SIPPOAND-231] ContactService is initialized with the correct domain

## [0.30.0] - 2021-02-09

### Features

  • [SIPPOAND-225] Expose a Users service in order to get the users matching a certain identifier

  • [SIPPOAND-227] Add method to resolve user by userId

  • [SIPPOAND-123] Implementation of the group service

  • [SIPPOAND-207] Implementation of the new address books service

  • [SIPPOAND-226] Implement address book events

  • [SIPPOAND-213] Add the Oauth service to fetch the available providers

## [0.29.1] - 2021-02-09

### Chores

  • [SIPPO-116] Add pipeline to upload generated doc to the doc repository

## [0.29.0] - 2021-02-09

### Features

  • [SIPPOAND-192] Add a method to check if the user has a specific Permission

## [0.28.0] - 2021-02-09

### Code Refactors

  • [SIPPOAND-201] Remove updateBitrate method (unused)

### Features

  • [SIPPOAND-43] Expose if the recording is enabled in the Conference

  • [SIPPOAND-201] Add switch camera method to the conference

## [0.27.0] - 2021-02-09

### Bug Fixes

  • [SIPPOAND-203] The matching to find the listener to be deleted is now done with the contents of the saved references

  • [SIPPOAND-204] Checking the status of the socket and opening it if necessary is now an atomic operation

  • [SIPPOAND-206] Avoid to renew the sippo server session when this one has been disconnected

  • [SIPPOAND-210] Adapt the error when getting an access token as ApiClientError

### Code Refactors

  • [SIPPOAND-196] Rename SessionState object as Session and move it to session package

  • [SIPPOAND-100] Use URL type for the server url instead of String when configuring SippoClient

  • [SIPPOAND-196] Socket wrapper only needs to be created once and manage the transport logic internally

  • [SIPPOAND-199] Avoid to hold context references in SippoClient and Conference objects

  • [SIPPOAND-205] Sippo-Server socket does not need to be registered

### Documentation Improvements

  • [SIPPOAND-197] Update and complete sippo-sdk module documentation

  • [SIPPOAND-77] Add permissions needed to the documentation

  • [SIPPOAND-200] Update code examples

### Features

  • [SIPPOAND-196] Expose the reason why session is disconnected

  • [SIPPOAND-202] Distinguish when the user has logged out in session state

  • [SIPPOAND-209] Register the push token internally when the session is connected

### BREAKING CHANGES

The class SessionState has been renamed as Session and has been moved to session package.

The method configure in SippoClient now receives the server url as a URL instead of as a String.

The session state is now a sealed class. The error state has been replaced by disconnected with the proper reason.

The methods to join the conference, update the media and invite a new participant receive now the context as parameter. The configure method in SippoClient does not require the context as parameter.

The session states have been changed and now, when the session could not be established, the state will be Error (not Disconnected). Besides, the disconnected state includes the information about if the user has logged out or the session is only suspended.

The method registerPushToken has been removed in favour of setPushToken. This new method can be invoked even if the session is not connected and the SDK will register the token in the right moment.

## [0.26.0] - 2021-02-09

### Bug Fixes

  • [SIPPOAND-193] Fix documentation issues and API inconsistencies

  • [SIPPOAND-195] Release videosink when the related stream is closed

### Code Refactors

  • [SIPPOAND-191] Remove support for local contacts synchronization

  • [SIPPOAND-191] Rename PresenceListener as PresencesListener to be consistent with other services

  • [SIPPOAND-193] Set the session state listener in Sessions service

  • [SIPPOAND-193] The methods to manage the session return their results only changing the session state

  • [SIPPOAND-193] Group the reactive API for Sessions in SessionsRx class

  • [SIPPOAND-193] Rename SessionStateListener as SessionsListener

  • [SIPPOAND-171] Create a ConferenceLog service

  • [SIPPOAND-171] Group reactive methods and variables in a ConferencesRx class

  • [SIPPOAND-171] Remove JanusConferencesBuilder

  • [SIPPOAND-171] Unify public API

  • [SIPPOAND-194] Remove data class for Contact in sippo-client module

  • [SIPPOAND-120] Delete method to add a list of contacts

  • [SIPPOAND-120] Fix lint problems

### Features

  • [SIPPOAND-189] Add a method to check if a conference related to an invitation id is still pending

  • [SIPPOAND-193] Expose the current session state and notify it when a listener is added

### BREAKING CHANGES

The reasons for a rejected invitation state have been renamed.

Contacts service does not include methods to synchronize local contacts or delete them from server any more. The source type device has been removed.

PresenceListener is called PresencesListener now.

The session state listener is added in Sessions service instead of SippoClient and is allowed to have more than one listener. Session related classes has been moved to session package.

The methods connect, disconnect and restore don’t return any async result. The session state will change accordingly instead.

SessionState has been rename as State. The callback onSessionStateChanged has been replaced with onSessionStateReceived and it is invoked when the listener is set (besides when the session state changes).

The reactive methods and variables in sessions will be accessible through sessions.rx field.

SessionStateListener has been renamed to be consistent with other listeners

All methods, data classes, events and listeners related to conference log have been moved to its own package and service. The reactive methods and variables are included now in the ConferenceLogRx class. The public data class have been renamed in order to remove the prefix “Sippo-“.

The reactive methods and variables in Conferences will be accesible through conferences.rx. The method setListener has been replacer by addListener in order to allow having more than one listener. The callback onConferenceReceived receives now the conferences service as parameter and onConferenceStateChanged has been renamed as onConferenceStateReceived (also, it is invoked whenever a listener is added too). ConferenceError class has been moved to the model sub-package in conference.

Multiple callbacks and rx variables has been renamed in order to make the public API consistent.

All public methods in contacts service are using now the Contact class in sipposerver-client module.

The method to add a list of contacts is not available any more.

## [0.25.1] - 2021-02-09

### Bug Fixes

  • [SIPPOAND-190] Make Invitation data model inmutable

## [0.25.0] - 2021-02-09

### Bug Fixes

  • [SIPPOAND-187] Remove blank spaces from parameter “to” in invite method

### Code Refactors

  • [SIPPOAND-60] Remove contacts cache

  • [SIPPOAND-60] Delete SippoContactBuilder class

  • [SIPPOAND-60] Encapsulate rx methods in ContactsRx class

  • [SIPPOAND-60] Rename contactIdFromWac as id

  • [SIPPOAND-186] Rename all delegates as listeners

### Features

  • [SIPPOAND-60] Allow to add more than one listener for contact events

### BREAKING CHANGES

The methods to add contacts receive a contact instance directly instead of a contact builder. The public model for contacts is called Contact instead of SippoContact, and the ContactsDelegate is now ContactsListener.

The methods using RX will be accessible through the rx property in Contacts service.

The contactIdFromWac property in Contact model is called id now.

The method setListener has been replaced by addListener and removeListener

SessionStateDelegate, ConferencesDelegate and ConferenceLogDelegate has been renamed. Also, setDelegate methods has beed renamed as setListener. All listener classes have been moved to a listener package inside their previous package.

## [0.24.0] - 2021-02-09

### Bug Fixes

  • [SIPPOAND-183] Increase the read timeout for QSS requests

  • [SIPPOAND-183] Avoid to subscribe twice to conference state

### Code Refactors

  • [SIPPOAND-182] Use single instead of observable when required in QSS services

  • [SIPPOAND-182] Combine QssEvent attributes in a single one attribute “action”

  • [SIPPOAND-184] Remove invitation request

  • [SIPPOAND-183] Move logic to ConferenceRx

  • [SIPPOAND-183] Rename Invitation model in QSS module as QssInvitation

  • [SIPPOAND-183] Room property is not optional in QssInvitation any more

  • [SIPPOAND-183] Join method notifies its result changing the conference state

  • [SIPPOAND-183] Preview method notifies its result changing the conference state

### Features

  • [SIPPOAND-182] Add a method to create the conference using Rx

  • [SIPPOAND-183] Allow to recover all the invitations related to the conference

  • [SIPPOAND-183] Expose changes in conference invitations as events

  • [SIPPOAND-183] Add joinOnAnswer parameter to invite method

### BREAKING CHANGES

The method create in Conferences does not require to pass the listener for the conference any more.

The service Invitations who managed invitations request no longer exists. The attribute isAnswerToInvitationRequest in Conference has been removed and the method invite does not receive a replyOf parameter any more. The attribute invitationRequest in SippoInvitationInfo has been also deleted.

Cancel invitation method does not return any result.

Remove isInvited attribute in the conference. Invite method return the result as an invitation event. Added onInvitationChanged callback in ConferenceListener.

Join method does not return any async result.

Preview method does not return any async result.

## [0.23.0] - 2021-02-09

### Features

  • [SIPPOAND-181] Specify a date range when fetching conference log entries

### BREAKING CHANGES

getConferenceEntries receives now a before and after parameters to specify in which date range the fetched entries should be.

## [0.22.0] - 2021-02-09

### Bug Fixes

  • [SIPPOAND-188] Listen session state change when sessions service is created

  • [SIPPOAND-177] Include DEL method as possibility for wac events

  • [SIPPOAND-177] Obtain params from pathname event correctly

  • [SIPPOAND-177] Manage error when trying to access to contacts service if session is not connected

  • [SIPPOAND-131] Set conference state to finished if join action goes wrong

  • [SIPPOAND-179] Update media types when the stream is actually available

### Code Refactors

  • [SIPPOAND-177] Remove thumbnailUri in SippoContact

  • [SIPPOAND-177] Add a builder to create a SippoContact

  • [SIPPOAND-131] Avoid to pass application context to conference methods

  • [SIPPOAND-118] Unify leave and hangup methods in public API and review conference state conditions

  • [SIPPOAND-15] Expose a Participant object

  • [SIPPOAND-15] Removed unnecessary attributes in QSS room

  • [SIPPOAND-15] Fix lint problems

  • [SIPPOAND-25] Migrate to androidX

  • [SIPPOAND-25] Allow specifying where the conference video should be rendered and include methods to swap videos

  • [SIPPOAND-179] Unify swap methods in one only method

### Features

  • [SIPPOAND-174] Expose QSS session id

  • [SIPPOAND-176] Allow to specify the contacts sources when fetching them

  • [SIPPOAND-96] Expose conference id in canceled and finished conference events

  • [SIPPOAND-131] Expose the caller and the current state in Conference class

  • [SIPPOAND-178] Notify the current conference state when user sets the conference listener

  • [SIPPOAND-29] Expose if the user mediatypes are enabled

  • [SIPPOAND-179] Add method to get all conference participants

  • [SIPPOAND-180] Add rx methods to Contacts service

### BREAKING CHANGES

Added a sources parameter in getContacts method.

Several changes in SippoContact model:<br>- No longer includes the thumbnailUri field. The method getThumbnail in Contacts has been deleted in consequence.<br>- The field isFavourite has been renamed as favorite.<br>- The field contactIdFromDevice visibility is not public any more.<br>- The field emails are now a list of strings because Email model has been removed.<br><br>Also, source contact types are using now the Source model imported from sippo-server so the one in Contacts has been removed.

SippoService can now return different error types, not only CapabilityError.

The method add in Contacts receives now a new SippoContactBuilder as parameter instead of a SippoContact.

The field roomId has been renamed as id. Callbacks onConferenceFinished and onConferenceCanceled receive the conference id as parameter and the related events are now exposed as a Single with the conference id instead of as a Completable.

Conference has now a callback and an observable to notify when the state changes. The specific callbacks/observables for notifying when the conference finishes or when the invitation is canceled have been removed.<br><br>Since the conference includes now the information about the caller, the callback onConferenceReceived does not have the caller as a separated parameter any more and the observable newConferenceEvents only emits the conference.

Conference methods no longer receive the application context as a parameter.

There is only a hangup method to end the conference (instead of decline/leave methods). The cancelInvite method has been renamed as cancelInvitation.

The methods expel, getRemoteParticipants and enableRemoteVideo use Participant objects instead of String. The observable participantAdded also uses this class. The parameter participant in getRemote video has been renamed as username to help remarking that it does not use the Participant class. The callbacks in ConferenceListener now receive the conference as parameter too.

The methods to get the view rendering the video no longer exists. It should be used the methods displayLocalVideo and displayRemoteVideo instead.

The list of localMediaTypes now is a list with pairs indicating the media type and whether it is enable or not.

getRemoteParticipants has changed to getParticipants and now returns all participants in the conference including the user with their mediaTypes (the method getRemoteMediaTypes does not exist any more). The localMediaTypes in the Conference has been replaced by two boolean properties: is LocalAudioEnabled and isLocalVideoEnabled.

The method swap(usernameA, usernameB) has been renamed as swapVideos. The method swap(username) has been removed. In order to swap the local video with a remote one, the first method could be used specifying the current user as one of the those received by the method.

## [0.21.1] - 2021-02-02

### Bug Fixes

  • [SIPPOAND-175] Close PeerConnection when logging out from Janus

## [0.21.0] - 2021-02-02

### Code Refactors

  • [SIPPOAND-162] Remove prepareAudio parameter

  • [SIPPOAND-173] Use custom Either class instead of Kotlin Result class

  • [SIPPOAND-163] Remove SippoConference interface

  • [SIPPOAND-164] Replace SippoConferenceDelegate by ConferenceListener

  • [SIPPOAND-165] Rename SippoConferenceError as ConferenceError

  • [SIPPOAND-166] Return an error in case update publishers action can’t be done

  • [SIPPOAND-167] Avoid to duplicate ParticipantStatus class in janus and sippo-sdk module

  • [SIPPOAND-168] Use MediaType class instead of FeedConstraint and ConferenceConstraint models

  • [SIPPOAND-169] Separate reactive conference methods to another class

  • [SIPPOAND-170] Add extension to deliver Maybe result in a callback function

### BREAKING CHANGES

The method previewMedia has been renamed to preview and no longer receives the prepareAudio and context parameters.

All public API methods that were using Result now use Either instead. Also, the Optional class has been moved from client.common to common package.

All public API methods that were using SippoConference now use Conference instead. Also, the parameter order for join, update and getConferenceEntries methods has been changed.

The interface SippoConferenceDelegate has been replaced by ConferenceListener. Also, the methods create and acceptInvitationRequest in Conferences have been changed.

All public API methods that were using SippoConferenceError now use ConferenceError instead.

The method getRemoteParticipants in Conference now uses the ParticipantStatus class from Janus module.

The models FeedConstraint and ConferenceConstraint have been replaced by one only model, MediaType. Public API methods will now use MediaType class instead of the old ones. The userConstraints property and getRemoteParticipantsConstraints method have been renamed as localMediaTypes and getRemoteMediaTypes respectively to be consistent.

The reactive methods in Conference have been moved to a specific class, ConferenceRx. This class is accessible as a property in Conference class, so the methods should now be invoked as conference.rx.methodName. Also, some methods and/or parameters have been renamed.