Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 41bf871e authored by Tony Mak's avatar Tony Mak
Browse files

Fix logging in ExtServices for Q Beta

Two issues:
1. The notification key -> logging id mapping should be removed
   whenever suggest() is called as the session is considered to be ended.

2. We were only storing the key -> logging id mapping when
   suggestConversationActions generated some replies. Thus, when only smart actions
   are generated from generateLinks, we didn't log it (as the mapping is missing)
   So, we now always cache the ID after calling suggestConversationActions.
   Remove the mapping when we find that neither actions or replies
   are generated.
   PS: We have a CL (ag/6033786) to switch to suggestConversationActions,
   fix for #2 is no longer needed once it is in. But that change won't
   be in before Android Beta as the model side change is not done.

BUG: 120803809
Test: Manual. Send a message with URL, observer subsequent events (e.g:
clicked) are logged.
Test: atest SmartActionHelperTest

Change-Id: Iea1a46466846ef99d51316dcbb294bfe0cf33653
parent 92fd2908
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -215,9 +215,9 @@ public class Assistant extends NotificationAssistantService {
            return null;
        }
        NotificationEntry entry = new NotificationEntry(mPackageManager, sbn, channel);
        ArrayList<Notification.Action> actions = mSmartActionsHelper.suggestActions(entry);
        ArrayList<CharSequence> replies = mSmartActionsHelper.suggestReplies(entry);
        return createEnqueuedNotificationAdjustment(entry, actions, replies);
        SmartActionsHelper.SmartSuggestions suggestions = mSmartActionsHelper.suggest(entry);
        return createEnqueuedNotificationAdjustment(
                entry, suggestions.actions, suggestions.replies);
    }

    /** A convenience helper for creating an adjustment for an SBN. */
+30 −1
Original line number Diff line number Diff line
@@ -92,6 +92,23 @@ public class SmartActionsHelper {
        mSettings = settings;
    }

    @NonNull
    SmartSuggestions suggest(@NonNull NotificationEntry entry) {
        // Whenever suggest() is called on a notification, its previous session is ended.
        mNotificationKeyToResultIdCache.remove(entry.getSbn().getKey());

        ArrayList<Notification.Action> actions = suggestActions(entry);
        ArrayList<CharSequence> replies = suggestReplies(entry);

        // Not logging subsequent events of this notification if we didn't generate any suggestion
        // for it.
        if (replies.isEmpty() && actions.isEmpty()) {
            mNotificationKeyToResultIdCache.remove(entry.getSbn().getKey());
        }

        return new SmartSuggestions(replies, actions);
    }

    /**
     * Adds action adjustments based on the notification contents.
     */
@@ -115,6 +132,7 @@ public class SmartActionsHelper {
                messages.get(messages.size() - 1).getText(), MAX_SMART_ACTIONS);
    }

    @NonNull
    ArrayList<CharSequence> suggestReplies(@NonNull NotificationEntry entry) {
        if (!mSettings.mGenerateReplies) {
            return EMPTY_REPLY_LIST;
@@ -146,7 +164,7 @@ public class SmartActionsHelper {
                .collect(Collectors.toCollection(ArrayList::new));

        String resultId = conversationActionsResult.getId();
        if (resultId != null && !replies.isEmpty()) {
        if (resultId != null) {
            mNotificationKeyToResultIdCache.put(entry.getSbn().getKey(), resultId);
        }
        return replies;
@@ -385,4 +403,15 @@ public class SmartActionsHelper {
        }
        return actions;
    }

    static class SmartSuggestions {
        public final ArrayList<CharSequence> replies;
        public final ArrayList<Notification.Action> actions;

        SmartSuggestions(
                ArrayList<CharSequence> replies, ArrayList<Notification.Action> actions) {
            this.replies = replies;
            this.actions = actions;
        }
    }
}