import { Headers, Message, Metadata } from '@ably/chat'; import { jsonRpcBlocking } from './jsonrpc'; export class RpcMessage implements Message { private readonly _instanceId: string; constructor(instanceId: string) { this._instanceId = instanceId; } get timeserial(): string { const { response } = jsonRpcBlocking.request('Message#timeserial', { refId: this._instanceId }); return response; } get clientId(): string { const { response } = jsonRpcBlocking.request('Message#clientId', { refId: this._instanceId }); return response; } get roomId(): string { const { response } = jsonRpcBlocking.request('Message#roomId', { refId: this._instanceId }); return response; } get text(): string { const { response } = jsonRpcBlocking.request('Message#text', { refId: this._instanceId }); return response; } get createdAt(): Date { const { response } = jsonRpcBlocking.request('Message#createdAt', { refId: this._instanceId }); return new Date(response); } get metadata(): Metadata { const { response } = jsonRpcBlocking.request('Message#metadata', { refId: this._instanceId }); return response; } get headers(): Headers { const { response } = jsonRpcBlocking.request('Message#headers', { refId: this._instanceId }); return response; } before(message: Message): boolean { const { response } = jsonRpcBlocking.request('Message.before', { refId: this._instanceId, args: { messageInstanceId: (message as RpcMessage)._instanceId }, }); return response; } after(message: Message): boolean { const { response } = jsonRpcBlocking.request('Message.after', { refId: this._instanceId, args: { messageInstanceId: (message as RpcMessage)._instanceId }, }); return response; } equal(message: Message): boolean { const { response } = jsonRpcBlocking.request('Message.equal', { refId: this._instanceId, args: { messageInstanceId: (message as RpcMessage)._instanceId }, }); return response; } }