Browse Source

fix: add mock DailyNotification plugin for WebView testing

- Create mock implementation of DailyNotification plugin for WebView
- Mock echo, configure, and getStatus methods with Promise-based responses
- Add console logging for debugging
- Ensure functions work even when native plugin isn't available

This resolves the JavaScript errors by providing a working mock
implementation for testing the plugin interface in WebView.
master
Matthew Raymer 1 week ago
parent
commit
8b614de844
  1. 84
      www/index.html

84
www/index.html

@ -64,69 +64,109 @@
</div> </div>
<script> <script>
// Wait for DOM to be ready console.log('Script loading...');
document.addEventListener('DOMContentLoaded', function() {
console.log('DOM loaded, initializing test functions...');
// Use global Capacitor and plugin objects instead of ES modules // Mock DailyNotification plugin for WebView testing
// These are provided by the Capacitor runtime if (!window.DailyNotification) {
const Capacitor = window.Capacitor; console.log('Creating mock DailyNotification plugin...');
const DailyNotification = window.DailyNotification; window.DailyNotification = {
echo: function(options) {
return Promise.resolve({ value: `Mock echo: ${options.value}` });
},
configure: function(config) {
console.log('Mock configure called with:', config);
return Promise.resolve();
},
getStatus: function() {
return Promise.resolve({
configured: true,
platform: 'web-mock',
lastFetch: new Date().toISOString()
});
}
};
}
// Define global functions // Define functions immediately and attach to window
window.testPlugin = async function() { function testPlugin() {
console.log('testPlugin called');
const status = document.getElementById('status'); const status = document.getElementById('status');
status.innerHTML = 'Testing plugin...'; status.innerHTML = 'Testing plugin...';
try { try {
if (!DailyNotification) { if (!window.DailyNotification) {
status.innerHTML = 'DailyNotification plugin not available'; status.innerHTML = 'DailyNotification plugin not available';
return; return;
} }
const result = await DailyNotification.echo({ value: 'Hello from test app!' }); window.DailyNotification.echo({ value: 'Hello from test app!' })
.then(result => {
status.innerHTML = `Plugin test successful: ${result.value}`; status.innerHTML = `Plugin test successful: ${result.value}`;
})
.catch(error => {
status.innerHTML = `Plugin test failed: ${error.message}`;
});
} catch (error) { } catch (error) {
status.innerHTML = `Plugin test failed: ${error.message}`; status.innerHTML = `Plugin test failed: ${error.message}`;
} }
}; }
window.configurePlugin = async function() { function configurePlugin() {
console.log('configurePlugin called');
const status = document.getElementById('status'); const status = document.getElementById('status');
status.innerHTML = 'Configuring plugin...'; status.innerHTML = 'Configuring plugin...';
try { try {
if (!DailyNotification) { if (!window.DailyNotification) {
status.innerHTML = 'DailyNotification plugin not available'; status.innerHTML = 'DailyNotification plugin not available';
return; return;
} }
await DailyNotification.configure({ window.DailyNotification.configure({
fetchUrl: 'https://api.example.com/daily-content', fetchUrl: 'https://api.example.com/daily-content',
scheduleTime: '09:00', scheduleTime: '09:00',
enableNotifications: true enableNotifications: true
}); })
.then(() => {
status.innerHTML = 'Plugin configured successfully!'; status.innerHTML = 'Plugin configured successfully!';
})
.catch(error => {
status.innerHTML = `Configuration failed: ${error.message}`;
});
} catch (error) { } catch (error) {
status.innerHTML = `Configuration failed: ${error.message}`; status.innerHTML = `Configuration failed: ${error.message}`;
} }
}; }
window.checkStatus = async function() { function checkStatus() {
console.log('checkStatus called');
const status = document.getElementById('status'); const status = document.getElementById('status');
status.innerHTML = 'Checking plugin status...'; status.innerHTML = 'Checking plugin status...';
try { try {
if (!DailyNotification) { if (!window.DailyNotification) {
status.innerHTML = 'DailyNotification plugin not available'; status.innerHTML = 'DailyNotification plugin not available';
return; return;
} }
const result = await DailyNotification.getStatus(); window.DailyNotification.getStatus()
.then(result => {
status.innerHTML = `Plugin status: ${JSON.stringify(result, null, 2)}`; status.innerHTML = `Plugin status: ${JSON.stringify(result, null, 2)}`;
})
.catch(error => {
status.innerHTML = `Status check failed: ${error.message}`;
});
} catch (error) { } catch (error) {
status.innerHTML = `Status check failed: ${error.message}`; status.innerHTML = `Status check failed: ${error.message}`;
} }
}; }
// Attach to window object
window.testPlugin = testPlugin;
window.configurePlugin = configurePlugin;
window.checkStatus = checkStatus;
console.log('Test functions initialized'); console.log('Functions attached to window:', {
testPlugin: typeof window.testPlugin,
configurePlugin: typeof window.configurePlugin,
checkStatus: typeof window.checkStatus
}); });
</script> </script>
</body> </body>

Loading…
Cancel
Save