From 78ccf3dad294cdfec7bdbf93d5e78f4e68bf306d Mon Sep 17 00:00:00 2001 From: binduhasini11 Date: Sun, 24 May 2026 12:15:12 +0530 Subject: [PATCH] fix: persist selected view after refresh --- js/app.js | 68 ++++++++++++++++++++++++++++++----------------- package-lock.json | 13 +++++++++ 2 files changed, 57 insertions(+), 24 deletions(-) diff --git a/js/app.js b/js/app.js index 787d08a..23fbcab 100644 --- a/js/app.js +++ b/js/app.js @@ -76,7 +76,10 @@ function generateSummary(tasks, subjects) { let currentMonthDate = new Date(); let selectedDate = null; -let currentView = 'calendar'; // 'calendar', 'all-tasks', 'archived' +let currentView = ['calendar', 'all-tasks', 'archived', 'focus'] + .includes(localStorage.getItem('currentView')) + ? localStorage.getItem('currentView') + : 'calendar';// 'calendar', 'all-tasks', 'archived' const tasksSection = document.getElementById('tasks-section'); const focusSection = document.getElementById('focus-section'); @@ -1038,49 +1041,66 @@ document.addEventListener('DOMContentLoaded', () => { document.querySelectorAll('.sidebar .nav-item').forEach(el => el.classList.remove('active')); document.getElementById(id).classList.add('active'); } + function applyView(view) { + currentView = view; - calendarBtn.addEventListener('click', () => { - currentView = 'calendar'; + document.querySelector('.cal-section').classList.add('hidden'); + document.getElementById('tasks-section').classList.add('hidden'); + document.getElementById('focus-section').classList.add('hidden'); + + if (view === 'calendar') { document.querySelector('.cal-section').classList.remove('hidden'); document.getElementById('tasks-section').classList.remove('hidden'); - document.getElementById('focus-section').classList.add('hidden'); updateSidebarActive('calendar-btn'); renderTasks(); - }); + } - allTasksBtn.addEventListener('click', () => { - currentView = 'all-tasks'; - document.querySelector('.cal-section').classList.add('hidden'); + else if (view === 'all-tasks') { document.getElementById('tasks-section').classList.remove('hidden'); - document.getElementById('focus-section').classList.add('hidden'); updateSidebarActive('all-tasks-btn'); renderTasks(); - }); + } - archivedTasksBtn.addEventListener('click', () => { - currentView = 'archived'; - document.querySelector('.cal-section').classList.add('hidden'); + else if (view === 'archived') { document.getElementById('tasks-section').classList.remove('hidden'); - document.getElementById('focus-section').classList.add('hidden'); updateSidebarActive('archived-tasks-btn'); renderTasks(); - }); + } - if(focusModeBtn) { - focusModeBtn.addEventListener('click', () => { - currentView = 'focus'; - document.querySelector('.cal-section').classList.add('hidden'); - document.getElementById('tasks-section').classList.add('hidden'); - document.getElementById('focus-section').classList.remove('hidden'); - updateSidebarActive('focus-mode-btn'); - renderFocusTasks(); - }); + else if (view === 'focus') { + document.getElementById('focus-section').classList.remove('hidden'); + updateSidebarActive('focus-mode-btn'); + renderFocusTasks(); + } +} + +calendarBtn.addEventListener('click', () => { + localStorage.setItem('currentView', 'calendar'); + applyView('calendar'); +}); + +allTasksBtn.addEventListener('click', () => { + localStorage.setItem('currentView', 'all-tasks'); + applyView('all-tasks'); +}); + +archivedTasksBtn.addEventListener('click', () => { + localStorage.setItem('currentView', 'archived'); + applyView('archived'); +}); + +if(focusModeBtn) { + focusModeBtn.addEventListener('click', () => { + localStorage.setItem('currentView', 'focus'); + applyView('focus'); + }); } document.getElementById('cal-prev').addEventListener('click', () => { currentMonthDate.setMonth(currentMonthDate.getMonth() - 1); renderCalendar(); }); + applyView(currentView); document.getElementById('cal-next').addEventListener('click', () => { currentMonthDate.setMonth(currentMonthDate.getMonth() + 1); diff --git a/package-lock.json b/package-lock.json index 329712e..5652882 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1311,6 +1311,19 @@ "url": "https://opencollective.com/express" } }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/prebuild-install": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",