use of org.matrix.androidsdk.util.BingRulesManager in project matrix-android-sdk by matrix-org.
the class EventTimeline method triggerPush.
/**
* Trigger a push if there is a dedicated push rules which implies it.
*
* @param event the event
*/
private void triggerPush(Event event) {
BingRule bingRule;
boolean outOfTimeEvent = false;
long maxlifetime = 0;
long eventLifeTime = 0;
JsonObject eventContent = event.getContentAsJsonObject();
if (eventContent.has("lifetime")) {
maxlifetime = eventContent.get("lifetime").getAsLong();
eventLifeTime = System.currentTimeMillis() - event.getOriginServerTs();
outOfTimeEvent = eventLifeTime > maxlifetime;
}
BingRulesManager bingRulesManager = mDataHandler.getBingRulesManager();
// If the bing rules apply, bing
if (!outOfTimeEvent && (bingRulesManager != null) && (null != (bingRule = bingRulesManager.fulfilledBingRule(event)))) {
if (bingRule.shouldNotify()) {
// bing the call events only if they make sense
if (Event.EVENT_TYPE_CALL_INVITE.equals(event.getType())) {
long lifeTime = event.getAge();
if (Long.MAX_VALUE == lifeTime) {
lifeTime = System.currentTimeMillis() - event.getOriginServerTs();
}
if (lifeTime > MXCall.CALL_TIMEOUT_MS) {
Log.d(LOG_TAG, "handleLiveEvent : IGNORED onBingEvent rule id " + bingRule.ruleId + " event id " + event.eventId + " in " + event.roomId);
return;
}
}
Log.d(LOG_TAG, "handleLiveEvent : onBingEvent rule id " + bingRule.ruleId + " event id " + event.eventId + " in " + event.roomId);
mDataHandler.onBingEvent(event, mState, bingRule);
} else {
Log.d(LOG_TAG, "handleLiveEvent :rule id " + bingRule.ruleId + " event id " + event.eventId + " in " + event.roomId + " has a mute notify rule");
}
} else if (outOfTimeEvent) {
Log.e(LOG_TAG, "handleLiveEvent : outOfTimeEvent for " + event.eventId + " in " + event.roomId);
Log.e(LOG_TAG, "handleLiveEvent : outOfTimeEvent maxlifetime " + maxlifetime + " eventLifeTime " + eventLifeTime);
}
}
Aggregations