CHANGE | instant send text message #40

Merged
Vitalik merged 5 commits from feature/send-text-msg into stage 7 months ago
STRIKE commented 7 months ago
Collaborator

Допрацювання відправки текстових повідомлень.

Допрацювання відправки текстових повідомлень.
STRIKE added 2 commits 7 months ago
STRIKE added 1 commit 7 months ago
Vitalik reviewed 7 months ago
_.some(messages, msg => msg.uniqueKey === it.uniqueKey),
)
// delete delivered msgs
Owner

з назви метода і так це зрозуміло, видалити

з назви метода і так це зрозуміло, видалити
STRIKE marked this conversation as resolved
Vitalik reviewed 7 months ago
})
}
// we can temporary preview message, not compared to his status (delivered or failed with deliver)
Owner

видалити цей коментар

видалити цей коментар
STRIKE marked this conversation as resolved
Vitalik reviewed 7 months ago
}
}
public async addProcessingMsgs(
Owner

я б виділив методи які звязані з фековими повідомленнями в окремий клас

я б виділив методи які звязані з фековими повідомленнями в окремий клас
STRIKE marked this conversation as resolved
Vitalik reviewed 7 months ago
encodeProcessingMessages,
)
const updatedMessages = messages.filter(
Owner

Ось такі обчислення можнна виносити в приватні методи, щоб код простіше читався

Ось такі обчислення можнна виносити в приватні методи, щоб код простіше читався
STRIKE marked this conversation as resolved
Vitalik reviewed 7 months ago
await storageService.set(StorageKey.Messages, value)
}
private async createFakeTextMessage(
Owner

а такі методи краще щоб були protected, в крайньому випадку public

а такі методи краще щоб були protected, в крайньому випадку public
STRIKE marked this conversation as resolved
Vitalik reviewed 7 months ago
}
private async createFakeTextMessage(
userId: number,
Owner

Я б взагалі коннкретно цей метод перетворив у клас FakeTextMessage

типу

export class FakeTextMessage {
  constructor(
    public id: string,
    public chatId: string // etc ...
  ) {}

  static getInstance(param) {
    const uniqueKey = generateId();

    const message = {
      id: generateId(),
      chatId,
      userId,
      type: MessageType.Text,
      isPined: false,
      content: {
        message: text,
        mentionsMessage,
        replyToMessage: undefined,
      },
      createdAt: new Date().toISOString(),
      events: null,
      uniqueKey,
      isFake: true,
    };

    if (mentionsMessage) message.content.mentionsMessage = mentionsMessage;

    if (replyToId) {
      const replyMessage = await this.dbCMRepository.getMessage(
        replyToId.toString()
      );

      if (replyMessage)
        message.content.replyToMessage = _.pick(replyMessage, [
          "id",
          "userId",
          "type",
          "content",
        ]);
    }

    return new FakeTextMessage(message.id, message.chatId//...etc) ;
  }
}

Я б взагалі коннкретно цей метод перетворив у клас FakeTextMessage типу ``` export class FakeTextMessage { constructor( public id: string, public chatId: string // etc ... ) {} static getInstance(param) { const uniqueKey = generateId(); const message = { id: generateId(), chatId, userId, type: MessageType.Text, isPined: false, content: { message: text, mentionsMessage, replyToMessage: undefined, }, createdAt: new Date().toISOString(), events: null, uniqueKey, isFake: true, }; if (mentionsMessage) message.content.mentionsMessage = mentionsMessage; if (replyToId) { const replyMessage = await this.dbCMRepository.getMessage( replyToId.toString() ); if (replyMessage) message.content.replyToMessage = _.pick(replyMessage, [ "id", "userId", "type", "content", ]); } return new FakeTextMessage(message.id, message.chatId//...etc) ; } } ```
STRIKE marked this conversation as resolved
Vitalik reviewed 7 months ago
public async sendTextMessage(data: ISendTextMessage) {
const account = await this.accountManager.getDbAccount()
if (this.isConnected === 'online') {
Owner

можна рознести на два методи sendTextMessageOnline sendTextMessageOffline

можна рознести на два методи sendTextMessageOnline sendTextMessageOffline
STRIKE marked this conversation as resolved
Vitalik reviewed 7 months ago
}
public async onNewMessage(message: IChatMessage | IChatMessage[]) {
console.log('on new message from chat-message manager', message)
Owner

консоль видалити

консоль видалити
STRIKE marked this conversation as resolved
Vitalik reviewed 7 months ago
message?.chatId?.toString() === chatId.toString() &&
!messagesContainsItem(message?.id)
) {
if (message.uniqueKey) {
Owner

це також ркаще внести в окрму функцію, бо зара потрібно розбирати код щоб зрозуміти що саме відбувається в функції

це також ркаще внести в окрму функцію, бо зара потрібно розбирати код щоб зрозуміти що саме відбувається в функції
STRIKE marked this conversation as resolved
STRIKE added 1 commit 7 months ago
Vitalik reviewed 7 months ago
useEffect(() => {
if (chatId) loadItems({ chatId }, true)
console.log(messages)
Owner

видалити

видалити
STRIKE marked this conversation as resolved
Vitalik reviewed 7 months ago
const onLoadNew = async (limit?: number) => {
const id = messages[messages.length - 1]?.id
// const id = messages[messages.length - 1]?.id
Owner

видалити

видалити
STRIKE marked this conversation as resolved
Vitalik reviewed 7 months ago
const id = messages[messages.length - 1]?.id
// const id = messages[messages.length - 1]?.id
await loadNew(limit)
// setTimeout(() => setScrollToId(id), 80)
Owner

ваидалити

ваидалити
STRIKE marked this conversation as resolved
Vitalik reviewed 7 months ago
replyToId?: number
}
export class FakeTextMessage {
Owner

це не сервіс, це по суті dto, можна винести в папку dto або просто в окрему папку core

це не сервіс, це по суті dto, можна винести в папку dto або просто в окрему папку core
STRIKE marked this conversation as resolved
STRIKE added 1 commit 7 months ago
Vitalik merged commit ed9ac6f170 into stage 7 months ago
Vitalik deleted branch feature/send-text-msg 7 months ago
The pull request has been merged as ed9ac6f170.
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This pull request currently doesn't have any dependencies.

Loading…
There is no content yet.