@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.
- package/dist/components/install-prompt.d.ts +8 -10
- package/dist/components/install-prompt.d.ts.map +1 -1
- package/dist/components/install-prompt.js +37 -32
- package/dist/components/install-prompt.js.map +1 -1
- package/dist/components/notification-permission-prompt.d.ts +6 -10
- package/dist/components/notification-permission-prompt.d.ts.map +1 -1
- package/dist/components/notification-permission-prompt.js +53 -45
- package/dist/components/notification-permission-prompt.js.map +1 -1
- package/dist/components/update-prompt.d.ts +8 -9
- package/dist/components/update-prompt.d.ts.map +1 -1
- package/dist/components/update-prompt.js +31 -16
- package/dist/components/update-prompt.js.map +1 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +31 -2
- package/dist/provider.js.map +1 -1
- package/dist/push-service.d.ts +24 -1
- package/dist/push-service.d.ts.map +1 -1
- package/dist/push-service.js +72 -15
- package/dist/push-service.js.map +1 -1
- package/package.json +3 -2
|
@@ -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
|
-
|
|
9
|
+
/** How long the toast stays before auto-dismissing (ms). Default: 10000. */
|
|
10
|
+
duration?: number;
|
|
18
11
|
}
|
|
19
|
-
|
|
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":"
|
|
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 {
|
|
2
|
-
import {
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"
|
|
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
|
-
|
|
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":"
|
|
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 {
|
|
2
|
-
import {
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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":"
|
|
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
|
-
|
|
9
|
+
/** How long the toast stays before auto-dismissing (ms). Default: 0 (sticky). */
|
|
10
|
+
duration?: number;
|
|
17
11
|
}
|
|
18
|
-
|
|
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":"
|
|
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 {
|
|
2
|
-
import {
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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":"
|
|
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"}
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -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,+
|
|
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(() => {
|
package/dist/provider.js.map
CHANGED
|
@@ -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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"}
|
package/dist/push-service.d.ts
CHANGED
|
@@ -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
|
-
|
|
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;
|
|
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"}
|
package/dist/push-service.js
CHANGED
|
@@ -45,30 +45,73 @@ export class PushNotificationService {
|
|
|
45
45
|
console.error('Failed to initialize push service:', error);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
57
|
-
return false;
|
|
79
|
+
return fail('No se pudo obtener la clave del servidor');
|
|
58
80
|
}
|
|
59
81
|
}
|
|
60
82
|
try {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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) {
|
package/dist/push-service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push-service.js","sourceRoot":"","sources":["../src/push-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AA2B9B,MAAM,OAAO,uBAAuB;IAC1B,cAAc,GAAkB,IAAI,CAAA;IACpC,YAAY,GAA4B,IAAI,CAAA;IACnC,eAAe,CAAS;IACxB,GAAG,CAAe;IAClB,IAAI,CAA8B;IAEnD,YAAY,GAAkB,EAAE,UAA8B,EAAE;QAC9D,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,IAAI,GAAG;YACV,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,kBAAkB;YAC1D,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,iBAAiB;YACzD,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,mBAAmB;YAC/D,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,YAAY;SAC3C,CAAA;QACD,IAAI,CAAC,eAAe;YAClB,OAAO,SAAS,KAAK,WAAW;gBAChC,eAAe,IAAI,SAAS;gBAC5B,OAAO,MAAM,KAAK,WAAW;gBAC7B,aAAa,IAAI,MAAM,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;YAC/C,OAAM;QACR,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAoB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YAC/E,IAAI,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAA;YAC/C,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,KAAK,CAAA;YACxD,IAAI,CAAC,YAAY,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,eAAe,EAAE,CAAA;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sEAAsE;YACtE,qEAAqE;YACrE,mEAAmE;YACnE,0BAA0B;YAC1B,MAAM,MAAM,GAAI,KAA4C,EAAE,QAAQ,EAAE,MAAM,CAAA;YAC9E,IAAI,MAAM,KAAK,GAAG;gBAAE,OAAM;YAC1B,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS;
|
|
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.
|
|
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",
|