Тестовая синхронизация внутри диалогов
This commit is contained in:
@@ -282,9 +282,18 @@ export function DialogProvider(props: DialogProviderProps) {
|
|||||||
lastMessageTimeRef.current = messages[messages.length - 1].timestamp;
|
lastMessageTimeRef.current = messages[messages.length - 1].timestamp;
|
||||||
}, [props.dialog, viewState, focus, messages, blocked, idle]);
|
}, [props.dialog, viewState, focus, messages, blocked, idle]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Обработчик чтения для личных сообщений
|
||||||
|
*/
|
||||||
usePacket(0x07, async (packet : PacketRead) => {
|
usePacket(0x07, async (packet : PacketRead) => {
|
||||||
info("Read packet received in dialog provider");
|
info("Read packet received in dialog provider");
|
||||||
const fromPublicKey = packet.getFromPublicKey();
|
const fromPublicKey = packet.getFromPublicKey();
|
||||||
|
if(fromPublicKey == publicKey){
|
||||||
|
/**
|
||||||
|
* Если это пакет синхронизации прочтения то игнорируем его здесь, для него есть другой обработчик
|
||||||
|
*/
|
||||||
|
return;
|
||||||
|
}
|
||||||
if(hasGroup(props.dialog)){
|
if(hasGroup(props.dialog)){
|
||||||
/**
|
/**
|
||||||
* Для групп обработка чтения есть ниже
|
* Для групп обработка чтения есть ниже
|
||||||
@@ -306,9 +315,18 @@ export function DialogProvider(props: DialogProviderProps) {
|
|||||||
//updateDialog(props.dialog);
|
//updateDialog(props.dialog);
|
||||||
}, [idle, props.dialog]);
|
}, [idle, props.dialog]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Обработчик чтения групповых сообщений
|
||||||
|
*/
|
||||||
usePacket(0x07, async (packet : PacketRead) => {
|
usePacket(0x07, async (packet : PacketRead) => {
|
||||||
info("Read packet received in dialog provider");
|
info("Read packet received in dialog provider");
|
||||||
//const fromPublicKey = packet.getFromPublicKey();
|
const fromPublicKey = packet.getFromPublicKey();
|
||||||
|
if(fromPublicKey == publicKey){
|
||||||
|
/**
|
||||||
|
* Если это пакет синхронизации прочтения то игнорируем его здесь, для него есть другой обработчик
|
||||||
|
*/
|
||||||
|
return;
|
||||||
|
}
|
||||||
const toPublicKey = packet.getToPublicKey();
|
const toPublicKey = packet.getToPublicKey();
|
||||||
if(!hasGroup(props.dialog)){
|
if(!hasGroup(props.dialog)){
|
||||||
/**
|
/**
|
||||||
@@ -331,6 +349,35 @@ export function DialogProvider(props: DialogProviderProps) {
|
|||||||
//updateDialog(props.dialog);
|
//updateDialog(props.dialog);
|
||||||
}, [idle, 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) => {
|
usePacket(0x08, async (packet : PacketDelivery) => {
|
||||||
info("Delivery packet received in dialog provider");
|
info("Delivery packet received in dialog provider");
|
||||||
const fromPublicKey = packet.getToPublicKey();
|
const fromPublicKey = packet.getToPublicKey();
|
||||||
|
|||||||
@@ -445,7 +445,6 @@ export function useDialogFiber() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
console.info("PACKED_READ_SYNC");
|
console.info("PACKED_READ_SYNC");
|
||||||
debugger;
|
|
||||||
await runQuery(`UPDATE messages SET read = 1 WHERE from_public_key = ? AND to_public_key = ? AND account = ?`,
|
await runQuery(`UPDATE messages SET read = 1 WHERE from_public_key = ? AND to_public_key = ? AND account = ?`,
|
||||||
[toPublicKey, fromPublicKey, publicKey]);
|
[toPublicKey, fromPublicKey, publicKey]);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user