diff --git a/src/pages/ClientDeliveryPage.jsx b/src/pages/ClientDeliveryPage.jsx index 98ca54f..25045ae 100644 --- a/src/pages/ClientDeliveryPage.jsx +++ b/src/pages/ClientDeliveryPage.jsx @@ -17,6 +17,70 @@ import { fetchDeliveryInvitation, } from "../services/deliveryInvitationApi"; +const SUPABASE_URL = import.meta.env.VITE_SUPABASE_URL || ""; +const SUPABASE_ANON_KEY = import.meta.env.VITE_SUPABASE_ANON_KEY || ""; + +const TestPushButton = () => { + const [sending, setSending] = React.useState(false); + const [sendResult, setSendResult] = React.useState(null); // null | {ok, sent, error} + + const handleClick = async () => { + setSending(true); + setSendResult(null); + try { + const phone = window.localStorage.getItem("supersam_phone") || ""; + if (!phone) { + setSendResult({ ok: false, error: "Сначала подпишитесь на уведомления (кнопка «Разрешить» выше)" }); + return; + } + const resp = await fetch(`${SUPABASE_URL}/functions/v1/send-test-push`, { + method: "POST", + headers: { + "Content-Type": "application/json", + ...(SUPABASE_ANON_KEY ? { apikey: SUPABASE_ANON_KEY } : {}), + }, + body: JSON.stringify({ + phone_normalized: phone, + title: "СуперСам — согласуйте доставку", + body: "Ваш заказ готов к доставке. Выберите удобное время.", + url: `${window.location.origin}/client/test-consent`, + }), + }); + const data = await resp.json().catch(() => ({})); + setSendResult({ ok: resp.ok, ...data }); + } catch (e) { + setSendResult({ ok: false, error: e instanceof Error ? e.message : "Ошибка отправки" }); + } finally { + setSending(false); + } + }; + + return ( +
+ + + {sendResult?.ok ? ( +

+ ✅ Отправлено: {sendResult.sent} уведомление(й). Проверьте телефон. +

+ ) : null} + + {sendResult && !sendResult.ok ? ( +

+ ❌ {sendResult.error || "Не удалось отправить уведомление"} +

+ ) : null} +
+ ); +}; + const DELIVERY_TIMEZONE = "Europe/Simferopol"; const getBusinessTodayKey = (referenceDate = new Date()) => { @@ -372,16 +436,11 @@ export const ClientDeliveryPage = () => {

🧪 Тест уведомления

- Отправить тестовое push-уведомление (после подписки). Нажмите на уведомление — + Отправить тестовое push-уведомление на этот телефон. Нажмите на уведомление — откроется тестовая страница согласования доставки.

- - Открыть тестовую страницу - +