mirror of
https://github.com/status-im/status-web-archive.git
synced 2025-02-05 12:24:31 +00:00
Merge pull request #36 from status-im/remove-warnings
This commit is contained in:
commit
a2859e1e03
@ -74,7 +74,7 @@ export function useMessenger(chatId: string, chatIdList: string[]) {
|
|||||||
|
|
||||||
const addNewMessage = useCallback(
|
const addNewMessage = useCallback(
|
||||||
(msg: ApplicationMetadataMessage, id: string) => {
|
(msg: ApplicationMetadataMessage, id: string) => {
|
||||||
if (msg.signer && msg.chatMessage?.text) {
|
if (msg.signer && msg.chatMessage?.text && msg.chatMessage.clock) {
|
||||||
const content = msg.chatMessage.text;
|
const content = msg.chatMessage.text;
|
||||||
const date = new Date(msg.chatMessage.clock);
|
const date = new Date(msg.chatMessage.clock);
|
||||||
addNewMessageRaw(msg.signer, content, date, id);
|
addNewMessageRaw(msg.signer, content, date, id);
|
||||||
|
@ -14,7 +14,7 @@ export class Chat {
|
|||||||
/**
|
/**
|
||||||
* Create a public chat room.
|
* Create a public chat room.
|
||||||
*/
|
*/
|
||||||
public static async create(id: string) {
|
public static async create(id: string): Promise<Chat> {
|
||||||
const symKey = await createSymKeyFromPassword(id);
|
const symKey = await createSymKeyFromPassword(id);
|
||||||
|
|
||||||
return new Chat(id, symKey);
|
return new Chat(id, symKey);
|
||||||
@ -34,7 +34,7 @@ export class Chat {
|
|||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public handleNewMessage(message: ChatMessage) {
|
public handleNewMessage(message: ChatMessage): void {
|
||||||
this._updateClockFromMessage(message);
|
this._updateClockFromMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,11 +52,18 @@ export class Chat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _updateClockFromMessage(message: ChatMessage): void {
|
private _updateClockFromMessage(message: ChatMessage): void {
|
||||||
if (!this.lastMessage || this.lastMessage.clock <= message.clock) {
|
if (
|
||||||
|
!this.lastMessage ||
|
||||||
|
!this.lastMessage.clock ||
|
||||||
|
(message.clock && this.lastMessage.clock <= message.clock)
|
||||||
|
) {
|
||||||
this.lastMessage = message;
|
this.lastMessage = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.lastClockValue || this.lastClockValue < message.clock) {
|
if (
|
||||||
|
!this.lastClockValue ||
|
||||||
|
(message.clock && this.lastClockValue < message.clock)
|
||||||
|
) {
|
||||||
this.lastClockValue = message.clock;
|
this.lastClockValue = message.clock;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
import { Reader } from "protobufjs";
|
import { Reader } from "protobufjs";
|
||||||
|
|
||||||
import * as proto from "./proto/communities/v1/chat_message";
|
import * as proto from "./proto/communities/v1/chat_message";
|
||||||
import { ChatMessage_ContentType } from "./proto/communities/v1/chat_message";
|
import {
|
||||||
|
AudioMessage,
|
||||||
|
ChatMessage_ContentType,
|
||||||
|
ImageMessage,
|
||||||
|
StickerMessage,
|
||||||
|
} from "./proto/communities/v1/chat_message";
|
||||||
import { MessageType } from "./proto/communities/v1/enums";
|
import { MessageType } from "./proto/communities/v1/enums";
|
||||||
|
|
||||||
export class ChatMessage {
|
export class ChatMessage {
|
||||||
@ -15,7 +20,7 @@ export class ChatMessage {
|
|||||||
timestamp: number,
|
timestamp: number,
|
||||||
text: string,
|
text: string,
|
||||||
chatId: string
|
chatId: string
|
||||||
) {
|
): ChatMessage {
|
||||||
const proto = {
|
const proto = {
|
||||||
clock, // ms?
|
clock, // ms?
|
||||||
timestamp, //ms?
|
timestamp, //ms?
|
||||||
@ -50,11 +55,80 @@ export class ChatMessage {
|
|||||||
return proto.ChatMessage.encode(this.proto).finish();
|
return proto.ChatMessage.encode(this.proto).finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
public get clock() {
|
/** Lamport timestamp of the chat message */
|
||||||
|
public get clock(): number | undefined {
|
||||||
return this.proto.clock;
|
return this.proto.clock;
|
||||||
}
|
}
|
||||||
|
|
||||||
get text(): string | undefined {
|
/**
|
||||||
|
* Unix timestamps in milliseconds, currently not used as we use whisper as more reliable, but here
|
||||||
|
* so that we don't rely on it
|
||||||
|
*/
|
||||||
|
public get timestamp(): number | undefined {
|
||||||
|
return this.proto.timestamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Text of the message
|
||||||
|
*/
|
||||||
|
public get text(): string | undefined {
|
||||||
return this.proto.text;
|
return this.proto.text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Id of the message that we are replying to
|
||||||
|
*/
|
||||||
|
public get responseTo(): string | undefined {
|
||||||
|
return this.proto.responseTo;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ens name of the sender
|
||||||
|
*/
|
||||||
|
public get ensName(): string | undefined {
|
||||||
|
return this.proto.ensName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Chat id, this field is symmetric for public-chats and private group chats,
|
||||||
|
* but asymmetric in case of one-to-ones, as the sender will use the chat-id
|
||||||
|
* of the received, while the receiver will use the chat-id of the sender.
|
||||||
|
* Probably should be the concatenation of sender-pk & receiver-pk in alphabetical order
|
||||||
|
*/
|
||||||
|
public get chatId(): string {
|
||||||
|
return this.proto.chatId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type of message (public/one-to-one/private-group-chat)
|
||||||
|
*/
|
||||||
|
public get messageType(): MessageType | undefined {
|
||||||
|
return this.proto.messageType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type of the content of the message
|
||||||
|
*/
|
||||||
|
public get contentType(): ChatMessage_ContentType | undefined {
|
||||||
|
return this.proto.contentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public get sticker(): StickerMessage | undefined {
|
||||||
|
return this.proto.sticker;
|
||||||
|
}
|
||||||
|
|
||||||
|
public get image(): ImageMessage | undefined {
|
||||||
|
return this.proto.image;
|
||||||
|
}
|
||||||
|
|
||||||
|
public get audio(): AudioMessage | undefined {
|
||||||
|
return this.proto.audio;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used when sharing a community via a chat message.
|
||||||
|
*/
|
||||||
|
public get community(): Uint8Array | undefined {
|
||||||
|
return this.proto.community;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ export class Messenger {
|
|||||||
public static async create(
|
public static async create(
|
||||||
identity: Identity,
|
identity: Identity,
|
||||||
wakuOptions?: WakuCreateOptions
|
wakuOptions?: WakuCreateOptions
|
||||||
) {
|
): Promise<Messenger> {
|
||||||
const _wakuOptions = Object.assign({ bootstrap: true }, wakuOptions);
|
const _wakuOptions = Object.assign({ bootstrap: true }, wakuOptions);
|
||||||
const waku = await Waku.create(_wakuOptions);
|
const waku = await Waku.create(_wakuOptions);
|
||||||
return new Messenger(identity, waku);
|
return new Messenger(identity, waku);
|
||||||
@ -39,7 +39,7 @@ export class Messenger {
|
|||||||
*
|
*
|
||||||
* Use `addListener` to get messages received on this chat.
|
* Use `addListener` to get messages received on this chat.
|
||||||
*/
|
*/
|
||||||
public async joinChat(chatId: string) {
|
public async joinChat(chatId: string): Promise<void> {
|
||||||
if (this.chatsById.has(chatId))
|
if (this.chatsById.has(chatId))
|
||||||
throw `Failed to join chat, it is already joined: ${chatId}`;
|
throw `Failed to join chat, it is already joined: ${chatId}`;
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ export class Messenger {
|
|||||||
public addObserver(
|
public addObserver(
|
||||||
observer: (message: ApplicationMetadataMessage) => void,
|
observer: (message: ApplicationMetadataMessage) => void,
|
||||||
chatId: string
|
chatId: string
|
||||||
) {
|
): void {
|
||||||
// Not sure this is the best design here. Maybe `addObserver` and `joinChat` should be merged.
|
// Not sure this is the best design here. Maybe `addObserver` and `joinChat` should be merged.
|
||||||
|
|
||||||
if (!this.chatsById.has(chatId))
|
if (!this.chatsById.has(chatId))
|
||||||
@ -153,7 +153,7 @@ export class Messenger {
|
|||||||
if (!chat)
|
if (!chat)
|
||||||
throw `Failed to retrieve messages, chat is not joined: ${chatId}`;
|
throw `Failed to retrieve messages, chat is not joined: ${chatId}`;
|
||||||
|
|
||||||
const _callback = (wakuMessages: WakuMessage[]) => {
|
const _callback = (wakuMessages: WakuMessage[]): void => {
|
||||||
const isDefined = (
|
const isDefined = (
|
||||||
msg: ApplicationMetadataMessage | undefined
|
msg: ApplicationMetadataMessage | undefined
|
||||||
): msg is ApplicationMetadataMessage => {
|
): msg is ApplicationMetadataMessage => {
|
||||||
@ -187,7 +187,7 @@ export class Messenger {
|
|||||||
private _handleNewChatMessage(
|
private _handleNewChatMessage(
|
||||||
chat: Chat,
|
chat: Chat,
|
||||||
message: ApplicationMetadataMessage
|
message: ApplicationMetadataMessage
|
||||||
) {
|
): void {
|
||||||
if (!message.payload || !message.type || !message.signature) return;
|
if (!message.payload || !message.type || !message.signature) return;
|
||||||
|
|
||||||
const chatMessage = ChatMessage.decode(message.payload);
|
const chatMessage = ChatMessage.decode(message.payload);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user