@hsaadawy/ngx-chat
Version:
53 lines (52 loc) • 2.19 kB
TypeScript
import { HttpClient } from "@angular/common/http";
import { JID } from "@xmpp/jid";
import { BehaviorSubject, Subject } from "rxjs";
import { LogService } from "../services/log.service";
import { Message } from "./message";
import { DateMessagesGroup } from "./message-store";
import { Presence } from "./presence";
import { Recipient } from "./recipient";
import { ContactSubscription } from "./subscription";
export interface ContactMetadata {
[key: string]: any;
}
export declare type JidToPresence = Map<string, Presence>;
export declare class Contact {
httpClinet: HttpClient;
name: string;
nick: string;
readonly recipientType = "contact";
avatar: string;
chatUserName: string;
chatPassword: string;
avatarUrl: string;
metadata: ContactMetadata;
/** use {@link jidBare}, jid resource is only set for chat room contacts */
readonly jidFull: JID;
readonly jidBare: JID;
private _httpClient;
readonly presence$: BehaviorSubject<Presence>;
readonly subscription$: BehaviorSubject<ContactSubscription>;
readonly pendingOut$: BehaviorSubject<boolean>;
readonly pendingIn$: BehaviorSubject<boolean>;
readonly resources$: BehaviorSubject<JidToPresence>;
private readonly messageStore;
get messages$(): Subject<Message>;
get messages(): Message[];
get dateMessagesGroups(): DateMessagesGroup<Message>[];
get oldestMessage(): Message | undefined;
get mostRecentMessage(): Message | undefined;
get mostRecentMessageReceived(): Message | undefined;
get mostRecentMessageSent(): Message | undefined;
/**
* Do not call directly, use {@link ContactFactoryService#createContact} instead.
*/
constructor(httpClinet: HttpClient, jidPlain: string, name: string, nick: string, logService?: LogService, avatar?: string);
addMessage(message: Message): void;
equalsBareJid(other: Recipient | JID): boolean;
isSubscribed(): boolean;
isUnaffiliated(): boolean;
updateResourcePresence(jid: string, presence: Presence): void;
getMessageById(id: string): Message | null;
private determineOverallPresence;
}