Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4d9bb62907 | |||
| 8251cd9bfd |
+17
-30
@@ -10375,11 +10375,24 @@ def my_borrowed_items():
|
||||
|
||||
@app.route('/api/push/vapid-key', methods=['GET'])
|
||||
def get_vapid_key():
|
||||
"""Returns the VAPID public key for web push subscriptions."""
|
||||
"""
|
||||
Returns the VAPID public key for web push subscriptions
|
||||
"""
|
||||
from Web.push_notifications import _get_vapid_public
|
||||
if not _get_vapid_public():
|
||||
return jsonify({'error': 'VAPID public key not configured'}), 500
|
||||
return jsonify({'publicKey': _get_vapid_public()})
|
||||
if 'username' not in session:
|
||||
return jsonify({'success': False, 'error': 'Not authenticated'}), 401
|
||||
|
||||
try:
|
||||
if not _get_vapid_public():
|
||||
return jsonify({'success': False, 'error': 'VAPID public key not configured'}), 500
|
||||
|
||||
return jsonify({
|
||||
'success': True,
|
||||
'publicKey': _get_vapid_public()
|
||||
})
|
||||
except Exception as e:
|
||||
app.logger.error(f'Error getting VAPID key: {e}')
|
||||
return jsonify({'success': False}), 500
|
||||
|
||||
@app.route('/notifications')
|
||||
def notifications_view():
|
||||
@@ -12225,32 +12238,6 @@ def get_push_subscriptions():
|
||||
app.logger.error(f'Error getting push subscriptions: {e}')
|
||||
return jsonify({'success': False}), 500
|
||||
|
||||
|
||||
@app.route('/api/push/vapid-key', methods=['GET'])
|
||||
def get_vapid_key():
|
||||
"""
|
||||
Get the VAPID public key for push notifications
|
||||
Used by the service worker to communicate with push service
|
||||
"""
|
||||
try:
|
||||
vapid_key = pn.VAPID_PUBLIC_KEY
|
||||
if not vapid_key:
|
||||
app.logger.warning('VAPID_PUBLIC_KEY not configured')
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'error': 'Push notifications not configured on server'
|
||||
}), 501
|
||||
|
||||
return jsonify({
|
||||
'success': True,
|
||||
'vapid_key': vapid_key
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
app.logger.error(f'Error getting VAPID key: {e}')
|
||||
return jsonify({'success': False}), 500
|
||||
|
||||
|
||||
@app.route('/api/push/test', methods=['POST'])
|
||||
def test_push_notification():
|
||||
"""
|
||||
|
||||
@@ -25,7 +25,7 @@ class PushNotificationManager {
|
||||
* Initialize push notification system
|
||||
* Must be called after page load
|
||||
*/
|
||||
async init() {
|
||||
async init(providedKey = null) {
|
||||
if (!this.isSupported) {
|
||||
console.log('Push notifications not supported in this browser');
|
||||
return false;
|
||||
@@ -49,11 +49,18 @@ class PushNotificationManager {
|
||||
}
|
||||
}
|
||||
|
||||
// Fetch VAPID public key from server
|
||||
// Wenn der Key direkt aus dem Template übergeben wurde, nutze diesen (spart einen Request)
|
||||
if (providedKey) {
|
||||
this.vapidKey = providedKey;
|
||||
return true;
|
||||
}
|
||||
|
||||
// Ansonsten: Fetch VAPID public key from server
|
||||
const keyResponse = await fetch('/api/push/vapid-key');
|
||||
if (keyResponse.ok) {
|
||||
const keyData = await keyResponse.json();
|
||||
this.vapidKey = keyData.vapid_key;
|
||||
// WICHTIG: Muss exakt mit dem Python-JSON-Key übereinstimmen!
|
||||
this.vapidKey = keyData.publicKey;
|
||||
} else {
|
||||
console.warn('Failed to fetch VAPID key');
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user