@asteby/metacore-pwa 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,3 @@
1
- import { type ComponentType, type ReactNode } from 'react';
2
1
  export interface InstallPromptMessages {
3
2
  title?: string;
4
3
  description?: string;
@@ -6,15 +5,14 @@ export interface InstallPromptMessages {
6
5
  dismissLabel?: string;
7
6
  }
8
7
  export interface InstallPromptProps {
9
- /** Optional custom button to render — receives onClick, children, variant and size. */
10
- ButtonComponent?: ComponentType<{
11
- onClick?: () => void;
12
- children?: ReactNode;
13
- variant?: 'default' | 'outline';
14
- size?: 'sm';
15
- }>;
16
8
  messages?: InstallPromptMessages;
17
- className?: string;
9
+ /** How long the toast stays before auto-dismissing (ms). Default: 10000. */
10
+ duration?: number;
18
11
  }
19
- export declare function PWAInstallPrompt({ ButtonComponent, messages, className, }?: InstallPromptProps): import("react").JSX.Element | null;
12
+ /**
13
+ * Renders through the shared notification toast (same card as bell/WS/SSE)
14
+ * instead of its own fixed-position banner, so it stacks with every other
15
+ * app notification rather than competing for a corner of the screen.
16
+ */
17
+ export declare function PWAInstallPrompt({ messages, duration }?: InstallPromptProps): null;
20
18
  //# sourceMappingURL=install-prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-prompt.d.ts","sourceRoot":"","sources":["../../src/components/install-prompt.tsx"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAG/E,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,uFAAuF;IACvF,eAAe,CAAC,EAAE,aAAa,CAAC;QAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;QACpB,QAAQ,CAAC,EAAE,SAAS,CAAA;QACpB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;QAC/B,IAAI,CAAC,EAAE,IAAI,CAAA;KACZ,CAAC,CAAA;IACF,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAkCD,wBAAgB,gBAAgB,CAAC,EAC/B,eAA+B,EAC/B,QAAQ,EACR,SAAS,GACV,GAAE,kBAAuB,sCA2DzB"}
1
+ {"version":3,"file":"install-prompt.d.ts","sourceRoot":"","sources":["../../src/components/install-prompt.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AASD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAgB,EAAE,GAAE,kBAAuB,QAmCvF"}
@@ -1,6 +1,5 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Download, X } from 'lucide-react';
3
- import { useEffect, useState } from 'react';
1
+ import { useEffect, useRef } from 'react';
2
+ import { showNotificationToast } from '@asteby/metacore-notifications';
4
3
  import { usePWAContext } from '../provider';
5
4
  const DEFAULTS = {
6
5
  title: 'Instalar App',
@@ -8,38 +7,44 @@ const DEFAULTS = {
8
7
  installLabel: 'Instalar',
9
8
  dismissLabel: 'Ahora no',
10
9
  };
11
- function DefaultButton({ onClick, children, variant = 'default', size, }) {
12
- const base = 'inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50';
13
- const sizeClass = size === 'sm' ? 'h-8 px-3' : 'h-9 px-4';
14
- const variantClass = variant === 'outline'
15
- ? 'border border-input bg-background hover:bg-accent hover:text-accent-foreground'
16
- : 'bg-primary text-primary-foreground hover:bg-primary/90';
17
- return (_jsx("button", { type: "button", onClick: onClick, className: `${base} ${sizeClass} ${variantClass}`, children: children }));
18
- }
19
- export function PWAInstallPrompt({ ButtonComponent = DefaultButton, messages, className, } = {}) {
10
+ /**
11
+ * Renders through the shared notification toast (same card as bell/WS/SSE)
12
+ * instead of its own fixed-position banner, so it stacks with every other
13
+ * app notification rather than competing for a corner of the screen.
14
+ */
15
+ export function PWAInstallPrompt({ messages, duration = 10000 } = {}) {
20
16
  const { isInstallable, installApp } = usePWAContext();
21
- const [show, setShow] = useState(false);
22
17
  const msgs = { ...DEFAULTS, ...messages };
18
+ const shown = useRef(false);
23
19
  useEffect(() => {
24
- if (isInstallable) {
25
- setShow(true);
26
- }
20
+ if (!isInstallable || shown.current)
21
+ return;
22
+ if (typeof localStorage !== 'undefined' && localStorage.getItem('pwa-install-dismissed'))
23
+ return;
24
+ shown.current = true;
25
+ showNotificationToast({
26
+ title: msgs.title,
27
+ body: msgs.description,
28
+ type: 'info',
29
+ icon: 'download',
30
+ duration,
31
+ action: {
32
+ label: msgs.installLabel,
33
+ onClick: () => {
34
+ void installApp();
35
+ },
36
+ },
37
+ cancel: {
38
+ label: msgs.dismissLabel,
39
+ onClick: () => {
40
+ if (typeof localStorage !== 'undefined') {
41
+ localStorage.setItem('pwa-install-dismissed', 'true');
42
+ }
43
+ },
44
+ },
45
+ });
46
+ // eslint-disable-next-line react-hooks/exhaustive-deps
27
47
  }, [isInstallable]);
28
- const handleInstall = async () => {
29
- const installed = await installApp();
30
- if (installed) {
31
- setShow(false);
32
- }
33
- };
34
- const handleDismiss = () => {
35
- setShow(false);
36
- if (typeof localStorage !== 'undefined') {
37
- localStorage.setItem('pwa-install-dismissed', 'true');
38
- }
39
- };
40
- if (!show || !isInstallable)
41
- return null;
42
- return (_jsxs("div", { className: className ??
43
- 'fixed top-4 right-4 z-50 max-w-sm rounded-lg border bg-background p-4 shadow-lg', children: [_jsx("button", { type: "button", onClick: handleDismiss, className: "absolute right-2 top-2 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100", "aria-label": "Dismiss", children: _jsx(X, { className: "h-4 w-4" }) }), _jsxs("div", { className: "flex items-start gap-3", children: [_jsx(Download, { className: "h-5 w-5 mt-0.5" }), _jsxs("div", { className: "flex-1", children: [_jsx("h3", { className: "font-semibold", children: msgs.title }), _jsx("p", { className: "text-sm text-muted-foreground mt-1", children: msgs.description }), _jsxs("div", { className: "flex gap-2 mt-3", children: [_jsx(ButtonComponent, { onClick: handleInstall, size: "sm", children: msgs.installLabel }), _jsx(ButtonComponent, { onClick: handleDismiss, variant: "outline", size: "sm", children: msgs.dismissLabel })] })] })] })] }));
48
+ return null;
44
49
  }
45
50
  //# sourceMappingURL=install-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-prompt.js","sourceRoot":"","sources":["../../src/components/install-prompt.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-prompt.js","sourceRoot":"","sources":["../../src/components/install-prompt.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAe3C,MAAM,QAAQ,GAAoC;IAChD,KAAK,EAAE,cAAc;IACrB,WAAW,EAAE,2DAA2D;IACxE,YAAY,EAAE,UAAU;IACxB,YAAY,EAAE,UAAU;CACzB,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,KAAyB,EAAE;IACtF,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,CAAA;IACrD,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAA;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAE3B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,OAAO;YAAE,OAAM;QAC3C,IAAI,OAAO,YAAY,KAAK,WAAW,IAAI,YAAY,CAAC,OAAO,CAAC,uBAAuB,CAAC;YAAE,OAAM;QAChG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAA;QAEpB,qBAAqB,CAAC;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,UAAU;YAChB,QAAQ;YACR,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,YAAY;gBACxB,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,UAAU,EAAE,CAAA;gBACnB,CAAC;aACF;YACD,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,YAAY;gBACxB,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;wBACxC,YAAY,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAA;oBACvD,CAAC;gBACH,CAAC;aACF;SACF,CAAC,CAAA;QACF,uDAAuD;IACzD,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;IAEnB,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -1,4 +1,3 @@
1
- import { type ComponentType, type ReactNode } from 'react';
2
1
  export interface NotificationPermissionPromptMessages {
3
2
  title?: string;
4
3
  description?: string;
@@ -9,19 +8,16 @@ export interface NotificationPermissionPromptMessages {
9
8
  blockedDescription?: string;
10
9
  }
11
10
  export interface NotificationPermissionPromptProps {
12
- ButtonComponent?: ComponentType<{
13
- onClick?: () => void;
14
- children?: ReactNode;
15
- variant?: 'default' | 'outline';
16
- size?: 'sm';
17
- className?: string;
18
- }>;
19
11
  messages?: NotificationPermissionPromptMessages;
20
12
  /** Delay before auto-showing the prompt on mount (ms). Default: 2000. */
21
13
  autoShowDelayMs?: number;
22
14
  /** Reload the page after granting to sync state. Default: true. */
23
15
  reloadOnGrant?: boolean;
24
- className?: string;
25
16
  }
26
- export declare function NotificationPermissionPrompt({ ButtonComponent, messages, autoShowDelayMs, reloadOnGrant, className, }?: NotificationPermissionPromptProps): import("react").JSX.Element | null;
17
+ /**
18
+ * Renders through the shared notification toast instead of its own
19
+ * fixed-position banner, so it stacks with every other app notification
20
+ * rather than competing for a corner of the screen.
21
+ */
22
+ export declare function NotificationPermissionPrompt({ messages, autoShowDelayMs, reloadOnGrant, }?: NotificationPermissionPromptProps): null;
27
23
  //# sourceMappingURL=notification-permission-prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification-permission-prompt.d.ts","sourceRoot":"","sources":["../../src/components/notification-permission-prompt.tsx"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAG/E,MAAM,WAAW,oCAAoC;IACnD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,iCAAiC;IAChD,eAAe,CAAC,EAAE,aAAa,CAAC;QAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;QACpB,QAAQ,CAAC,EAAE,SAAS,CAAA;QACpB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;QAC/B,IAAI,CAAC,EAAE,IAAI,CAAA;QACX,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAC,CAAA;IACF,QAAQ,CAAC,EAAE,oCAAoC,CAAA;IAC/C,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mEAAmE;IACnE,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA6CD,wBAAgB,4BAA4B,CAAC,EAC3C,eAA+B,EAC/B,QAAQ,EACR,eAAsB,EACtB,aAAoB,EACpB,SAAS,GACV,GAAE,iCAAsC,sCAmGxC"}
1
+ {"version":3,"file":"notification-permission-prompt.d.ts","sourceRoot":"","sources":["../../src/components/notification-permission-prompt.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,oCAAoC;IACnD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,EAAE,oCAAoC,CAAA;IAC/C,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mEAAmE;IACnE,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAcD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,QAAQ,EACR,eAAsB,EACtB,aAAoB,GACrB,GAAE,iCAAsC,QA2ExC"}
@@ -1,6 +1,5 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Bell, X } from 'lucide-react';
3
- import { useEffect, useState } from 'react';
1
+ import { useEffect, useRef } from 'react';
2
+ import { showNotificationToast } from '@asteby/metacore-notifications';
4
3
  import { toast } from 'sonner';
5
4
  const DEFAULTS = {
6
5
  title: 'Activar Notificaciones',
@@ -11,42 +10,15 @@ const DEFAULTS = {
11
10
  blockedTitle: 'Notificaciones bloqueadas por el navegador',
12
11
  blockedDescription: 'Debes habilitarlas manualmente: Click en el ícono de la barra de direcciones → Permisos → Notificaciones → Permitir',
13
12
  };
14
- function DefaultButton({ onClick, children, variant = 'default', size, className, }) {
15
- const base = 'inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50';
16
- const sizeClass = size === 'sm' ? 'h-8 px-3 text-xs' : 'h-9 px-4';
17
- const variantClass = variant === 'outline'
18
- ? 'border border-input bg-background hover:bg-accent hover:text-accent-foreground'
19
- : 'bg-primary text-primary-foreground hover:bg-primary/90';
20
- return (_jsx("button", { type: "button", onClick: onClick, className: `${base} ${sizeClass} ${variantClass} ${className ?? ''}`, children: children }));
21
- }
22
- export function NotificationPermissionPrompt({ ButtonComponent = DefaultButton, messages, autoShowDelayMs = 2000, reloadOnGrant = true, className, } = {}) {
23
- const [show, setShow] = useState(false);
13
+ /**
14
+ * Renders through the shared notification toast instead of its own
15
+ * fixed-position banner, so it stacks with every other app notification
16
+ * rather than competing for a corner of the screen.
17
+ */
18
+ export function NotificationPermissionPrompt({ messages, autoShowDelayMs = 2000, reloadOnGrant = true, } = {}) {
24
19
  const msgs = { ...DEFAULTS, ...messages };
25
- useEffect(() => {
26
- if (typeof window === 'undefined')
27
- return;
28
- if ('Notification' in window && Notification.permission === 'default') {
29
- const timer = setTimeout(() => setShow(true), autoShowDelayMs);
30
- return () => clearTimeout(timer);
31
- }
32
- return undefined;
33
- }, [autoShowDelayMs]);
34
- useEffect(() => {
35
- if (typeof window === 'undefined')
36
- return;
37
- const handleTrigger = () => {
38
- if (!('Notification' in window))
39
- return;
40
- if (Notification.permission !== 'granted') {
41
- setShow(true);
42
- sessionStorage.removeItem('notification-prompt-dismissed');
43
- }
44
- };
45
- window.addEventListener('show-notification-prompt', handleTrigger);
46
- return () => window.removeEventListener('show-notification-prompt', handleTrigger);
47
- }, []);
20
+ const shownRef = useRef(false);
48
21
  const handleAllow = async () => {
49
- setShow(false);
50
22
  try {
51
23
  const permission = await Notification.requestPermission();
52
24
  if (permission === 'granted') {
@@ -68,17 +40,53 @@ export function NotificationPermissionPrompt({ ButtonComponent = DefaultButton,
68
40
  }
69
41
  };
70
42
  const handleDismiss = () => {
71
- setShow(false);
72
43
  if (typeof sessionStorage !== 'undefined') {
73
44
  sessionStorage.setItem('notification-prompt-dismissed', 'true');
74
45
  }
75
46
  };
76
- if (!show)
77
- return null;
78
- if (typeof sessionStorage !== 'undefined' && sessionStorage.getItem('notification-prompt-dismissed')) {
79
- return null;
80
- }
81
- return (_jsxs("div", { className: className ??
82
- 'fixed top-4 left-4 z-50 max-w-sm rounded-lg border bg-background p-4 shadow-lg animate-in slide-in-from-top-2 duration-500', children: [_jsx("button", { type: "button", onClick: handleDismiss, className: "absolute right-2 top-2 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100", "aria-label": "Dismiss", children: _jsx(X, { className: "h-4 w-4" }) }), _jsxs("div", { className: "flex items-start gap-3", children: [_jsx("div", { className: "p-2 bg-primary/10 rounded-full shrink-0", children: _jsx(Bell, { className: "h-5 w-5 text-primary" }) }), _jsxs("div", { className: "flex-1", children: [_jsx("h3", { className: "font-semibold text-sm", children: msgs.title }), _jsx("p", { className: "text-xs text-muted-foreground mt-1 mb-3 leading-relaxed", children: msgs.description }), _jsxs("div", { className: "flex gap-2", children: [_jsx(ButtonComponent, { onClick: handleAllow, size: "sm", children: msgs.allowLabel }), _jsx(ButtonComponent, { onClick: handleDismiss, variant: "outline", size: "sm", children: msgs.dismissLabel })] })] })] })] }));
47
+ const show = () => {
48
+ if (typeof sessionStorage !== 'undefined' && sessionStorage.getItem('notification-prompt-dismissed')) {
49
+ return;
50
+ }
51
+ showNotificationToast({
52
+ title: msgs.title,
53
+ body: msgs.description,
54
+ type: 'info',
55
+ icon: 'bell',
56
+ duration: 15000,
57
+ action: { label: msgs.allowLabel, onClick: () => void handleAllow() },
58
+ cancel: { label: msgs.dismissLabel, onClick: handleDismiss },
59
+ });
60
+ };
61
+ useEffect(() => {
62
+ if (typeof window === 'undefined')
63
+ return;
64
+ if (!('Notification' in window) || Notification.permission !== 'default')
65
+ return;
66
+ if (shownRef.current)
67
+ return;
68
+ const timer = setTimeout(() => {
69
+ shownRef.current = true;
70
+ show();
71
+ }, autoShowDelayMs);
72
+ return () => clearTimeout(timer);
73
+ // eslint-disable-next-line react-hooks/exhaustive-deps
74
+ }, [autoShowDelayMs]);
75
+ useEffect(() => {
76
+ if (typeof window === 'undefined')
77
+ return;
78
+ const handleTrigger = () => {
79
+ if (!('Notification' in window))
80
+ return;
81
+ if (Notification.permission !== 'granted') {
82
+ sessionStorage.removeItem('notification-prompt-dismissed');
83
+ show();
84
+ }
85
+ };
86
+ window.addEventListener('show-notification-prompt', handleTrigger);
87
+ return () => window.removeEventListener('show-notification-prompt', handleTrigger);
88
+ // eslint-disable-next-line react-hooks/exhaustive-deps
89
+ }, []);
90
+ return null;
83
91
  }
84
92
  //# sourceMappingURL=notification-permission-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification-permission-prompt.js","sourceRoot":"","sources":["../../src/components/notification-permission-prompt.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notification-permission-prompt.js","sourceRoot":"","sources":["../../src/components/notification-permission-prompt.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { type ComponentType, type ReactNode } from 'react';
2
1
  export interface UpdatePromptMessages {
3
2
  title?: string;
4
3
  description?: string;
@@ -6,14 +5,14 @@ export interface UpdatePromptMessages {
6
5
  dismissLabel?: string;
7
6
  }
8
7
  export interface UpdatePromptProps {
9
- ButtonComponent?: ComponentType<{
10
- onClick?: () => void;
11
- children?: ReactNode;
12
- variant?: 'default' | 'outline';
13
- size?: 'sm';
14
- }>;
15
8
  messages?: UpdatePromptMessages;
16
- className?: string;
9
+ /** How long the toast stays before auto-dismissing (ms). Default: 0 (sticky). */
10
+ duration?: number;
17
11
  }
18
- export declare function PWAUpdatePrompt({ ButtonComponent, messages, className, }?: UpdatePromptProps): import("react").JSX.Element | null;
12
+ /**
13
+ * Renders through the shared notification toast instead of its own
14
+ * fixed-position banner, so it stacks with every other app notification
15
+ * rather than competing for a corner of the screen.
16
+ */
17
+ export declare function PWAUpdatePrompt({ messages, duration }?: UpdatePromptProps): null;
19
18
  //# sourceMappingURL=update-prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-prompt.d.ts","sourceRoot":"","sources":["../../src/components/update-prompt.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAG1D,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,CAAC,EAAE,aAAa,CAAC;QAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;QACpB,QAAQ,CAAC,EAAE,SAAS,CAAA;QACpB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;QAC/B,IAAI,CAAC,EAAE,IAAI,CAAA;KACZ,CAAC,CAAA;IACF,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAkCD,wBAAgB,eAAe,CAAC,EAC9B,eAA+B,EAC/B,QAAQ,EACR,SAAS,GACV,GAAE,iBAAsB,sCAsCxB"}
1
+ {"version":3,"file":"update-prompt.d.ts","sourceRoot":"","sources":["../../src/components/update-prompt.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IAC/B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AASD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,QAAY,EAAE,GAAE,iBAAsB,QA4BjF"}
@@ -1,6 +1,5 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { RefreshCw, X } from 'lucide-react';
3
- import {} from 'react';
1
+ import { useEffect, useRef } from 'react';
2
+ import { showNotificationToast } from '@asteby/metacore-notifications';
4
3
  import { usePWAContext } from '../provider';
5
4
  const DEFAULTS = {
6
5
  title: 'Actualización disponible',
@@ -8,20 +7,36 @@ const DEFAULTS = {
8
7
  updateLabel: 'Actualizar',
9
8
  dismissLabel: 'Después',
10
9
  };
11
- function DefaultButton({ onClick, children, variant = 'default', size, }) {
12
- const base = 'inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50';
13
- const sizeClass = size === 'sm' ? 'h-8 px-3' : 'h-9 px-4';
14
- const variantClass = variant === 'outline'
15
- ? 'border border-input bg-background hover:bg-accent hover:text-accent-foreground'
16
- : 'bg-primary text-primary-foreground hover:bg-primary/90';
17
- return (_jsx("button", { type: "button", onClick: onClick, className: `${base} ${sizeClass} ${variantClass}`, children: children }));
18
- }
19
- export function PWAUpdatePrompt({ ButtonComponent = DefaultButton, messages, className, } = {}) {
10
+ /**
11
+ * Renders through the shared notification toast instead of its own
12
+ * fixed-position banner, so it stacks with every other app notification
13
+ * rather than competing for a corner of the screen.
14
+ */
15
+ export function PWAUpdatePrompt({ messages, duration = 0 } = {}) {
20
16
  const { needRefresh, updateApp, closeUpdatePrompt } = usePWAContext();
21
17
  const msgs = { ...DEFAULTS, ...messages };
22
- if (!needRefresh)
23
- return null;
24
- return (_jsxs("div", { className: className ??
25
- 'fixed bottom-4 left-4 z-50 max-w-sm rounded-lg border bg-background p-4 shadow-lg', children: [_jsx("button", { type: "button", onClick: closeUpdatePrompt, className: "absolute right-2 top-2 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100", "aria-label": "Dismiss", children: _jsx(X, { className: "h-4 w-4" }) }), _jsxs("div", { className: "flex items-start gap-3", children: [_jsx(RefreshCw, { className: "h-5 w-5 mt-0.5" }), _jsxs("div", { className: "flex-1", children: [_jsx("h3", { className: "font-semibold", children: msgs.title }), _jsx("p", { className: "text-sm text-muted-foreground mt-1", children: msgs.description }), _jsxs("div", { className: "flex gap-2 mt-3", children: [_jsx(ButtonComponent, { onClick: updateApp, size: "sm", children: msgs.updateLabel }), _jsx(ButtonComponent, { onClick: closeUpdatePrompt, variant: "outline", size: "sm", children: msgs.dismissLabel })] })] })] })] }));
18
+ const shown = useRef(false);
19
+ useEffect(() => {
20
+ if (!needRefresh || shown.current)
21
+ return;
22
+ shown.current = true;
23
+ showNotificationToast({
24
+ title: msgs.title,
25
+ body: msgs.description,
26
+ type: 'info',
27
+ icon: 'refresh-cw',
28
+ duration: duration || Infinity,
29
+ action: {
30
+ label: msgs.updateLabel,
31
+ onClick: updateApp,
32
+ },
33
+ cancel: {
34
+ label: msgs.dismissLabel,
35
+ onClick: closeUpdatePrompt,
36
+ },
37
+ });
38
+ // eslint-disable-next-line react-hooks/exhaustive-deps
39
+ }, [needRefresh]);
40
+ return null;
26
41
  }
27
42
  //# sourceMappingURL=update-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-prompt.js","sourceRoot":"","sources":["../../src/components/update-prompt.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAsC,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAoB3C,MAAM,QAAQ,GAAmC;IAC/C,KAAK,EAAE,0BAA0B;IACjC,WAAW,EAAE,kCAAkC;IAC/C,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,SAAS;CACxB,CAAA;AAED,SAAS,aAAa,CAAC,EACrB,OAAO,EACP,QAAQ,EACR,OAAO,GAAG,SAAS,EACnB,IAAI,GAML;IACC,MAAM,IAAI,GACR,2LAA2L,CAAA;IAC7L,MAAM,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;IACzD,MAAM,YAAY,GAChB,OAAO,KAAK,SAAS;QACnB,CAAC,CAAC,gFAAgF;QAClF,CAAC,CAAC,wDAAwD,CAAA;IAC9D,OAAO,CACL,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,IAAI,SAAS,IAAI,YAAY,EAAE,YACtF,QAAQ,GACF,CACV,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAC9B,eAAe,GAAG,aAAa,EAC/B,QAAQ,EACR,SAAS,MACY,EAAE;IACvB,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,aAAa,EAAE,CAAA;IACrE,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAA;IAEzC,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAA;IAE7B,OAAO,CACL,eACE,SAAS,EACP,SAAS;YACT,mFAAmF,aAGrF,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAC,0GAA0G,gBACzG,SAAS,YAEpB,KAAC,CAAC,IAAC,SAAS,EAAC,SAAS,GAAG,GAClB,EACT,eAAK,SAAS,EAAC,wBAAwB,aACrC,KAAC,SAAS,IAAC,SAAS,EAAC,gBAAgB,GAAG,EACxC,eAAK,SAAS,EAAC,QAAQ,aACrB,aAAI,SAAS,EAAC,eAAe,YAAE,IAAI,CAAC,KAAK,GAAM,EAC/C,YAAG,SAAS,EAAC,oCAAoC,YAAE,IAAI,CAAC,WAAW,GAAK,EACxE,eAAK,SAAS,EAAC,iBAAiB,aAC9B,KAAC,eAAe,IAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAC,IAAI,YAC3C,IAAI,CAAC,WAAW,GACD,EAClB,KAAC,eAAe,IAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,YACrE,IAAI,CAAC,YAAY,GACF,IACd,IACF,IACF,IACF,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"update-prompt.js","sourceRoot":"","sources":["../../src/components/update-prompt.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAe3C,MAAM,QAAQ,GAAmC;IAC/C,KAAK,EAAE,0BAA0B;IACjC,WAAW,EAAE,kCAAkC;IAC/C,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,SAAS;CACxB,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,CAAC,KAAwB,EAAE;IAChF,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,aAAa,EAAE,CAAA;IACrE,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAA;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAE3B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO;YAAE,OAAM;QACzC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAA;QAEpB,qBAAqB,CAAC;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,QAAQ,IAAI,QAAQ;YAC9B,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,WAAW;gBACvB,OAAO,EAAE,SAAS;aACnB;YACD,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,YAAY;gBACxB,OAAO,EAAE,iBAAiB;aAC3B;SACF,CAAC,CAAA;QACF,uDAAuD;IACzD,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAGd,OAAO,EAA2B,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAErG,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,OAAO,CAAA;IACtB,WAAW,EAAE,OAAO,CAAA;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAClC,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACvC,mBAAmB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3C,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C;AAID,2DAA2D;AAC3D,UAAU,wBAAyB,SAAQ,KAAK;IAC9C,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,UAAU,EAAE,OAAO,CAAC;QAAE,OAAO,EAAE,UAAU,GAAG,WAAW,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC7E;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,cAAc,EAAE,wBAAwB,GAAG,IAAI,CAAA;KAChD;CACF;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAYD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,CAAA;IACnB;;;OAGG;IACH,GAAG,CAAC,EAAE,aAAa,CAAA;IACnB,oCAAoC;IACpC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,mBAAmB,CAAA;IAC9B,qFAAqF;IACrF,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,yBAAyB,GAAG,SAAS,KAAK,IAAI,CAAA;IAC5E,yCAAyC;IACzC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CAC3C;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,GAAG,EACH,WAAW,EACX,QAAQ,EACR,qBAAsC,EACtC,sBAA6B,EAC7B,YAAY,EACZ,eAAe,GAChB,EAAE,gBAAgB,+BAgRlB;AAED,wBAAgB,aAAa,IAAI,eAAe,CAM/C"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAGd,OAAO,EAA2B,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAErG,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,OAAO,CAAA;IACtB,WAAW,EAAE,OAAO,CAAA;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAClC,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACvC,mBAAmB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3C,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C;AAID,2DAA2D;AAC3D,UAAU,wBAAyB,SAAQ,KAAK;IAC9C,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,UAAU,EAAE,OAAO,CAAC;QAAE,OAAO,EAAE,UAAU,GAAG,WAAW,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC7E;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,cAAc,EAAE,wBAAwB,GAAG,IAAI,CAAA;KAChD;CACF;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAYD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,SAAS,CAAA;IACnB;;;OAGG;IACH,GAAG,CAAC,EAAE,aAAa,CAAA;IACnB,oCAAoC;IACpC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,mBAAmB,CAAA;IAC9B,qFAAqF;IACrF,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,yBAAyB,GAAG,SAAS,KAAK,IAAI,CAAA;IAC5E,yCAAyC;IACzC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CAC3C;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,GAAG,EACH,WAAW,EACX,QAAQ,EACR,qBAAsC,EACtC,sBAA6B,EAC7B,YAAY,EACZ,eAAe,GAChB,EAAE,gBAAgB,+BA0SlB;AAED,wBAAgB,aAAa,IAAI,eAAe,CAM/C"}
package/dist/provider.js CHANGED
@@ -60,7 +60,7 @@ export function PWAProvider({ children, api, pushOptions, messages, updateCheckI
60
60
  // receives background/mobile push because nothing ever created the
61
61
  // PushSubscription the server sends to.
62
62
  if (autoSubscribeOnGranted && !subscribed && pushService.getSupported() && hasPermission()) {
63
- subscribed = await pushService.subscribe();
63
+ subscribed = await pushService.subscribe({ silent: true, allowPrompt: false });
64
64
  }
65
65
  if (!cancelled)
66
66
  setIsPushSubscribed(subscribed);
@@ -75,17 +75,46 @@ export function PWAProvider({ children, api, pushOptions, messages, updateCheckI
75
75
  if (cancelled)
76
76
  return;
77
77
  if (hasPermission() && !pushService.isSubscribed()) {
78
- void pushService.subscribe().then((ok) => {
78
+ void pushService.subscribe({ silent: true, allowPrompt: false }).then((ok) => {
79
79
  if (!cancelled)
80
80
  setIsPushSubscribed(ok);
81
81
  });
82
82
  }
83
83
  }, 3000);
84
84
  }
85
+ // Re-validate the subscription whenever the user returns to the app (tab
86
+ // visible / window focus). Web Push subscriptions silently expire/rotate
87
+ // after a while (e.g. hours idle); on return we re-POST/re-create so push
88
+ // keeps working without forcing a full reload. Silent + re-POST reactivates
89
+ // a server-side row that was deactivated after an expired-endpoint send.
90
+ const onVisible = () => {
91
+ if (cancelled || !autoSubscribeOnGranted)
92
+ return;
93
+ if (typeof document !== 'undefined' && document.visibilityState !== 'visible')
94
+ return;
95
+ if (!pushService.getSupported() || !hasPermission())
96
+ return;
97
+ void pushService.subscribe({ silent: true, allowPrompt: false }).then((ok) => {
98
+ if (!cancelled)
99
+ setIsPushSubscribed(ok);
100
+ });
101
+ };
102
+ if (typeof document !== 'undefined') {
103
+ document.addEventListener('visibilitychange', onVisible);
104
+ }
105
+ if (typeof window !== 'undefined') {
106
+ window.addEventListener('focus', onVisible);
107
+ }
85
108
  return () => {
86
109
  cancelled = true;
87
110
  if (poll)
88
111
  clearInterval(poll);
112
+ if (typeof document !== 'undefined') {
113
+ document.removeEventListener('visibilitychange', onVisible);
114
+ }
115
+ if (typeof window !== 'undefined') {
116
+ window.removeEventListener('focus', onVisible);
117
+ }
89
118
  };
90
119
  }, [autoSubscribeOnGranted]);
91
120
  useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
@@ -24,7 +24,30 @@ export declare class PushNotificationService {
24
24
  private readonly opts;
25
25
  constructor(api: PushApiClient, options?: PushServiceOptions);
26
26
  init(): Promise<void>;
27
- subscribe(): Promise<boolean>;
27
+ /**
28
+ * Subscribe to Web Push and register the subscription with the backend.
29
+ *
30
+ * Robust against the two ways this used to fail in production:
31
+ * - A stale/rotated subscription (or one created under a different
32
+ * applicationServerKey / legacy gcm_sender_id) makes pushManager.subscribe
33
+ * throw "A subscription with a different applicationServerKey already
34
+ * exists" → surfaced as "Error al activar notificaciones push". We now drop
35
+ * any existing subscription whose key doesn't match and re-subscribe.
36
+ * - Push silently dying after the subscription expires: we always re-POST to
37
+ * the backend (re-activating the server-side row) and re-create the
38
+ * subscription when it's missing, so returning to the app restores it.
39
+ *
40
+ * @param opts.silent suppress toasts (auto/background refresh paths)
41
+ * @param opts.allowPrompt may call Notification.requestPermission() (true for
42
+ * user-initiated; false for auto paths so we never
43
+ * prompt unexpectedly)
44
+ */
45
+ subscribe(opts?: {
46
+ silent?: boolean;
47
+ allowPrompt?: boolean;
48
+ }): Promise<boolean>;
49
+ /** True if the existing subscription's applicationServerKey equals `appKey`. */
50
+ private keyMatches;
28
51
  unsubscribe(): Promise<boolean>;
29
52
  testNotification(): Promise<void>;
30
53
  isSubscribed(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"push-service.d.ts","sourceRoot":"","sources":["../src/push-service.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAA;IACvD,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAA;CACzE;AAWD,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA8B;gBAEvC,GAAG,EAAE,aAAa,EAAE,OAAO,GAAE,kBAAuB;IAe1D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BrB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IA+C7B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAuB/B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWvC,YAAY,IAAI,OAAO;IAIvB,YAAY,IAAI,OAAO;IAIvB,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,gBAAgB;CAczB"}
1
+ {"version":3,"file":"push-service.d.ts","sourceRoot":"","sources":["../src/push-service.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAA;IACvD,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAA;CACzE;AAWD,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA8B;gBAEvC,GAAG,EAAE,aAAa,EAAE,OAAO,GAAE,kBAAuB;IAe1D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B3B;;;;;;;;;;;;;;;;;OAiBG;IACG,SAAS,CAAC,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAuEzF,gFAAgF;IAChF,OAAO,CAAC,UAAU;IAWZ,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAuB/B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWvC,YAAY,IAAI,OAAO;IAIvB,YAAY,IAAI,OAAO;IAIvB,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,gBAAgB;CAczB"}
@@ -45,30 +45,73 @@ export class PushNotificationService {
45
45
  console.error('Failed to initialize push service:', error);
46
46
  }
47
47
  }
48
- async subscribe() {
49
- if (!this.isSupportedFlag) {
50
- toast.error('Tu navegador no soporta notificaciones push');
48
+ /**
49
+ * Subscribe to Web Push and register the subscription with the backend.
50
+ *
51
+ * Robust against the two ways this used to fail in production:
52
+ * - A stale/rotated subscription (or one created under a different
53
+ * applicationServerKey / legacy gcm_sender_id) makes pushManager.subscribe
54
+ * throw "A subscription with a different applicationServerKey already
55
+ * exists" → surfaced as "Error al activar notificaciones push". We now drop
56
+ * any existing subscription whose key doesn't match and re-subscribe.
57
+ * - Push silently dying after the subscription expires: we always re-POST to
58
+ * the backend (re-activating the server-side row) and re-create the
59
+ * subscription when it's missing, so returning to the app restores it.
60
+ *
61
+ * @param opts.silent suppress toasts (auto/background refresh paths)
62
+ * @param opts.allowPrompt may call Notification.requestPermission() (true for
63
+ * user-initiated; false for auto paths so we never
64
+ * prompt unexpectedly)
65
+ */
66
+ async subscribe(opts = {}) {
67
+ const { silent = false, allowPrompt = true } = opts;
68
+ const fail = (msg) => {
69
+ if (!silent)
70
+ toast.error(msg);
51
71
  return false;
72
+ };
73
+ if (!this.isSupportedFlag) {
74
+ return fail('Tu navegador no soporta notificaciones push');
52
75
  }
53
76
  if (!this.vapidPublicKey) {
54
77
  await this.init();
55
78
  if (!this.vapidPublicKey) {
56
- toast.error('No se pudo obtener la clave del servidor');
57
- return false;
79
+ return fail('No se pudo obtener la clave del servidor');
58
80
  }
59
81
  }
60
82
  try {
61
- const permission = await Notification.requestPermission();
62
- if (permission !== 'granted') {
63
- toast.error('Permiso de notificaciones denegado');
64
- return false;
83
+ if (Notification.permission !== 'granted') {
84
+ if (!allowPrompt)
85
+ return false; // auto path: never prompt
86
+ const permission = await Notification.requestPermission();
87
+ if (permission !== 'granted') {
88
+ return fail('Permiso de notificaciones denegado');
89
+ }
65
90
  }
91
+ const appKey = this.urlBase64ToUint8Array(this.vapidPublicKey);
66
92
  const registration = await navigator.serviceWorker.ready;
67
- const subscription = await registration.pushManager.subscribe({
68
- userVisibleOnly: true,
69
- applicationServerKey: this.urlBase64ToUint8Array(this.vapidPublicKey),
70
- });
93
+ // Reuse an existing subscription only if it was created with the SAME
94
+ // VAPID key; otherwise drop it (rotated key / legacy gcm_sender_id) so the
95
+ // subscribe below doesn't throw.
96
+ let subscription = await registration.pushManager.getSubscription();
97
+ if (subscription && !this.keyMatches(subscription, appKey)) {
98
+ try {
99
+ await subscription.unsubscribe();
100
+ }
101
+ catch {
102
+ /* ignore — we'll try to subscribe fresh anyway */
103
+ }
104
+ subscription = null;
105
+ }
106
+ if (!subscription) {
107
+ subscription = await registration.pushManager.subscribe({
108
+ userVisibleOnly: true,
109
+ applicationServerKey: appKey,
110
+ });
111
+ }
71
112
  this.subscription = subscription;
113
+ // Always (re-)register with the backend so an expired/deactivated row is
114
+ // reactivated when the user comes back.
72
115
  const keys = subscription.toJSON().keys;
73
116
  await this.api.post(this.opts.subscribePath, {
74
117
  endpoint: subscription.endpoint,
@@ -76,15 +119,29 @@ export class PushNotificationService {
76
119
  auth: keys.auth,
77
120
  device_type: this.detectDeviceType(),
78
121
  });
79
- toast.success('Notificaciones push activadas');
122
+ if (!silent)
123
+ toast.success('Notificaciones push activadas');
80
124
  return true;
81
125
  }
82
126
  catch (error) {
83
127
  // eslint-disable-next-line no-console
84
128
  console.error('Failed to subscribe to push:', error);
85
- toast.error('Error al activar notificaciones push');
129
+ return fail('Error al activar notificaciones push');
130
+ }
131
+ }
132
+ /** True if the existing subscription's applicationServerKey equals `appKey`. */
133
+ keyMatches(subscription, appKey) {
134
+ const existing = subscription.options?.applicationServerKey;
135
+ if (!existing)
136
+ return false; // legacy sub (no VAPID key) → treat as mismatch
137
+ const a = new Uint8Array(existing);
138
+ if (a.length !== appKey.length)
86
139
  return false;
140
+ for (let i = 0; i < a.length; i++) {
141
+ if (a[i] !== appKey[i])
142
+ return false;
87
143
  }
144
+ return true;
88
145
  }
89
146
  async unsubscribe() {
90
147
  if (!this.subscription) {
@@ -1 +1 @@
1
- {"version":3,"file":"push-service.js","sourceRoot":"","sources":["../src/push-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push-service.js","sourceRoot":"","sources":["../src/push-service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asteby/metacore-pwa",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Metacore PWA helpers — vite plugin wrapper, install/update prompts, push notifications, offline indicator",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -48,7 +48,8 @@
48
48
  "vite-plugin-pwa": ">=1"
49
49
  },
50
50
  "dependencies": {
51
- "lucide-react": "^1.0.0"
51
+ "lucide-react": "^1.0.0",
52
+ "@asteby/metacore-notifications": "25.0.1"
52
53
  },
53
54
  "devDependencies": {
54
55
  "@types/react": "^19.0.0",