**Apache Airflow version**:
2.2.0.dev0 (possible older versions too)

**OS**:
Linux Debian 11

(BTW Here we have a typo in comment inside bug report template in `.github/ISSUE_TEMPLATE/bug_report.md`: `cat /etc/oss-release` <- double 's'.)

**Apache Airflow Provider versions**: -

**Deployment**:
Docker-compose 1.25.0

**What happened**:
The issue is related to Airflow UI and it shows duplicated notifications when removing all the tags from the input after filtering DAGs.

**What you expected to happen**:
The notifications should not be duplicated.

**How to reproduce it**:
In the main view, above the list of the DAGs (just below the top bar menu), there is a place where notifications appear. Suppose that there are 2 notifications (no matter which). Now try to search DAGs by tag using 'Filter DAGs by tag' input and use a valid tag. After the filtering is done, clear the input either by clicking on 'x' next to the tag or on the 'x' near the right side of the input. Notice that the notifications are duplicated and now you have 4 instead of 2 (each one is displayed twice). The input id is `s2id_autogen1`.
This bug happens only if all the tags are removed from the filtering input. If you remove the tag while there is still another one in the input, the bug will not appear. Also, it is not present while searching DAGs by name using the input 'Search DAGs'.

After search, before removing tags from input:
![notif](https://user-images.githubusercontent.com/7412964/130072185-ca2b3bd4-023d-4574-9d28-71061bf55db6.png)
Duplicated notifications after removing tag from input:
![notif_dup](https://user-images.githubusercontent.com/7412964/130072195-1d1e0eec-c10a-42d8-b75c-1904e05d44fc.png)

**Are you willing to submit a PR?**
I can try.
airflow/www/views.py
"""Decorator for actions which verifies you have DAG edit access on the given tis/drs."""
    @wraps(action_func)
    def check_dag_edit_acl_for_actions(
        self,
        items: Optional[Union[List[TaskInstance], List[DagRun], TaskInstance, DagRun]],
        *args,
        **kwargs,
    ) -> None:
        if items is None:
            dag_ids: Set[str] = set()
        elif isinstance(items, list):
            dag_ids = {item.dag_id for item in items if item is not None}
        elif isinstance(items, TaskInstance) or isinstance(items, DagRun):
            dag_ids = {items.dag_id}
        else:
            raise ValueError(
                "Was expecting the first argument of the action to be of type "
                "Optional[Union[List[TaskInstance], List[DagRun], TaskInstance, DagRun]]."
                f"Was of type: {type(items)}"
            )
        for dag_id in dag_ids:
            if not current_app.appbuilder.sm.can_edit_dag(dag_id):
                flash(f"Access denied for dag_id {dag_id}", "danger")
                logging.warning("User %s tried to modify %s without having access.", g.user.username, dag_id)
                return redirect(self.get_default_url())
        return action_func(self, items, *args, **kwargs)
    return check_dag_edit_acl_for_actions
class SlaMissModelView(AirflowModelView):
    """View to show SlaMiss table"""