status update
This commit is contained in:
@@ -177,6 +177,26 @@ async function sendSubscriptionToServer(subscription, buttonId) {
|
|||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
const result = await response.json();
|
const result = await response.json();
|
||||||
console.log('Subscription sent successfully:', result.message);
|
console.log('Subscription sent successfully:', result.message);
|
||||||
|
|
||||||
|
// Update the UI to show subscription status as active
|
||||||
|
const subscriptionStatusElement = document.getElementById('subscriptionStatus');
|
||||||
|
if (subscriptionStatusElement) {
|
||||||
|
subscriptionStatusElement.textContent = 'active';
|
||||||
|
subscriptionStatusElement.className = 'status-active';
|
||||||
|
|
||||||
|
// Enable unsubscribe button when subscription is active
|
||||||
|
const unsubscribeButton = document.getElementById('pushUnsubscribeButton');
|
||||||
|
if (unsubscribeButton) unsubscribeButton.disabled = false;
|
||||||
|
|
||||||
|
// Change subscribe button text to "Re-subscribe"
|
||||||
|
const resubscribeButton = document.getElementById('pushResubscribeButton');
|
||||||
|
if (resubscribeButton) resubscribeButton.textContent = 'Re-subscribe';
|
||||||
|
|
||||||
|
// Enable simulate button when subscription is active
|
||||||
|
const simulateButton = document.getElementById('simulateClickButton');
|
||||||
|
if (simulateButton) simulateButton.disabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
// Success alert removed as requested
|
// Success alert removed as requested
|
||||||
} else {
|
} else {
|
||||||
let errorMsg = `Server error: ${response.status}`;
|
let errorMsg = `Server error: ${response.status}`;
|
||||||
@@ -227,88 +247,18 @@ export function handleFlicAction(action, buttonId, timestamp, batteryLevel) {
|
|||||||
|
|
||||||
// --- Initialization ---
|
// --- Initialization ---
|
||||||
|
|
||||||
|
// Initialize PushFlic with action handlers
|
||||||
export function initPushFlic(handlers) {
|
export function initPushFlic(handlers) {
|
||||||
// Store the handlers passed from app.js
|
|
||||||
if (handlers && Object.keys(handlers).length > 0) {
|
if (handlers && Object.keys(handlers).length > 0) {
|
||||||
actionHandlers = handlers;
|
actionHandlers = handlers;
|
||||||
console.log('[PushFlic] Registered action handlers:', Object.keys(actionHandlers));
|
console.log('[PushFlic] Stored action handlers:', Object.keys(actionHandlers));
|
||||||
} else {
|
} else {
|
||||||
console.warn('[PushFlic] No action handlers provided to initPushFlic, actions will not work!');
|
console.warn('[PushFlic] No action handlers provided to initPushFlic!');
|
||||||
}
|
|
||||||
|
|
||||||
// No longer auto-subscribe when permission is granted
|
|
||||||
if ('serviceWorker' in navigator) {
|
|
||||||
navigator.serviceWorker.ready.then(registration => {
|
|
||||||
Notification.requestPermission().then(permission => {
|
|
||||||
if (permission === 'granted') {
|
|
||||||
console.log('[PushFlic] Permission granted, but not automatically subscribing.');
|
|
||||||
console.log('[PushFlic] User can subscribe through "Push notification settings" menu.');
|
|
||||||
// subscribeToPush(); // Removed automatic subscription
|
|
||||||
} else {
|
|
||||||
console.log('[PushFlic] Notification permission not granted.');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// New function to manually trigger the subscription process
|
// New function to manually trigger the subscription process
|
||||||
export function setupPushNotifications() {
|
export function setupPushNotifications() {
|
||||||
if ('serviceWorker' in navigator) {
|
console.log('[PushFlic] Manually triggering push notification setup');
|
||||||
navigator.serviceWorker.ready.then(registration => {
|
subscribeToPush();
|
||||||
console.log('[PushFlic] Manually triggering push subscription process...');
|
|
||||||
subscribeToPush();
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
console.error('[PushFlic] Service workers not supported, cannot subscribe');
|
|
||||||
alert('Your browser does not support push notifications.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Function to force re-authentication even if credentials exist
|
|
||||||
export function forceCredentialsPrompt() {
|
|
||||||
// Get credentials from the form fields if available
|
|
||||||
const usernameField = document.getElementById('pushUsername');
|
|
||||||
const passwordField = document.getElementById('pushPassword');
|
|
||||||
|
|
||||||
let credentialsUpdated = false;
|
|
||||||
|
|
||||||
if (usernameField && passwordField && usernameField.value.trim() && passwordField.value.trim()) {
|
|
||||||
// Save the entered credentials to localStorage
|
|
||||||
const credentials = {
|
|
||||||
username: usernameField.value.trim(),
|
|
||||||
password: passwordField.value.trim()
|
|
||||||
};
|
|
||||||
localStorage.setItem('basicAuthCredentials', JSON.stringify(credentials));
|
|
||||||
console.log('[PushFlic] Saved credentials from form fields');
|
|
||||||
credentialsUpdated = true;
|
|
||||||
} else {
|
|
||||||
// Check if we have stored credentials
|
|
||||||
try {
|
|
||||||
const storedAuth = localStorage.getItem('basicAuthCredentials');
|
|
||||||
if (storedAuth) {
|
|
||||||
const credentials = JSON.parse(storedAuth);
|
|
||||||
if (credentials.username && credentials.password) {
|
|
||||||
// We have stored credentials, no need to update
|
|
||||||
console.log('[PushFlic] Using stored credentials');
|
|
||||||
credentialsUpdated = true;
|
|
||||||
|
|
||||||
// Update the form fields if they exist
|
|
||||||
if (usernameField && passwordField) {
|
|
||||||
usernameField.value = credentials.username;
|
|
||||||
passwordField.value = credentials.password;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error('[PushFlic] Error accessing stored credentials:', error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!credentialsUpdated) {
|
|
||||||
console.log('[PushFlic] No valid credentials available');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Trigger the subscription process
|
|
||||||
setupPushNotifications();
|
|
||||||
}
|
}
|
||||||
@@ -35,10 +35,6 @@ export function setupPushNotifications() {
|
|||||||
pushFlic.setupPushNotifications();
|
pushFlic.setupPushNotifications();
|
||||||
}
|
}
|
||||||
|
|
||||||
export function forceCredentialsPrompt() {
|
|
||||||
pushFlic.forceCredentialsPrompt();
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- Handle Messages from Service Worker ---
|
// --- Handle Messages from Service Worker ---
|
||||||
|
|
||||||
export function flicMessageHandler(event) {
|
export function flicMessageHandler(event) {
|
||||||
@@ -118,4 +114,4 @@ export function setupServiceWorker(messageHandler) {
|
|||||||
} else {
|
} else {
|
||||||
console.warn('[ServiceWorkerManager] ServiceWorker not supported.');
|
console.warn('[ServiceWorkerManager] ServiceWorker not supported.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
// pushSettingsUI.js - UI handling for push notification settings
|
// pushSettingsUI.js - UI handling for push notification settings
|
||||||
import { setupPushNotifications, forceCredentialsPrompt } from '../services/serviceWorkerManager.js';
|
import { setupPushNotifications } from '../services/serviceWorkerManager.js';
|
||||||
import { FLIC_BUTTON_ID } from '../config.js';
|
import { FLIC_BUTTON_ID } from '../config.js';
|
||||||
|
|
||||||
// --- DOM Elements ---
|
// --- DOM Elements ---
|
||||||
@@ -265,7 +265,7 @@ async function unsubscribeFromPush() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Force subscription to push notifications
|
// Subscribe to push notifications
|
||||||
async function resubscribeToPush() {
|
async function resubscribeToPush() {
|
||||||
try {
|
try {
|
||||||
let username = elements.pushUsername.value.trim();
|
let username = elements.pushUsername.value.trim();
|
||||||
@@ -291,8 +291,20 @@ async function resubscribeToPush() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if we have credentials, show alert if missing
|
||||||
|
if (!username || !password) {
|
||||||
|
console.log('No credentials available. Showing alert.');
|
||||||
|
alert('Please enter your username and password to subscribe.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save the credentials to localStorage
|
||||||
|
const credentials = { username, password };
|
||||||
|
localStorage.setItem('basicAuthCredentials', JSON.stringify(credentials));
|
||||||
|
console.log('Saved credentials to localStorage');
|
||||||
|
|
||||||
// Use the credentials to subscribe
|
// Use the credentials to subscribe
|
||||||
await forceCredentialsPrompt();
|
await setupPushNotifications();
|
||||||
|
|
||||||
// Wait a moment for the subscription to complete
|
// Wait a moment for the subscription to complete
|
||||||
await new Promise(resolve => setTimeout(resolve, 500));
|
await new Promise(resolve => setTimeout(resolve, 500));
|
||||||
@@ -324,8 +336,6 @@ async function resubscribeToPush() {
|
|||||||
}
|
}
|
||||||
// Fall back to the standard update function
|
// Fall back to the standard update function
|
||||||
await updateSubscriptionStatus();
|
await updateSubscriptionStatus();
|
||||||
|
|
||||||
alert('Subscription failed. Please check your credentials and try again.');
|
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error subscribing:', error);
|
console.error('Error subscribing:', error);
|
||||||
|
|||||||
Reference in New Issue
Block a user