Просмотр исходного кода

Merge pull request #1408 from oltaco/improved-contact-mgmt

Contact management tweaks
ripplebiz 6 месяцев назад
Родитель
Сommit
bf0777845a
2 измененных файлов с 3 добавлено и 4 удалено
  1. 2 2
      examples/companion_radio/MyMesh.cpp
  2. 1 2
      src/helpers/BaseChatMesh.cpp

+ 2 - 2
examples/companion_radio/MyMesh.cpp

@@ -323,7 +323,7 @@ void MyMesh::onContactsFull() {
 
 void MyMesh::onDiscoveredContact(ContactInfo &contact, bool is_new, uint8_t path_len, const uint8_t* path) {
   if (_serial->isConnected()) {
-    if (!shouldAutoAddContactType(contact.type) && is_new) {
+    if (is_new) {
       writeContactRespFrame(PUSH_CODE_NEW_ADVERT, contact);
     } else {
       out_frame[0] = PUSH_CODE_ADVERT;
@@ -358,7 +358,7 @@ void MyMesh::onDiscoveredContact(ContactInfo &contact, bool is_new, uint8_t path
     memcpy(p->path, path, p->path_len);
   }
 
-  dirty_contacts_expiry = futureMillis(LAZY_CONTACTS_WRITE_DELAY);
+  if (!is_new) dirty_contacts_expiry = futureMillis(LAZY_CONTACTS_WRITE_DELAY); // only schedule lazy write for contacts that are in contacts[]
 }
 
 static int sort_by_recent(const void *a, const void *b) {

+ 1 - 2
src/helpers/BaseChatMesh.cpp

@@ -133,7 +133,7 @@ void BaseChatMesh::onAdvertRecv(mesh::Packet* packet, const mesh::Identity& id,
   }
   putBlobByKey(id.pub_key, PUB_KEY_SIZE, temp_buf, plen);
 
-  bool is_new = false;
+  bool is_new = false; // true = not in contacts[], false = exists in contacts[]
   if (from == NULL) {
     if (!shouldAutoAddContactType(parser.getType())) {
       ContactInfo ci;
@@ -142,7 +142,6 @@ void BaseChatMesh::onAdvertRecv(mesh::Packet* packet, const mesh::Identity& id,
       return;
     }
 
-    is_new = true;
     from = allocateContactSlot();
     if (from == NULL) {
       ContactInfo ci;