diff --git a/addons/board/static/src/add_to_board/add_to_board.js b/addons/board/static/src/add_to_board/add_to_board.js
index fb35cb5f8fc..968e4a01343 100644
--- a/addons/board/static/src/add_to_board/add_to_board.js
+++ b/addons/board/static/src/add_to_board/add_to_board.js
@@ -39,7 +39,11 @@ export class AddToBoard extends Component {
const { comparison, context, groupBys, orderBy } =
this.env.searchModel.getPreFavoriteValues();
const contextToSave = {
- ...globalContext,
+ ...Object.fromEntries(
+ Object.entries(globalContext).filter(
+ (entry) => !entry[0].startsWith("search_default_")
+ )
+ ),
...context,
comparison,
orderedBy: orderBy,
diff --git a/addons/board/static/tests/add_to_dashboard_tests.js b/addons/board/static/tests/add_to_dashboard_tests.js
index f0582a2e92a..95dbcdc4827 100644
--- a/addons/board/static/tests/add_to_dashboard_tests.js
+++ b/addons/board/static/tests/add_to_dashboard_tests.js
@@ -3,6 +3,7 @@
import { addToBoardItem } from "@board/add_to_board/add_to_board";
import {
click,
+ editInput,
getFixture,
patchWithCleanup,
mouseEnter,
@@ -10,7 +11,9 @@ import {
} from "@web/../tests/helpers/utils";
import {
applyGroup,
+ openAddCustomFilterDialog,
removeFacet,
+ switchView,
toggleAddCustomGroup,
toggleSearchBarMenu,
toggleMenuItem,
@@ -438,4 +441,70 @@ QUnit.module("Board", (hooks) => {
await testUtils.fields.editInput(input, "Pipeline");
await triggerEvent(input, null, "keydown", { key: "Enter" });
});
+
+ QUnit.test("Add a view to dashboard doesn't save default filters", async function (assert) {
+ assert.expect(2);
+
+ serverData.views = {
+ "partner,false,pivot": '',
+ "partner,false,list": '
',
+ "partner,false,search": `
+
+
+ `,
+ };
+
+ registry.category("services").add("user", makeFakeUserService());
+ patchWithCleanup(browser, { setTimeout: (fn) => fn() }); // makes mouseEnter work
+ patchWithCleanup(odoo, { debug: true });
+
+ const mockRPC = (route, args) => {
+ if (route === "/board/add_to_dashboard") {
+ assert.deepEqual(args.domain, [["foo", "=", "yop"]]);
+ assert.deepEqual(args.context_to_save, {
+ pivot_measures: ["__count"],
+ pivot_column_groupby: [],
+ pivot_row_groupby: [],
+ orderedBy: [],
+ group_by: [],
+ dashboard_merge_domains_contexts: false,
+ });
+ return Promise.resolve(true);
+ }
+ if (route === "/web/domain/validate") {
+ return true;
+ }
+ };
+
+ const webClient = await createWebClient({ serverData, mockRPC });
+
+ await doAction(webClient, {
+ id: 1,
+ res_model: "partner",
+ type: "ir.actions.act_window",
+ views: [
+ [false, "list"],
+ [false, "pivot"],
+ ],
+ context: { search_default_filter: 1 },
+ });
+
+ await switchView(target, "pivot");
+
+ // Remove default filter ['foo', '!=', 'yop']
+ await removeFacet(target);
+
+ // Add a filter ['foo', '=', 'yop']
+ await toggleSearchBarMenu(target);
+ await openAddCustomFilterDialog(target);
+ await editInput(target, ".o_domain_debug_input", `[("foo", "=", "yop")]`);
+ await click(target.querySelector(".modal footer button"));
+
+ // Add to dashboard
+ await toggleSearchBarMenu(target);
+ await mouseEnter(target.querySelector(".o_add_to_board .dropdown-toggle"));
+ const input = target.querySelector(".o_add_to_board .dropdown-menu input");
+ await testUtils.fields.editInput(input, "Pipeline");
+ await triggerEvent(input, null, "keydown", { key: "Enter" });
+ });
});