feat(secubox): implement conditional debug logging

Added debugMode flag that checks URL hash or localStorage setting.
Debug logging only outputs when enabled via:
- URL: /#/admin/secubox/apps#debug
- Console: localStorage.setItem('secubox_debug', 'true')

All debug logs prefixed with [AppStore] or [Modules] for clarity.
Warnings and errors remain in production for critical issues.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
CyberMind-FR 2025-12-31 11:59:35 +01:00
parent 60ff5ad3f1
commit e2c2f64167
2 changed files with 34 additions and 13 deletions

View File

@ -36,6 +36,13 @@ return view.extend({
categoriesData: {},
currentFilter: 'all',
filterLayer: null,
debugMode: (window.location.hash.indexOf('debug') !== -1) || (localStorage.getItem('secubox_debug') === 'true'),
debug: function() {
if (this.debugMode && console && console.log) {
console.log.apply(console, ['[AppStore]'].concat(Array.prototype.slice.call(arguments)));
}
},
load: function() {
return this.refreshData();
@ -44,20 +51,20 @@ return view.extend({
refreshData: function() {
var self = this;
return API.getAppstoreApps().then(function(data) {
console.log('getAppstoreApps raw response:', data);
self.debug('getAppstoreApps raw response:', data);
if (!data) {
console.warn('getAppstoreApps returned empty data');
console.warn('[AppStore] getAppstoreApps returned empty data');
return { apps: [], categories: {} };
}
console.log('Apps from API:', data.apps);
console.log('Categories from API:', data.categories);
self.debug('Apps from API:', data.apps);
self.debug('Categories from API:', data.categories);
self.appsData = data.apps || [];
self.categoriesData = data.categories || {};
console.log('Stored appsData:', self.appsData);
console.log('Stored categoriesData:', self.categoriesData);
self.debug('Stored appsData:', self.appsData);
self.debug('Stored categoriesData:', self.categoriesData);
return data;
}).catch(function(err) {
console.error('Error loading appstore apps:', err);
console.error('[AppStore] Error loading appstore apps:', err);
ui.addNotification(null, E('p', _('Failed to load app store: ') + err.message), 'error');
return { apps: [], categories: {} };
});
@ -69,10 +76,10 @@ return view.extend({
var categories = (data && data.categories) || this.categoriesData || {};
// Debug logging
console.log('Apps render - data:', data);
console.log('Apps render - apps array:', apps);
console.log('Apps render - apps.length:', apps.length);
console.log('Apps render - categories:', categories);
self.debug('Apps render - data:', data);
self.debug('Apps render - apps array:', apps);
self.debug('Apps render - apps.length:', apps.length);
self.debug('Apps render - categories:', categories);
var defaultFilter = this.currentFilter || 'all';
var container = E('div', {

View File

@ -35,6 +35,13 @@ return view.extend({
modulesData: [],
currentFilter: 'all',
filterLayer: null,
debugMode: (window.location.hash.indexOf('debug') !== -1) || (localStorage.getItem('secubox_debug') === 'true'),
debug: function() {
if (this.debugMode && console && console.log) {
console.log.apply(console, ['[Modules]'].concat(Array.prototype.slice.call(arguments)));
}
},
load: function() {
return this.refreshData();
@ -43,14 +50,17 @@ return view.extend({
refreshData: function() {
var self = this;
return API.getModules().then(function(data) {
self.debug('getModules raw response:', data);
if (!data) {
console.warn('getModules returned empty data');
console.warn('[Modules] getModules returned empty data');
return { modules: [] };
}
self.debug('Modules from API:', data.modules);
self.modulesData = data.modules || [];
self.debug('Stored modulesData:', self.modulesData);
return data;
}).catch(function(err) {
console.error('Error loading modules:', err);
console.error('[Modules] Error loading modules:', err);
ui.addNotification(null, E('p', _('Failed to load modules: ') + err.message), 'error');
return { modules: [] };
});
@ -60,6 +70,10 @@ return view.extend({
var self = this;
var modules = (data && data.modules) || this.modulesData || [];
self.debug('Modules render - data:', data);
self.debug('Modules render - modules array:', modules);
self.debug('Modules render - modules.length:', modules.length);
var defaultFilter = this.currentFilter || 'all';
var container = E('div', {
'class': 'secubox-modules-page',