Spaces:
Running
Running
| /** | |
| * Redact Mode Utility | |
| * Replaces sensitive account data with anonymous labels for screenshots. | |
| */ | |
| window.Redact = { | |
| email(email) { | |
| if (!Alpine.store('settings').redactMode) return email; | |
| if (!email) return email; | |
| const accounts = Alpine.store('data')?.accounts || []; | |
| // Match full email or username-only (split('@')[0]) form | |
| const idx = accounts.findIndex(a => a.email === email || (a.email && a.email.split('@')[0] === email)); | |
| return idx >= 0 ? `Account ${idx + 1}` : 'Account'; | |
| }, | |
| logMessage(message) { | |
| if (!Alpine.store('settings').redactMode) return message; | |
| const accounts = Alpine.store('data')?.accounts || []; | |
| let result = message; | |
| accounts.forEach((acc, idx) => { | |
| if (!acc.email) return; | |
| const escaped = acc.email.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); | |
| result = result.replace(new RegExp(escaped, 'g'), `Account ${idx + 1}`); | |
| const user = acc.email.split('@')[0]; | |
| if (user) { | |
| const escapedUser = user.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); | |
| result = result.replace(new RegExp(`\\b${escapedUser}\\b`, 'g'), `Account ${idx + 1}`); | |
| } | |
| }); | |
| return result; | |
| } | |
| }; | |