Skip to content

Commit 49be32d

Browse files
Allow deleting previously broadcast alerts
1 parent 263df70 commit 49be32d

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

src/omnicore/notifications.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,26 @@ namespace mastercore
2323
//! Vector of currently active Omni alerts
2424
std::vector<AlertData> currentOmniAlerts;
2525

26+
/**
27+
* Deletes previously broadcast alerts from sender from the alerts vector
28+
*
29+
* Note cannot be used to delete alerts from other addresses, nor to delete system generated feature alerts
30+
*/
31+
void DeleteAlerts(const std::string& sender)
32+
{
33+
for (std::vector<AlertData>::iterator it = currentOmniAlerts.begin(); it != currentOmniAlerts.end(); ) {
34+
AlertData alert = *it;
35+
if (sender == alert.alert_sender) {
36+
PrintToLog("Removing deleted alert (from:%s type:%d expiry:%d message:%s)\n", alert.alert_sender,
37+
alert.alert_type, alert.alert_expiry, alert.alert_message);
38+
it = currentOmniAlerts.erase(it);
39+
uiInterface.OmniStateChanged();
40+
} else {
41+
it++;
42+
}
43+
}
44+
}
45+
2646
/**
2747
* Adds a new alert to the alerts vector
2848
*

src/omnicore/notifications.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ struct AlertData
2424
/** Determines whether the sender is an authorized source for Omni Core alerts. */
2525
bool CheckAlertAuthorization(const std::string& sender);
2626

27+
/** Deletes previously broadcast alerts from the sender. */
28+
void DeleteAlerts(const std::string& sender);
29+
2730
/** Adds a new alert to the alerts vector. */
2831
void AddAlert(const std::string& sender, uint16_t alertType, uint32_t alertExpiry, const std::string& alertMessage);
2932

src/omnicore/tx.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1933,8 +1933,11 @@ int CMPTransaction::logicMath_Alert()
19331933
return (PKT_ERROR -51);
19341934
}
19351935

1936-
// add the alert
1937-
AddAlert(sender, alert_type, alert_expiry, alert_text);
1936+
if (alert_type == 65535) { // set alert type to FFFF to clear previously sent alerts
1937+
DeleteAlerts(sender);
1938+
} else {
1939+
AddAlert(sender, alert_type, alert_expiry, alert_text);
1940+
}
19381941

19391942
// we have a new alert, fire a notify event if needed
19401943
CAlert::Notify(alert_text, true);

0 commit comments

Comments
 (0)