Тестовая синхронизация внутри диалогов

This commit is contained in:
RoyceDa
2026-02-13 17:44:48 +02:00
parent 6a76061399
commit 40ff99e66d
2 changed files with 48 additions and 2 deletions

View File

@@ -282,9 +282,18 @@ export function DialogProvider(props: DialogProviderProps) {
lastMessageTimeRef.current = messages[messages.length - 1].timestamp;
}, [props.dialog, viewState, focus, messages, blocked, idle]);
/**
* Обработчик чтения для личных сообщений
*/
usePacket(0x07, async (packet : PacketRead) => {
info("Read packet received in dialog provider");
const fromPublicKey = packet.getFromPublicKey();
if(fromPublicKey == publicKey){
/**
* Если это пакет синхронизации прочтения то игнорируем его здесь, для него есть другой обработчик
*/
return;
}
if(hasGroup(props.dialog)){
/**
* Для групп обработка чтения есть ниже
@@ -306,9 +315,18 @@ export function DialogProvider(props: DialogProviderProps) {
//updateDialog(props.dialog);
}, [idle, props.dialog]);
/**
* Обработчик чтения групповых сообщений
*/
usePacket(0x07, async (packet : PacketRead) => {
info("Read packet received in dialog provider");
//const fromPublicKey = packet.getFromPublicKey();
const fromPublicKey = packet.getFromPublicKey();
if(fromPublicKey == publicKey){
/**
* Если это пакет синхронизации прочтения то игнорируем его здесь, для него есть другой обработчик
*/
return;
}
const toPublicKey = packet.getToPublicKey();
if(!hasGroup(props.dialog)){
/**
@@ -331,6 +349,35 @@ export function DialogProvider(props: DialogProviderProps) {
//updateDialog(props.dialog);
}, [idle, props.dialog]);
/**
* Обработчик синхронизации чтения
*/
usePacket(0x07, async (packet : PacketRead) => {
const fromPublicKey = packet.getFromPublicKey();
const toPublicKey = packet.getToPublicKey();
if(fromPublicKey != publicKey){
/**
* Это не пакет синхронизации, игнорируем
*/
return;
}
if(toPublicKey != props.dialog){
/**
* Относится не к этому диалогу
*/
return;
}
setMessages((prev) => prev.map((msg) => {
if(msg.from_public_key == toPublicKey && !msg.readed){
return {
...msg,
readed: 1
}
}
return msg;
}));
}, [publicKey]);
usePacket(0x08, async (packet : PacketDelivery) => {
info("Delivery packet received in dialog provider");
const fromPublicKey = packet.getToPublicKey();