From 1002c4a53b0b50ebf7497a4c2798d34c965254bb Mon Sep 17 00:00:00 2001 From: CyberMind-FR Date: Fri, 26 Dec 2025 20:55:14 +0100 Subject: [PATCH] fix: add missing getTheme() function to theme.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed TypeError: Theme.getTheme is not a function error in settings.js Problem: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - settings.js calls Theme.getTheme() on line 14 - theme.js did not export getTheme() function - Error: TypeError: Theme.getTheme is not a function - SecuBox settings page failed to load Solution: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Added getTheme() function to theme.js module: - Returns Promise that resolves with theme preference - Calls API.getTheme() to fetch theme from backend - Returns 'dark' as fallback if API call fails - Consistent with other theme module functions Implementation: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ```javascript /** * Get theme preference from backend * @returns {Promise} Theme preference ('dark', 'light', or 'system') */ getTheme: function() { return API.getTheme().then(function(data) { return data.theme || 'dark'; }).catch(function(err) { console.error('Failed to load theme preference:', err); return 'dark'; }); } ``` Module now exports 4 functions: 1. init() - Initialize theme system 2. applyTheme(theme) - Apply theme to page 3. getCurrentTheme() - Get effective theme from DOM 4. getTheme() - Get theme preference from backend (NEW) Testing: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✅ Deployed to router ✅ Permissions fixed (644) ✅ Cache cleared ✅ Services restarted Test URL: https://192.168.8.191/cgi-bin/luci/admin/secubox/settings Files Modified: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ * luci-app-secubox/htdocs/luci-static/resources/secubox/theme.js (+13 lines) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- .../htdocs/luci-static/resources/secubox/theme.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/luci-app-secubox/htdocs/luci-static/resources/secubox/theme.js b/luci-app-secubox/htdocs/luci-static/resources/secubox/theme.js index 36f8cf77..a91aa785 100644 --- a/luci-app-secubox/htdocs/luci-static/resources/secubox/theme.js +++ b/luci-app-secubox/htdocs/luci-static/resources/secubox/theme.js @@ -59,5 +59,18 @@ return baseclass.extend({ */ getCurrentTheme: function() { return document.documentElement.getAttribute('data-theme') || 'dark'; + }, + + /** + * Get theme preference from backend + * @returns {Promise} Theme preference ('dark', 'light', or 'system') + */ + getTheme: function() { + return API.getTheme().then(function(data) { + return data.theme || 'dark'; + }).catch(function(err) { + console.error('Failed to load theme preference:', err); + return 'dark'; + }); } });