src/contacts/PresenceCollection.js
/**
* A local collection of presences
* @private
*/
export class PresenceCollection {
/**
* Constructs a local presence collection
* @protected
* @param {Array<Object>} presences initial presences to be stored.
*/
constructor(presences = []) {
/**
* Presence objects indexed by address.
* @private
* @type {Object}
*/
this._presenceByAddress = {};
presences.forEach((presence) => {
this._presenceByAddress[presence.address] = presence;
});
}
/**
* Store a new presence or update an existing one.
* @protected
* @param {Object} presence The presence to be stored.
*/
updatePresence(presence) {
this._presenceByAddress[presence.address] = presence;
}
/**
* Get an stored presence.
* @protected
* @param {String} address The address of the requested presence.
* @return {Object|undefined} found presence or undefined if such address
* is not stored.
*/
getPresence(address) {
return this._presenceByAddress[address];
}
/**
* Remove a presence from this collection.
* @protected
* @param {String} address The address of the presence to be removed.
*/
removePresence(address) {
delete this._presenceByAddress[address];
}
}