Search in sources :

Example 1 with BingRulesManager

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);
    }
}
Also used : JsonObject(com.google.gson.JsonObject) BingRulesManager(org.matrix.androidsdk.util.BingRulesManager) BingRule(org.matrix.androidsdk.rest.model.bingrules.BingRule)

Aggregations

JsonObject (com.google.gson.JsonObject)1 BingRule (org.matrix.androidsdk.rest.model.bingrules.BingRule)1 BingRulesManager (org.matrix.androidsdk.util.BingRulesManager)1