summaryrefslogtreecommitdiff
path: root/includes/external/matrix/node_modules/matrix-js-sdk/src/models/user.ts
diff options
context:
space:
mode:
Diffstat (limited to 'includes/external/matrix/node_modules/matrix-js-sdk/src/models/user.ts')
-rw-r--r--includes/external/matrix/node_modules/matrix-js-sdk/src/models/user.ts281
1 files changed, 0 insertions, 281 deletions
diff --git a/includes/external/matrix/node_modules/matrix-js-sdk/src/models/user.ts b/includes/external/matrix/node_modules/matrix-js-sdk/src/models/user.ts
deleted file mode 100644
index 054a174..0000000
--- a/includes/external/matrix/node_modules/matrix-js-sdk/src/models/user.ts
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
-Copyright 2015 - 2021 The Matrix.org Foundation C.I.C.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-import { MatrixEvent } from "./event";
-import { TypedEventEmitter } from "./typed-event-emitter";
-
-export enum UserEvent {
- DisplayName = "User.displayName",
- AvatarUrl = "User.avatarUrl",
- Presence = "User.presence",
- CurrentlyActive = "User.currentlyActive",
- LastPresenceTs = "User.lastPresenceTs",
-}
-
-export type UserEventHandlerMap = {
- /**
- * Fires whenever any user's display name changes.
- * @param event - The matrix event which caused this event to fire.
- * @param user - The user whose User.displayName changed.
- * @example
- * ```
- * matrixClient.on("User.displayName", function(event, user){
- * var newName = user.displayName;
- * });
- * ```
- */
- [UserEvent.DisplayName]: (event: MatrixEvent | undefined, user: User) => void;
- /**
- * Fires whenever any user's avatar URL changes.
- * @param event - The matrix event which caused this event to fire.
- * @param user - The user whose User.avatarUrl changed.
- * @example
- * ```
- * matrixClient.on("User.avatarUrl", function(event, user){
- * var newUrl = user.avatarUrl;
- * });
- * ```
- */
- [UserEvent.AvatarUrl]: (event: MatrixEvent | undefined, user: User) => void;
- /**
- * Fires whenever any user's presence changes.
- * @param event - The matrix event which caused this event to fire.
- * @param user - The user whose User.presence changed.
- * @example
- * ```
- * matrixClient.on("User.presence", function(event, user){
- * var newPresence = user.presence;
- * });
- * ```
- */
- [UserEvent.Presence]: (event: MatrixEvent | undefined, user: User) => void;
- /**
- * Fires whenever any user's currentlyActive changes.
- * @param event - The matrix event which caused this event to fire.
- * @param user - The user whose User.currentlyActive changed.
- * @example
- * ```
- * matrixClient.on("User.currentlyActive", function(event, user){
- * var newCurrentlyActive = user.currentlyActive;
- * });
- * ```
- */
- [UserEvent.CurrentlyActive]: (event: MatrixEvent | undefined, user: User) => void;
- /**
- * Fires whenever any user's lastPresenceTs changes,
- * ie. whenever any presence event is received for a user.
- * @param event - The matrix event which caused this event to fire.
- * @param user - The user whose User.lastPresenceTs changed.
- * @example
- * ```
- * matrixClient.on("User.lastPresenceTs", function(event, user){
- * var newlastPresenceTs = user.lastPresenceTs;
- * });
- * ```
- */
- [UserEvent.LastPresenceTs]: (event: MatrixEvent | undefined, user: User) => void;
-};
-
-export class User extends TypedEventEmitter<UserEvent, UserEventHandlerMap> {
- private modified = -1;
-
- /**
- * The 'displayname' of the user if known.
- * @privateRemarks
- * Should be read-only
- */
- public displayName?: string;
- public rawDisplayName?: string;
- /**
- * The 'avatar_url' of the user if known.
- * @privateRemarks
- * Should be read-only
- */
- public avatarUrl?: string;
- /**
- * The presence status message if known.
- * @privateRemarks
- * Should be read-only
- */
- public presenceStatusMsg?: string;
- /**
- * The presence enum if known.
- * @privateRemarks
- * Should be read-only
- */
- public presence = "offline";
- /**
- * Timestamp (ms since the epoch) for when we last received presence data for this user.
- * We can subtract lastActiveAgo from this to approximate an absolute value for when a user was last active.
- * @privateRemarks
- * Should be read-only
- */
- public lastActiveAgo = 0;
- /**
- * The time elapsed in ms since the user interacted proactively with the server,
- * or we saw a message from the user
- * @privateRemarks
- * Should be read-only
- */
- public lastPresenceTs = 0;
- /**
- * Whether we should consider lastActiveAgo to be an approximation
- * and that the user should be seen as active 'now'
- * @privateRemarks
- * Should be read-only
- */
- public currentlyActive = false;
- /**
- * The events describing this user.
- * @privateRemarks
- * Should be read-only
- */
- public events: {
- /** The m.presence event for this user. */
- presence?: MatrixEvent;
- profile?: MatrixEvent;
- } = {};
-
- /**
- * Construct a new User. A User must have an ID and can optionally have extra information associated with it.
- * @param userId - Required. The ID of this user.
- */
- public constructor(public readonly userId: string) {
- super();
- this.displayName = userId;
- this.rawDisplayName = userId;
- this.updateModifiedTime();
- }
-
- /**
- * Update this User with the given presence event. May fire "User.presence",
- * "User.avatarUrl" and/or "User.displayName" if this event updates this user's
- * properties.
- * @param event - The `m.presence` event.
- *
- * @remarks
- * Fires {@link UserEvent.Presence}
- * Fires {@link UserEvent.DisplayName}
- * Fires {@link UserEvent.AvatarUrl}
- */
- public setPresenceEvent(event: MatrixEvent): void {
- if (event.getType() !== "m.presence") {
- return;
- }
- const firstFire = this.events.presence === null;
- this.events.presence = event;
-
- const eventsToFire: UserEvent[] = [];
- if (event.getContent().presence !== this.presence || firstFire) {
- eventsToFire.push(UserEvent.Presence);
- }
- if (event.getContent().avatar_url && event.getContent().avatar_url !== this.avatarUrl) {
- eventsToFire.push(UserEvent.AvatarUrl);
- }
- if (event.getContent().displayname && event.getContent().displayname !== this.displayName) {
- eventsToFire.push(UserEvent.DisplayName);
- }
- if (
- event.getContent().currently_active !== undefined &&
- event.getContent().currently_active !== this.currentlyActive
- ) {
- eventsToFire.push(UserEvent.CurrentlyActive);
- }
-
- this.presence = event.getContent().presence;
- eventsToFire.push(UserEvent.LastPresenceTs);
-
- if (event.getContent().status_msg) {
- this.presenceStatusMsg = event.getContent().status_msg;
- }
- if (event.getContent().displayname) {
- this.displayName = event.getContent().displayname;
- }
- if (event.getContent().avatar_url) {
- this.avatarUrl = event.getContent().avatar_url;
- }
- this.lastActiveAgo = event.getContent().last_active_ago;
- this.lastPresenceTs = Date.now();
- this.currentlyActive = event.getContent().currently_active;
-
- this.updateModifiedTime();
-
- for (const eventToFire of eventsToFire) {
- this.emit(eventToFire, event, this);
- }
- }
-
- /**
- * Manually set this user's display name. No event is emitted in response to this
- * as there is no underlying MatrixEvent to emit with.
- * @param name - The new display name.
- */
- public setDisplayName(name: string): void {
- const oldName = this.displayName;
- this.displayName = name;
- if (name !== oldName) {
- this.updateModifiedTime();
- }
- }
-
- /**
- * Manually set this user's non-disambiguated display name. No event is emitted
- * in response to this as there is no underlying MatrixEvent to emit with.
- * @param name - The new display name.
- */
- public setRawDisplayName(name?: string): void {
- this.rawDisplayName = name;
- }
-
- /**
- * Manually set this user's avatar URL. No event is emitted in response to this
- * as there is no underlying MatrixEvent to emit with.
- * @param url - The new avatar URL.
- */
- public setAvatarUrl(url?: string): void {
- const oldUrl = this.avatarUrl;
- this.avatarUrl = url;
- if (url !== oldUrl) {
- this.updateModifiedTime();
- }
- }
-
- /**
- * Update the last modified time to the current time.
- */
- private updateModifiedTime(): void {
- this.modified = Date.now();
- }
-
- /**
- * Get the timestamp when this User was last updated. This timestamp is
- * updated when this User receives a new Presence event which has updated a
- * property on this object. It is updated <i>before</i> firing events.
- * @returns The timestamp
- */
- public getLastModifiedTime(): number {
- return this.modified;
- }
-
- /**
- * Get the absolute timestamp when this User was last known active on the server.
- * It is *NOT* accurate if this.currentlyActive is true.
- * @returns The timestamp
- */
- public getLastActiveTs(): number {
- return this.lastPresenceTs - this.lastActiveAgo;
- }
-}