add DataStore::deleteBlobByKey()
This commit is contained in:
@@ -560,6 +560,9 @@ bool DataStore::putBlobByKey(const uint8_t key[], int key_len, const uint8_t src
|
|||||||
}
|
}
|
||||||
return false; // error
|
return false; // error
|
||||||
}
|
}
|
||||||
|
bool DataStore::deleteBlobByKey(const uint8_t key[], int key_len) {
|
||||||
|
return true; // this is just a stub on NRF52/STM32 platforms
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
uint8_t DataStore::getBlobByKey(const uint8_t key[], int key_len, uint8_t dest_buf[]) {
|
uint8_t DataStore::getBlobByKey(const uint8_t key[], int key_len, uint8_t dest_buf[]) {
|
||||||
char path[64];
|
char path[64];
|
||||||
@@ -598,4 +601,17 @@ bool DataStore::putBlobByKey(const uint8_t key[], int key_len, const uint8_t src
|
|||||||
}
|
}
|
||||||
return false; // error
|
return false; // error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DataStore::deleteBlobByKey(const uint8_t key[], int key_len) {
|
||||||
|
char path[64];
|
||||||
|
char fname[18];
|
||||||
|
|
||||||
|
if (key_len > 8) key_len = 8; // just use first 8 bytes (prefix)
|
||||||
|
mesh::Utils::toHex(fname, key, key_len);
|
||||||
|
sprintf(path, "/bl/%s", fname);
|
||||||
|
|
||||||
|
_fs->remove(path);
|
||||||
|
|
||||||
|
return true; // return true even if file did not exist
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ public:
|
|||||||
void migrateToSecondaryFS();
|
void migrateToSecondaryFS();
|
||||||
uint8_t getBlobByKey(const uint8_t key[], int key_len, uint8_t dest_buf[]);
|
uint8_t getBlobByKey(const uint8_t key[], int key_len, uint8_t dest_buf[]);
|
||||||
bool putBlobByKey(const uint8_t key[], int key_len, const uint8_t src_buf[], uint8_t len);
|
bool putBlobByKey(const uint8_t key[], int key_len, const uint8_t src_buf[], uint8_t len);
|
||||||
|
bool deleteBlobByKey(const uint8_t key[], int key_len);
|
||||||
File openRead(const char* filename);
|
File openRead(const char* filename);
|
||||||
File openRead(FILESYSTEM* fs, const char* filename);
|
File openRead(FILESYSTEM* fs, const char* filename);
|
||||||
bool removeFile(const char* filename);
|
bool removeFile(const char* filename);
|
||||||
|
|||||||
@@ -307,6 +307,7 @@ bool MyMesh::shouldOverwriteWhenFull() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MyMesh::onContactOverwrite(const uint8_t* pub_key) {
|
void MyMesh::onContactOverwrite(const uint8_t* pub_key) {
|
||||||
|
_store->deleteBlobByKey(pub_key, PUB_KEY_SIZE); // delete from storage
|
||||||
if (_serial->isConnected()) {
|
if (_serial->isConnected()) {
|
||||||
out_frame[0] = PUSH_CODE_CONTACT_DELETED;
|
out_frame[0] = PUSH_CODE_CONTACT_DELETED;
|
||||||
memcpy(&out_frame[1], pub_key, PUB_KEY_SIZE);
|
memcpy(&out_frame[1], pub_key, PUB_KEY_SIZE);
|
||||||
@@ -1124,6 +1125,7 @@ void MyMesh::handleCmdFrame(size_t len) {
|
|||||||
uint8_t *pub_key = &cmd_frame[1];
|
uint8_t *pub_key = &cmd_frame[1];
|
||||||
ContactInfo *recipient = lookupContactByPubKey(pub_key, PUB_KEY_SIZE);
|
ContactInfo *recipient = lookupContactByPubKey(pub_key, PUB_KEY_SIZE);
|
||||||
if (recipient && removeContact(*recipient)) {
|
if (recipient && removeContact(*recipient)) {
|
||||||
|
_store->deleteBlobByKey(pub_key, PUB_KEY_SIZE);
|
||||||
dirty_contacts_expiry = futureMillis(LAZY_CONTACTS_WRITE_DELAY);
|
dirty_contacts_expiry = futureMillis(LAZY_CONTACTS_WRITE_DELAY);
|
||||||
writeOKFrame();
|
writeOKFrame();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user