from django.http.response import JsonResponse, HttpResponse
from django.views.decorators.http import require_GET, require_POST
from django.contrib.auth.models import User
from django.views.decorators.csrf import csrf_exempt
from webpush import send_user_notification
import json
from django.shortcuts import render, get_object_or_404
from django.conf import settings
from django.utils.translation import gettext as _


def get_key_Dict():
    webpush_settings = getattr(settings, 'WEBPUSH_SETTINGS', {})
    vapid_key = webpush_settings.get('VAPID_PUBLIC_KEY')
    Dict = {
        'vapid_key': vapid_key
    }
    return Dict

def send_push(user, title, text, url=None, button_name=None, img=None):
    try:
        # body = request.body
        # data = json.loads(body)
        #
        # if 'head' not in data or 'body' not in data or 'id' not in data:
        #     return JsonResponse(status=400, data={"message": "Invalid data format"})
        #
        # user_id = data['id']
        # user = get_object_or_404(User, pk=user_id)
        Dict = {
            'head': title,
            'body': text,
        }
        if url:
            Dict['url'] = url
            if button_name:
                Dict['button_name'] = button_name
            else:
                Dict['button_name'] = _('Перейти'),

        if img:
            Dict['img'] = img

        # payload = {'head': data['head'], 'body': data['body']}
        send_user_notification(user=user, payload=Dict, ttl=1000)

        return JsonResponse(status=200, data={"message": "Web push successful"})
    except TypeError:
        return JsonResponse(status=500, data={"message": "An error occurred"})
