Тестовая синхронизация внутри диалогов
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -445,7 +445,6 @@ export function useDialogFiber() {
|
||||
return;
|
||||
}
|
||||
console.info("PACKED_READ_SYNC");
|
||||
debugger;
|
||||
await runQuery(`UPDATE messages SET read = 1 WHERE from_public_key = ? AND to_public_key = ? AND account = ?`,
|
||||
[toPublicKey, fromPublicKey, publicKey]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user