1 | import { ProblemDetails } from "./ProblemDetails.js" |
2 | |
3 | /** |
4 | * Muestra un error en la consola y en un cuadro de |
5 | * alerta el mensaje de una excepción. |
6 | * @param { ProblemDetails | Error | null } error descripción del error. |
7 | */ |
8 | export function muestraError(error) { |
9 | |
10 | if (error === null) { |
11 | |
12 | console.log("Error") |
13 | alert("Error") |
14 | |
15 | } else if (error instanceof ProblemDetails) { |
16 | |
17 | let mensaje = error.title |
18 | if (error.detail) { |
19 | mensaje += `\n\n${error.detail}` |
20 | } |
21 | mensaje += `\n\nCódigo: ${error.status}` |
22 | if (error.type) { |
23 | mensaje += ` ${error.type}` |
24 | } |
25 | |
26 | console.error(mensaje) |
27 | console.error(error) |
28 | console.error("Headers:") |
29 | error.headers.forEach((valor, llave) => console.error(llave, "=", valor)) |
30 | alert(mensaje) |
31 | |
32 | } else { |
33 | |
34 | console.error(error) |
35 | alert(error.message) |
36 | |
37 | } |
38 | |
39 | } |
40 | |
41 | // Permite que los eventos de html usen la función. |
42 | window["muestraError"] = muestraError |
1 | /** Detalle de los errores devueltos por un servicio. */ |
2 | export class ProblemDetails extends Error { |
3 | |
4 | /** |
5 | * @param {number} status |
6 | * @param {Headers} headers |
7 | * @param {string} title |
8 | * @param {string} [type] |
9 | * @param {string} [detail] |
10 | */ |
11 | constructor(status, headers, title, type, detail) { |
12 | super(title) |
13 | /** @readonly */ |
14 | this.status = status |
15 | /** @readonly */ |
16 | this.headers = headers |
17 | /** @readonly */ |
18 | this.type = type |
19 | /** @readonly */ |
20 | this.detail = detail |
21 | /** @readonly */ |
22 | this.title = title |
23 | } |
24 | |
25 | } |
1 | import { muestraError } from "./muestraError.js" |
2 | |
3 | /** |
4 | * @param { string | URL } urlDeServiceWorker |
5 | */ |
6 | export async function registraServiceWorkerSiEsSoportado(urlDeServiceWorker) { |
7 | try { |
8 | if ("serviceWorker" in navigator) { |
9 | const registro = await navigator.serviceWorker.register(urlDeServiceWorker) |
10 | console.log(urlDeServiceWorker, "registrado.") |
11 | console.log(registro) |
12 | } |
13 | } catch (error) { |
14 | muestraError(error) |
15 | } |
16 | } |