fix: prevent extension freezes and stale builds

This commit is contained in:
SethBurkart123
2026-08-19 18:30:30 +10:00
parent 653b1d23c2
commit eaf89d3f12
3 changed files with 5 additions and 16 deletions
+2 -15
View File
@@ -858,26 +858,13 @@ const messageFoldersPlugin = {
if (!messageList || messageList === observedMessageList) return; if (!messageList || messageList === observedMessageList) return;
messageListObserver?.disconnect(); messageListObserver?.disconnect();
observedMessageList = messageList; observedMessageList = messageList;
messageListObserver = new MutationObserver((mutations) => { messageListObserver = new MutationObserver(() => {
const messageRowsChanged = mutations.some((mutation) =>
mutation.type === "childList"
? mutation.target === messageList
: mutation.target instanceof Element &&
mutation.target.parentElement === messageList &&
mutation.target.matches("li[data-message]"),
);
if (!messageRowsChanged) return;
applyBadges(); applyBadges();
applyFolderFilter(); applyFolderFilter();
attachDragListeners(); attachDragListeners();
attachContextMenuListeners(); attachContextMenuListeners();
}); });
messageListObserver.observe(messageList, { messageListObserver.observe(messageList, { childList: true });
childList: true,
subtree: true,
attributes: true,
attributeFilter: ["class", "data-message"],
});
}; };
const attachContextMenuListeners = () => { const attachContextMenuListeners = () => {
@@ -56,6 +56,7 @@ function menuFingerprint(menu: HTMLElement): string {
function syncFromMenu(force = false) { function syncFromMenu(force = false) {
if (!menuEl) return; if (!menuEl) return;
getNativeMenuList(menuEl)?.setAttribute("aria-hidden", "true");
const next = menuFingerprint(menuEl); const next = menuFingerprint(menuEl);
if (!force && next === lastMenuFingerprint) return; if (!force && next === lastMenuFingerprint) return;
lastMenuFingerprint = next; lastMenuFingerprint = next;
@@ -368,6 +369,7 @@ export function unmountCustomSidebar() {
document.getElementById(ROOT_ID)?.remove(); document.getElementById(ROOT_ID)?.remove();
if (menuEl) { if (menuEl) {
getNativeMenuList(menuEl)?.removeAttribute("aria-hidden");
menuEl.classList.remove(MENU_CLASS, "bsplus-sidebar-edit-mode"); menuEl.classList.remove(MENU_CLASS, "bsplus-sidebar-edit-mode");
clearSidebarAppearance(menuEl); clearSidebarAppearance(menuEl);
} }
+1 -1
View File
@@ -138,7 +138,7 @@ export default defineConfig(({ command, mode: viteMode }) => {
}, },
build: { build: {
outDir: resolve(__dirname, "dist", mode), outDir: resolve(__dirname, "dist", mode),
emptyOutDir: false, emptyOutDir: true,
minify: true, minify: true,
//sourcemap: sourcemap, //sourcemap: sourcemap,
chunkSizeWarningLimit: 4000, chunkSizeWarningLimit: 4000,