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:
parent
60ff5ad3f1
commit
e2c2f64167
@ -36,6 +36,13 @@ return view.extend({
|
|||||||
categoriesData: {},
|
categoriesData: {},
|
||||||
currentFilter: 'all',
|
currentFilter: 'all',
|
||||||
filterLayer: null,
|
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() {
|
load: function() {
|
||||||
return this.refreshData();
|
return this.refreshData();
|
||||||
@ -44,20 +51,20 @@ return view.extend({
|
|||||||
refreshData: function() {
|
refreshData: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
return API.getAppstoreApps().then(function(data) {
|
return API.getAppstoreApps().then(function(data) {
|
||||||
console.log('getAppstoreApps raw response:', data);
|
self.debug('getAppstoreApps raw response:', data);
|
||||||
if (!data) {
|
if (!data) {
|
||||||
console.warn('getAppstoreApps returned empty data');
|
console.warn('[AppStore] getAppstoreApps returned empty data');
|
||||||
return { apps: [], categories: {} };
|
return { apps: [], categories: {} };
|
||||||
}
|
}
|
||||||
console.log('Apps from API:', data.apps);
|
self.debug('Apps from API:', data.apps);
|
||||||
console.log('Categories from API:', data.categories);
|
self.debug('Categories from API:', data.categories);
|
||||||
self.appsData = data.apps || [];
|
self.appsData = data.apps || [];
|
||||||
self.categoriesData = data.categories || {};
|
self.categoriesData = data.categories || {};
|
||||||
console.log('Stored appsData:', self.appsData);
|
self.debug('Stored appsData:', self.appsData);
|
||||||
console.log('Stored categoriesData:', self.categoriesData);
|
self.debug('Stored categoriesData:', self.categoriesData);
|
||||||
return data;
|
return data;
|
||||||
}).catch(function(err) {
|
}).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');
|
ui.addNotification(null, E('p', _('Failed to load app store: ') + err.message), 'error');
|
||||||
return { apps: [], categories: {} };
|
return { apps: [], categories: {} };
|
||||||
});
|
});
|
||||||
@ -69,10 +76,10 @@ return view.extend({
|
|||||||
var categories = (data && data.categories) || this.categoriesData || {};
|
var categories = (data && data.categories) || this.categoriesData || {};
|
||||||
|
|
||||||
// Debug logging
|
// Debug logging
|
||||||
console.log('Apps render - data:', data);
|
self.debug('Apps render - data:', data);
|
||||||
console.log('Apps render - apps array:', apps);
|
self.debug('Apps render - apps array:', apps);
|
||||||
console.log('Apps render - apps.length:', apps.length);
|
self.debug('Apps render - apps.length:', apps.length);
|
||||||
console.log('Apps render - categories:', categories);
|
self.debug('Apps render - categories:', categories);
|
||||||
|
|
||||||
var defaultFilter = this.currentFilter || 'all';
|
var defaultFilter = this.currentFilter || 'all';
|
||||||
var container = E('div', {
|
var container = E('div', {
|
||||||
|
|||||||
@ -35,6 +35,13 @@ return view.extend({
|
|||||||
modulesData: [],
|
modulesData: [],
|
||||||
currentFilter: 'all',
|
currentFilter: 'all',
|
||||||
filterLayer: null,
|
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() {
|
load: function() {
|
||||||
return this.refreshData();
|
return this.refreshData();
|
||||||
@ -43,14 +50,17 @@ return view.extend({
|
|||||||
refreshData: function() {
|
refreshData: function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
return API.getModules().then(function(data) {
|
return API.getModules().then(function(data) {
|
||||||
|
self.debug('getModules raw response:', data);
|
||||||
if (!data) {
|
if (!data) {
|
||||||
console.warn('getModules returned empty data');
|
console.warn('[Modules] getModules returned empty data');
|
||||||
return { modules: [] };
|
return { modules: [] };
|
||||||
}
|
}
|
||||||
|
self.debug('Modules from API:', data.modules);
|
||||||
self.modulesData = data.modules || [];
|
self.modulesData = data.modules || [];
|
||||||
|
self.debug('Stored modulesData:', self.modulesData);
|
||||||
return data;
|
return data;
|
||||||
}).catch(function(err) {
|
}).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');
|
ui.addNotification(null, E('p', _('Failed to load modules: ') + err.message), 'error');
|
||||||
return { modules: [] };
|
return { modules: [] };
|
||||||
});
|
});
|
||||||
@ -60,6 +70,10 @@ return view.extend({
|
|||||||
var self = this;
|
var self = this;
|
||||||
var modules = (data && data.modules) || this.modulesData || [];
|
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 defaultFilter = this.currentFilter || 'all';
|
||||||
var container = E('div', {
|
var container = E('div', {
|
||||||
'class': 'secubox-modules-page',
|
'class': 'secubox-modules-page',
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user