fix: address code review findings

- Fix accent color CSS variable: write to --or-accent-override
- Fix actionDelete double-fire: toolbar button first, key fallback
- Fix localStorage collision: use chrome.storage.local for sidebar
- Fix updateSettings preserving keyboard selection state
- Add document.body guard for count badge creation
This commit is contained in:
Joel Brock
2026-04-23 09:07:15 -07:00
parent 311aa0e771
commit 3eec701eb4
3 changed files with 38 additions and 27 deletions

View File

@@ -32,8 +32,8 @@ window.OutlookRelook.Behavior = (function () {
function setupRememberSidebar() { function setupRememberSidebar() {
if (!currentSettings.rememberSidebarState) return; if (!currentSettings.rememberSidebarState) return;
var savedState = localStorage.getItem('or-sidebar-collapsed'); chrome.storage.local.get({ sidebarCollapsed: false }, function (result) {
if (savedState === 'true') { if (result.sidebarCollapsed) {
var timer = setTimeout(function () { var timer = setTimeout(function () {
var pane = OR.resolveSelector('folder-pane'); var pane = OR.resolveSelector('folder-pane');
for (var i = 0; i < pane.length; i++) { for (var i = 0; i < pane.length; i++) {
@@ -45,13 +45,14 @@ window.OutlookRelook.Behavior = (function () {
}, 2000); }, 2000);
cleanupFns.push(function () { clearTimeout(timer); }); cleanupFns.push(function () { clearTimeout(timer); });
} }
});
// Watch for sidebar toggle changes // Watch for sidebar toggle changes
var sidebarObserver = new MutationObserver(function () { var sidebarObserver = new MutationObserver(function () {
var pane = OR.resolveSelector('folder-pane'); var pane = OR.resolveSelector('folder-pane');
if (pane.length > 0) { if (pane.length > 0) {
var isVisible = pane[0].offsetWidth > 50; var isVisible = pane[0].offsetWidth > 50;
localStorage.setItem('or-sidebar-collapsed', String(!isVisible)); chrome.storage.local.set({ sidebarCollapsed: !isVisible });
} }
}); });

View File

@@ -62,7 +62,7 @@
// Accent color // Accent color
if (settings.accentColor) { if (settings.accentColor) {
document.documentElement.style.setProperty('--or-accent', settings.accentColor); document.documentElement.style.setProperty('--or-accent-override', settings.accentColor);
} }
console.log('[Outlook Relook] Settings applied to DOM'); console.log('[Outlook Relook] Settings applied to DOM');

View File

@@ -90,6 +90,7 @@ window.OutlookRelook.Keyboard = (function () {
// --- Selection count badge --- // --- Selection count badge ---
function createCountBadge() { function createCountBadge() {
if (!document.body) return null;
var badge = document.createElement('div'); var badge = document.createElement('div');
badge.className = 'or-kb-selection-count'; badge.className = 'or-kb-selection-count';
badge.style.opacity = '0'; badge.style.opacity = '0';
@@ -99,6 +100,7 @@ window.OutlookRelook.Keyboard = (function () {
function updateCountBadge() { function updateCountBadge() {
if (!countBadge) countBadge = createCountBadge(); if (!countBadge) countBadge = createCountBadge();
if (!countBadge) return;
var count = selectedSet.size; var count = selectedSet.size;
if (count === 0) { if (count === 0) {
countBadge.style.opacity = '0'; countBadge.style.opacity = '0';
@@ -141,7 +143,14 @@ window.OutlookRelook.Keyboard = (function () {
function actionDelete(targets) { function actionDelete(targets) {
performAction(targets, function () { performAction(targets, function () {
// Try keyboard shortcut first (Delete key) // Find and click the delete button in the toolbar
var deleteBtn = document.querySelector(
'[aria-label*="Delete" i][role="button"], [aria-label*="delete" i][role="menuitem"]'
);
if (deleteBtn) {
deleteBtn.click();
} else {
// Fallback: try dispatching Delete key
var deleteEvent = new KeyboardEvent('keydown', { var deleteEvent = new KeyboardEvent('keydown', {
key: 'Delete', key: 'Delete',
code: 'Delete', code: 'Delete',
@@ -149,12 +158,7 @@ window.OutlookRelook.Keyboard = (function () {
cancelable: true cancelable: true
}); });
document.activeElement.dispatchEvent(deleteEvent); document.activeElement.dispatchEvent(deleteEvent);
}
// Fallback: find and click the delete button in the toolbar
var deleteBtn = document.querySelector(
'[aria-label*="Delete" i][role="button"], [aria-label*="delete" i][role="menuitem"]'
);
if (deleteBtn) deleteBtn.click();
}); });
} }
@@ -436,10 +440,16 @@ window.OutlookRelook.Keyboard = (function () {
} }
function updateSettings(settings) { function updateSettings(settings) {
stop(); var wasEnabled = currentSettings.keyboardMultiSelect;
var isEnabled = settings.keyboardMultiSelect;
currentSettings = settings; currentSettings = settings;
// Only tear down and restart if the keyboard setting itself changed
if (wasEnabled !== isEnabled) {
stop();
start(settings); start(settings);
} }
}
function stop() { function stop() {
for (var i = 0; i < cleanupFns.length; i++) { for (var i = 0; i < cleanupFns.length; i++) {