Skip to content

Commit 834f5fd

Browse files
committed
Fix duplicate items in bulk interaction context menu
1 parent b6f01e1 commit 834f5fd

File tree

8 files changed

+28
-14
lines changed

8 files changed

+28
-14
lines changed

ts/WoltLabSuite/Core/Component/GridView.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { getRows } from "../Api/Gridviews/GetRows";
1212
import { getBulkContextMenuOptions } from "../Api/Interactions/GetBulkContextMenuOptions";
1313
import DomChangeListener from "../Dom/Change/Listener";
1414
import DomUtil from "../Dom/Util";
15+
import { promiseMutex } from "../Helper/PromiseMutex";
1516
import { wheneverFirstSeen } from "../Helper/Selector";
1617
import UiDropdownSimple from "../Ui/Dropdown/Simple";
1718
import { State, StateChangeCause } from "./GridView/State";
@@ -117,9 +118,10 @@ export class GridView {
117118
state.addEventListener("grid-view:change", (event) => {
118119
void this.#loadRows(event.detail.source);
119120
});
120-
state.addEventListener("grid-view:get-bulk-interactions", (event) => {
121-
void this.#loadBulkInteractions(event.detail.objectIds);
122-
});
121+
state.addEventListener(
122+
"grid-view:get-bulk-interactions",
123+
promiseMutex((event) => this.#loadBulkInteractions(event.detail.objectIds)),
124+
);
123125

124126
return state;
125127
}

ts/WoltLabSuite/Core/Component/GridView/Selection.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,10 @@ export class Selection extends EventTarget {
247247
this.#bulkInteractionsPlaceholder.remove();
248248
}
249249

250+
while (lastDivider.previousElementSibling !== null) {
251+
lastDivider.previousElementSibling.remove();
252+
}
253+
250254
menu.prepend(fragment);
251255

252256
this.#initBulkInteractions();

ts/WoltLabSuite/Core/Component/ListView.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { wheneverFirstSeen } from "../Helper/Selector";
1616
import UiDropdownSimple from "../Ui/Dropdown/Simple";
1717
import { getItem } from "../Api/ListViews/GetItem";
1818
import { getBulkContextMenuOptions } from "../Api/Interactions/GetBulkContextMenuOptions";
19+
import { promiseMutex } from "../Helper/PromiseMutex";
1920

2021
export class ListView {
2122
readonly #viewClassName: string;
@@ -120,9 +121,10 @@ export class ListView {
120121
state.addEventListener("list-view:change", (event) => {
121122
void this.#loadItems(event.detail.source);
122123
});
123-
state.addEventListener("list-view:get-bulk-interactions", (event) => {
124-
void this.#loadBulkInteractions(event.detail.objectIds);
125-
});
124+
state.addEventListener(
125+
"list-view:get-bulk-interactions",
126+
promiseMutex((event) => this.#loadBulkInteractions(event.detail.objectIds)),
127+
);
126128

127129
return state;
128130
}

ts/WoltLabSuite/Core/Component/ListView/Selection.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,10 @@ export class Selection extends EventTarget {
247247
this.#bulkInteractionsPlaceholder.remove();
248248
}
249249

250+
while (lastDivider.previousElementSibling !== null) {
251+
lastDivider.previousElementSibling.remove();
252+
}
253+
250254
menu.prepend(fragment);
251255

252256
this.#initBulkInteractions();

wcfsetup/install/files/js/WoltLabSuite/Core/Component/GridView.js

Lines changed: 2 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wcfsetup/install/files/js/WoltLabSuite/Core/Component/GridView/Selection.js

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wcfsetup/install/files/js/WoltLabSuite/Core/Component/ListView.js

Lines changed: 2 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wcfsetup/install/files/js/WoltLabSuite/Core/Component/ListView/Selection.js

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)