Added immediate DOMContentLoaded handler to verify HTML is loading: Debug Logging: - Added console.log when DOM loads - Added body element check and background color set - Helps diagnose if HTML is loading at all Fixes: - Black screen debugging: can now see if HTML loads - JavaScript execution: verifies scripts are running - WebView loading: confirms WebView is serving HTML Result: Can now diagnose if issue is HTML loading or JavaScript execution
613 lines
30 KiB
HTML
613 lines
30 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
|
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
|
|
<meta http-equiv="Pragma" content="no-cache">
|
|
<meta http-equiv="Expires" content="0">
|
|
<title>DailyNotification Plugin Test</title>
|
|
<style>
|
|
body {
|
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
margin: 0;
|
|
padding: 20px;
|
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
min-height: 100vh;
|
|
color: white;
|
|
}
|
|
.container {
|
|
max-width: 600px;
|
|
margin: 0 auto;
|
|
text-align: center;
|
|
}
|
|
h1 {
|
|
margin-bottom: 30px;
|
|
font-size: 2.5em;
|
|
}
|
|
.button {
|
|
background: rgba(255, 255, 255, 0.2);
|
|
border: 2px solid rgba(255, 255, 255, 0.3);
|
|
color: white;
|
|
padding: 15px 30px;
|
|
margin: 10px;
|
|
border-radius: 25px;
|
|
cursor: pointer;
|
|
font-size: 16px;
|
|
transition: all 0.3s ease;
|
|
}
|
|
.button:hover {
|
|
background: rgba(255, 255, 255, 0.3);
|
|
transform: translateY(-2px);
|
|
}
|
|
.status {
|
|
margin-top: 30px;
|
|
padding: 20px;
|
|
background: rgba(255, 255, 255, 0.1);
|
|
border-radius: 10px;
|
|
font-family: monospace;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<h1>🔔 DailyNotification Plugin Test</h1>
|
|
<p>Test the DailyNotification plugin functionality</p>
|
|
<p style="font-size: 12px; opacity: 0.8;">Build: 2025-10-14 05:00:00 UTC</p>
|
|
|
|
<button class="button" onclick="testPlugin()">Test Plugin</button>
|
|
<button class="button" onclick="configurePlugin()">Configure Plugin</button>
|
|
<button class="button" onclick="checkStatus()">Check Status</button>
|
|
|
|
<h2>🔔 Notification Tests</h2>
|
|
<button class="button" onclick="testNotification()">Test Notification</button>
|
|
<button class="button" onclick="scheduleNotification()">Schedule Notification</button>
|
|
<button class="button" onclick="showReminder()">Show Reminder</button>
|
|
|
|
<h2>🔐 Permission Management</h2>
|
|
<button class="button" onclick="checkPermissions()">Check Permissions</button>
|
|
<button class="button" onclick="requestPermissions()">Request Permissions</button>
|
|
<button class="button" onclick="openExactAlarmSettings()">Exact Alarm Settings</button>
|
|
|
|
<h2>📢 Channel Management</h2>
|
|
<button class="button" onclick="checkChannelStatus()">Check Channel Status</button>
|
|
<button class="button" onclick="openChannelSettings()">Open Channel Settings</button>
|
|
<button class="button" onclick="checkComprehensiveStatus()">Comprehensive Status</button>
|
|
|
|
<div id="status" class="status">
|
|
Ready to test...
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
console.log('Script loading...');
|
|
console.log('JavaScript is working!');
|
|
|
|
// Show immediate feedback that HTML is loading
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
console.log('DOM Content Loaded!');
|
|
const body = document.body;
|
|
if (body) {
|
|
body.style.backgroundColor = '#667eea';
|
|
console.log('Body element found, background color set');
|
|
} else {
|
|
console.error('Body element not found!');
|
|
}
|
|
});
|
|
|
|
// DailyNotification will be set after Capacitor loads (see initialization script at end)
|
|
|
|
// Define functions immediately and attach to window
|
|
function testPlugin() {
|
|
console.log('testPlugin called');
|
|
const status = document.getElementById('status');
|
|
status.innerHTML = 'Testing plugin...';
|
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
|
|
|
try {
|
|
if (!window.DailyNotification) {
|
|
status.innerHTML = 'DailyNotification plugin not available';
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
return;
|
|
}
|
|
// Plugin is loaded and ready
|
|
status.innerHTML = 'Plugin is loaded and ready!';
|
|
status.style.background = 'rgba(0, 255, 0, 0.3)'; // Green background
|
|
} catch (error) {
|
|
status.innerHTML = `Plugin test failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
}
|
|
}
|
|
|
|
function configurePlugin() {
|
|
console.log('configurePlugin called');
|
|
const status = document.getElementById('status');
|
|
status.innerHTML = 'Configuring plugin...';
|
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
|
|
|
try {
|
|
if (!window.DailyNotification) {
|
|
status.innerHTML = 'DailyNotification plugin not available';
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
return;
|
|
}
|
|
|
|
// Configure plugin settings
|
|
window.DailyNotification.configure({
|
|
storage: 'tiered',
|
|
ttlSeconds: 86400,
|
|
prefetchLeadMinutes: 60,
|
|
maxNotificationsPerDay: 3,
|
|
retentionDays: 7
|
|
})
|
|
.then(() => {
|
|
console.log('Plugin settings configured, now configuring native fetcher...');
|
|
// Configure native fetcher with demo credentials
|
|
// Note: DemoNativeFetcher uses hardcoded mock data, so this is optional
|
|
// but demonstrates the API. In production, this would be real credentials.
|
|
return window.DailyNotification.configureNativeFetcher({
|
|
apiBaseUrl: 'http://10.0.2.2:3000', // Android emulator → host localhost
|
|
activeDid: 'did:ethr:0xDEMO1234567890', // Demo DID
|
|
jwtSecret: 'demo-jwt-secret-for-development-testing'
|
|
});
|
|
})
|
|
.then(() => {
|
|
status.innerHTML = 'Plugin configured successfully!<br>✅ Plugin settings<br>✅ Native fetcher (optional for demo)';
|
|
status.style.background = 'rgba(0, 255, 0, 0.3)'; // Green background
|
|
})
|
|
.catch(error => {
|
|
status.innerHTML = `Configuration failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
});
|
|
} catch (error) {
|
|
status.innerHTML = `Configuration failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
}
|
|
}
|
|
|
|
function checkStatus() {
|
|
console.log('checkStatus called');
|
|
const status = document.getElementById('status');
|
|
status.innerHTML = 'Checking plugin status...';
|
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
|
|
|
try {
|
|
if (!window.DailyNotification) {
|
|
status.innerHTML = 'DailyNotification plugin not available';
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
return;
|
|
}
|
|
window.DailyNotification.getNotificationStatus()
|
|
.then(result => {
|
|
const nextTime = result.nextNotificationTime ? new Date(result.nextNotificationTime).toLocaleString() : 'None scheduled';
|
|
status.innerHTML = `Plugin Status:<br>
|
|
Enabled: ${result.isEnabled}<br>
|
|
Next Notification: ${nextTime}<br>
|
|
Pending: ${result.pending}<br>
|
|
Settings: ${JSON.stringify(result.settings)}`;
|
|
status.style.background = 'rgba(0, 255, 0, 0.3)'; // Green background
|
|
})
|
|
.catch(error => {
|
|
status.innerHTML = `Status check failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
});
|
|
} catch (error) {
|
|
status.innerHTML = `Status check failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
}
|
|
}
|
|
|
|
// Notification test functions
|
|
function testNotification() {
|
|
console.log('testNotification called');
|
|
|
|
// Quick sanity check - test plugin availability
|
|
if (window.Capacitor && window.Capacitor.isPluginAvailable) {
|
|
const isAvailable = window.Capacitor.isPluginAvailable('DailyNotification');
|
|
console.log('is plugin available?', isAvailable);
|
|
}
|
|
|
|
const status = document.getElementById('status');
|
|
status.innerHTML = 'Testing plugin connection...';
|
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
|
|
|
try {
|
|
if (!window.DailyNotification) {
|
|
status.innerHTML = 'DailyNotification plugin not available';
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
return;
|
|
}
|
|
|
|
// Test the notification method directly
|
|
console.log('Testing notification scheduling...');
|
|
const now = new Date();
|
|
const notificationTime = new Date(now.getTime() + 600000); // 10 minutes from now
|
|
const prefetchTime = new Date(now.getTime() + 300000); // 5 minutes from now
|
|
const notificationTimeString = notificationTime.getHours().toString().padStart(2, '0') + ':' +
|
|
notificationTime.getMinutes().toString().padStart(2, '0');
|
|
const prefetchTimeString = prefetchTime.getHours().toString().padStart(2, '0') + ':' +
|
|
prefetchTime.getMinutes().toString().padStart(2, '0');
|
|
|
|
window.DailyNotification.scheduleDailyNotification({
|
|
time: notificationTimeString,
|
|
title: 'Test Notification',
|
|
body: 'This is a test notification from the DailyNotification plugin!',
|
|
sound: true,
|
|
priority: 'high'
|
|
})
|
|
.then(() => {
|
|
const prefetchTimeReadable = prefetchTime.toLocaleTimeString();
|
|
const notificationTimeReadable = notificationTime.toLocaleTimeString();
|
|
status.innerHTML = '✅ Notification scheduled!<br>' +
|
|
'📥 Prefetch: ' + prefetchTimeReadable + ' (' + prefetchTimeString + ')<br>' +
|
|
'🔔 Notification: ' + notificationTimeReadable + ' (' + notificationTimeString + ')';
|
|
status.style.background = 'rgba(0, 255, 0, 0.3)'; // Green background
|
|
})
|
|
.catch(error => {
|
|
status.innerHTML = `Notification failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
});
|
|
} catch (error) {
|
|
status.innerHTML = `Notification test failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
}
|
|
}
|
|
|
|
function scheduleNotification() {
|
|
console.log('scheduleNotification called');
|
|
const status = document.getElementById('status');
|
|
status.innerHTML = 'Scheduling notification...';
|
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
|
|
|
try {
|
|
if (!window.DailyNotification) {
|
|
status.innerHTML = 'DailyNotification plugin not available';
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
return;
|
|
}
|
|
|
|
// Schedule notification for 10 minutes from now (allows 5 min prefetch to fire)
|
|
const now = new Date();
|
|
const notificationTime = new Date(now.getTime() + 600000); // 10 minutes from now
|
|
const prefetchTime = new Date(now.getTime() + 300000); // 5 minutes from now
|
|
const notificationTimeString = notificationTime.getHours().toString().padStart(2, '0') + ':' +
|
|
notificationTime.getMinutes().toString().padStart(2, '0');
|
|
const prefetchTimeString = prefetchTime.getHours().toString().padStart(2, '0') + ':' +
|
|
prefetchTime.getMinutes().toString().padStart(2, '0');
|
|
|
|
window.DailyNotification.scheduleDailyNotification({
|
|
time: notificationTimeString,
|
|
title: 'Scheduled Notification',
|
|
body: 'This notification was scheduled 10 minutes ago!',
|
|
sound: true,
|
|
priority: 'default'
|
|
})
|
|
.then(() => {
|
|
const prefetchTimeReadable = prefetchTime.toLocaleTimeString();
|
|
const notificationTimeReadable = notificationTime.toLocaleTimeString();
|
|
status.innerHTML = '✅ Notification scheduled!<br>' +
|
|
'📥 Prefetch: ' + prefetchTimeReadable + ' (' + prefetchTimeString + ')<br>' +
|
|
'🔔 Notification: ' + notificationTimeReadable + ' (' + notificationTimeString + ')';
|
|
status.style.background = 'rgba(0, 255, 0, 0.3)'; // Green background
|
|
})
|
|
.catch(error => {
|
|
status.innerHTML = `Scheduling failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
});
|
|
} catch (error) {
|
|
status.innerHTML = `Scheduling test failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
}
|
|
}
|
|
|
|
function showReminder() {
|
|
console.log('showReminder called');
|
|
const status = document.getElementById('status');
|
|
status.innerHTML = 'Showing reminder...';
|
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
|
|
|
try {
|
|
if (!window.DailyNotification) {
|
|
status.innerHTML = 'DailyNotification plugin not available';
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
return;
|
|
}
|
|
|
|
// Schedule daily reminder using scheduleDailyReminder
|
|
const now = new Date();
|
|
const reminderTime = new Date(now.getTime() + 10000); // 10 seconds from now
|
|
const timeString = reminderTime.getHours().toString().padStart(2, '0') + ':' +
|
|
reminderTime.getMinutes().toString().padStart(2, '0');
|
|
|
|
window.DailyNotification.scheduleDailyReminder({
|
|
id: 'daily-reminder-test',
|
|
title: 'Daily Reminder',
|
|
body: 'Don\'t forget to check your daily notifications!',
|
|
time: timeString,
|
|
sound: true,
|
|
vibration: true,
|
|
priority: 'default',
|
|
repeatDaily: false // Just for testing
|
|
})
|
|
.then(() => {
|
|
status.innerHTML = 'Daily reminder scheduled for ' + timeString + '!';
|
|
status.style.background = 'rgba(0, 255, 0, 0.3)'; // Green background
|
|
})
|
|
.catch(error => {
|
|
status.innerHTML = `Reminder failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
});
|
|
} catch (error) {
|
|
status.innerHTML = `Reminder test failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
}
|
|
}
|
|
|
|
// Permission management functions
|
|
function checkPermissions() {
|
|
console.log('checkPermissions called');
|
|
const status = document.getElementById('status');
|
|
status.innerHTML = 'Checking permissions...';
|
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
|
|
|
try {
|
|
if (!window.DailyNotification) {
|
|
status.innerHTML = 'DailyNotification plugin not available';
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
return;
|
|
}
|
|
|
|
window.DailyNotification.checkPermissionStatus()
|
|
.then(result => {
|
|
status.innerHTML = `Permission Status:<br>
|
|
Notifications: ${result.notificationsEnabled ? '✅' : '❌'}<br>
|
|
Exact Alarm: ${result.exactAlarmEnabled ? '✅' : '❌'}<br>
|
|
Wake Lock: ${result.wakeLockEnabled ? '✅' : '❌'}<br>
|
|
All Granted: ${result.allPermissionsGranted ? '✅' : '❌'}`;
|
|
status.style.background = result.allPermissionsGranted ?
|
|
'rgba(0, 255, 0, 0.3)' : 'rgba(255, 165, 0, 0.3)'; // Green or orange
|
|
})
|
|
.catch(error => {
|
|
status.innerHTML = `Permission check failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
});
|
|
} catch (error) {
|
|
status.innerHTML = `Permission check failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
}
|
|
}
|
|
|
|
function requestPermissions() {
|
|
console.log('requestPermissions called');
|
|
const status = document.getElementById('status');
|
|
status.innerHTML = 'Requesting permissions...';
|
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
|
|
|
try {
|
|
if (!window.DailyNotification) {
|
|
status.innerHTML = 'DailyNotification plugin not available';
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
return;
|
|
}
|
|
|
|
window.DailyNotification.requestNotificationPermissions()
|
|
.then(() => {
|
|
status.innerHTML = 'Permission request completed! Check your device settings if needed.';
|
|
status.style.background = 'rgba(0, 255, 0, 0.3)'; // Green background
|
|
|
|
// Check permissions again after request
|
|
setTimeout(() => {
|
|
checkPermissions();
|
|
}, 1000);
|
|
})
|
|
.catch(error => {
|
|
status.innerHTML = `Permission request failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
});
|
|
} catch (error) {
|
|
status.innerHTML = `Permission request failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
}
|
|
}
|
|
|
|
function openExactAlarmSettings() {
|
|
console.log('openExactAlarmSettings called');
|
|
const status = document.getElementById('status');
|
|
status.innerHTML = 'Opening exact alarm settings...';
|
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
|
|
|
try {
|
|
if (!window.DailyNotification) {
|
|
status.innerHTML = 'DailyNotification plugin not available';
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
return;
|
|
}
|
|
|
|
window.DailyNotification.openExactAlarmSettings()
|
|
.then(() => {
|
|
status.innerHTML = 'Exact alarm settings opened! Please enable "Allow exact alarms" and return to the app.';
|
|
status.style.background = 'rgba(0, 255, 0, 0.3)'; // Green background
|
|
})
|
|
.catch(error => {
|
|
status.innerHTML = `Failed to open exact alarm settings: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
});
|
|
} catch (error) {
|
|
status.innerHTML = `Failed to open exact alarm settings: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
}
|
|
}
|
|
|
|
function checkChannelStatus() {
|
|
const status = document.getElementById('status');
|
|
status.innerHTML = 'Checking channel status...';
|
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
|
|
|
try {
|
|
if (!window.DailyNotification) {
|
|
status.innerHTML = 'DailyNotification plugin not available';
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
return;
|
|
}
|
|
|
|
window.DailyNotification.isChannelEnabled()
|
|
.then(result => {
|
|
const importanceText = getImportanceText(result.importance);
|
|
status.innerHTML = `Channel Status: ${result.enabled ? 'Enabled' : 'Disabled'} (${importanceText})`;
|
|
status.style.background = result.enabled ? 'rgba(0, 255, 0, 0.3)' : 'rgba(255, 0, 0, 0.3)';
|
|
})
|
|
.catch(error => {
|
|
status.innerHTML = `Channel check failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
});
|
|
} catch (error) {
|
|
status.innerHTML = `Channel check failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
}
|
|
}
|
|
|
|
function openChannelSettings() {
|
|
const status = document.getElementById('status');
|
|
status.innerHTML = 'Opening channel settings...';
|
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
|
|
|
try {
|
|
if (!window.DailyNotification) {
|
|
status.innerHTML = 'DailyNotification plugin not available';
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
return;
|
|
}
|
|
|
|
window.DailyNotification.openChannelSettings()
|
|
.then(result => {
|
|
if (result.opened) {
|
|
status.innerHTML = 'Channel settings opened! Please enable notifications and return to the app.';
|
|
status.style.background = 'rgba(0, 255, 0, 0.3)'; // Green background
|
|
} else {
|
|
status.innerHTML = 'Could not open channel settings (may not be available on this device)';
|
|
status.style.background = 'rgba(255, 165, 0, 0.3)'; // Orange background
|
|
}
|
|
})
|
|
.catch(error => {
|
|
status.innerHTML = `Failed to open channel settings: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
});
|
|
} catch (error) {
|
|
status.innerHTML = `Failed to open channel settings: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
}
|
|
}
|
|
|
|
function checkComprehensiveStatus() {
|
|
const status = document.getElementById('status');
|
|
status.innerHTML = 'Checking comprehensive status...';
|
|
status.style.background = 'rgba(255, 255, 0, 0.3)'; // Yellow background
|
|
|
|
try {
|
|
if (!window.DailyNotification) {
|
|
status.innerHTML = 'DailyNotification plugin not available';
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
return;
|
|
}
|
|
|
|
window.DailyNotification.checkStatus()
|
|
.then(result => {
|
|
const canSchedule = result.canScheduleNow;
|
|
const issues = [];
|
|
|
|
if (!result.postNotificationsGranted) {
|
|
issues.push('POST_NOTIFICATIONS permission');
|
|
}
|
|
if (!result.channelEnabled) {
|
|
issues.push('notification channel disabled');
|
|
}
|
|
if (!result.exactAlarmsGranted) {
|
|
issues.push('exact alarm permission');
|
|
}
|
|
|
|
let statusText = `Status: ${canSchedule ? 'Ready to schedule' : 'Issues found'}`;
|
|
if (issues.length > 0) {
|
|
statusText += `\nIssues: ${issues.join(', ')}`;
|
|
}
|
|
|
|
statusText += `\nChannel: ${getImportanceText(result.channelImportance)}`;
|
|
statusText += `\nChannel ID: ${result.channelId}`;
|
|
|
|
status.innerHTML = statusText;
|
|
status.style.background = canSchedule ? 'rgba(0, 255, 0, 0.3)' : 'rgba(255, 0, 0, 0.3)';
|
|
})
|
|
.catch(error => {
|
|
status.innerHTML = `Status check failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
});
|
|
} catch (error) {
|
|
status.innerHTML = `Status check failed: ${error.message}`;
|
|
status.style.background = 'rgba(255, 0, 0, 0.3)'; // Red background
|
|
}
|
|
}
|
|
|
|
function getImportanceText(importance) {
|
|
switch (importance) {
|
|
case 0: return 'None (blocked)';
|
|
case 1: return 'Min';
|
|
case 2: return 'Low';
|
|
case 3: return 'Default';
|
|
case 4: return 'High';
|
|
case 5: return 'Max';
|
|
default: return `Unknown (${importance})`;
|
|
}
|
|
}
|
|
|
|
// Attach to window object
|
|
window.testPlugin = testPlugin;
|
|
window.configurePlugin = configurePlugin;
|
|
window.checkStatus = checkStatus;
|
|
window.testNotification = testNotification;
|
|
window.scheduleNotification = scheduleNotification;
|
|
window.showReminder = showReminder;
|
|
window.checkPermissions = checkPermissions;
|
|
window.requestPermissions = requestPermissions;
|
|
window.openExactAlarmSettings = openExactAlarmSettings;
|
|
window.checkChannelStatus = checkChannelStatus;
|
|
window.openChannelSettings = openChannelSettings;
|
|
window.checkComprehensiveStatus = checkComprehensiveStatus;
|
|
|
|
console.log('Functions attached to window:', {
|
|
testPlugin: typeof window.testPlugin,
|
|
configurePlugin: typeof window.configurePlugin,
|
|
checkStatus: typeof window.checkStatus,
|
|
testNotification: typeof window.testNotification,
|
|
scheduleNotification: typeof window.scheduleNotification,
|
|
showReminder: typeof window.showReminder
|
|
});
|
|
</script>
|
|
|
|
<!-- Capacitor Runtime -->
|
|
<script src="capacitor.js"></script>
|
|
<script src="capacitor_plugins.js"></script>
|
|
|
|
<script>
|
|
// Wait for Capacitor to be ready
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
console.log('DOM loaded, waiting for Capacitor...');
|
|
|
|
// Wait for Capacitor to be available
|
|
function initPlugin() {
|
|
if (window.Capacitor && window.Capacitor.Plugins && window.Capacitor.Plugins.DailyNotification) {
|
|
console.log('Capacitor and DailyNotification plugin are ready!');
|
|
window.DailyNotification = window.Capacitor.Plugins.DailyNotification;
|
|
} else if (window.Capacitor) {
|
|
console.log('Capacitor loaded, waiting for plugins...');
|
|
setTimeout(initPlugin, 100);
|
|
} else {
|
|
console.log('Waiting for Capacitor...');
|
|
setTimeout(initPlugin, 100);
|
|
}
|
|
}
|
|
|
|
initPlugin();
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|