From da9ec5eb16298d8ca5690800eca1c15f5a6cfaa5 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Fri, 14 Oct 2022 11:40:38 -0300 Subject: refactored terms of service to remove duplicated code prettfied some sources --- .../taler-wallet-webextension/src/utils/index.ts | 133 ++------------------- 1 file changed, 7 insertions(+), 126 deletions(-) (limited to 'packages/taler-wallet-webextension/src/utils') diff --git a/packages/taler-wallet-webextension/src/utils/index.ts b/packages/taler-wallet-webextension/src/utils/index.ts index 3535910cf..2323c7b21 100644 --- a/packages/taler-wallet-webextension/src/utils/index.ts +++ b/packages/taler-wallet-webextension/src/utils/index.ts @@ -14,12 +14,7 @@ GNU Taler; see the file COPYING. If not, see */ -import { - AmountJson, - Amounts, - GetExchangeTosResult, -} from "@gnu-taler/taler-util"; -import { VNode, createElement } from "preact"; +import { createElement, VNode } from "preact"; function getJsonIfOk(r: Response): Promise { if (r.ok) { @@ -31,7 +26,8 @@ function getJsonIfOk(r: Response): Promise { } throw new Error( - `Try another server: (${r.status}) ${r.statusText || "internal server error" + `Try another server: (${r.status}) ${ + r.statusText || "internal server error" }`, ); } @@ -78,140 +74,25 @@ export async function queryToSlashKeys(url: string): Promise { return timeout(3000, query); } -export function buildTermsOfServiceState( - tos: GetExchangeTosResult, -): TermsState { - const content: TermsDocument | undefined = parseTermsOfServiceContent( - tos.contentType, - tos.content, - ); - - const status: TermsStatus = buildTermsOfServiceStatus( - tos.content, - tos.acceptedEtag, - tos.currentEtag, - ); - - return { content, status, version: tos.currentEtag }; -} -export function buildTermsOfServiceStatus( - content: string | undefined, - acceptedVersion: string | undefined, - currentVersion: string | undefined, -): TermsStatus { - return !content - ? "notfound" - : !acceptedVersion - ? "new" - : acceptedVersion !== currentVersion - ? "changed" - : "accepted"; -} - -function parseTermsOfServiceContent( - type: string, - text: string, -): TermsDocument | undefined { - if (type === "text/xml") { - try { - const document = new DOMParser().parseFromString(text, "text/xml"); - return { type: "xml", document }; - } catch (e) { - console.log(e); - } - } else if (type === "text/html") { - try { - const href = new URL(text); - return { type: "html", href }; - } catch (e) { - console.log(e); - } - } else if (type === "text/json") { - try { - const data = JSON.parse(text); - return { type: "json", data }; - } catch (e) { - console.log(e); - } - } else if (type === "text/pdf") { - try { - const location = new URL(text); - return { type: "pdf", location }; - } catch (e) { - console.log(e); - } - } else if (type === "text/plain") { - try { - const content = text; - return { type: "plain", content }; - } catch (e) { - console.log(e); - } - } - return undefined; -} - -export type TermsState = { - content: TermsDocument | undefined; - status: TermsStatus; - version: string; -}; - -type TermsStatus = "new" | "accepted" | "changed" | "notfound"; - -type TermsDocument = - | TermsDocumentXml - | TermsDocumentHtml - | TermsDocumentPlain - | TermsDocumentJson - | TermsDocumentPdf; - -export interface TermsDocumentXml { - type: "xml"; - document: Document; -} - -export interface TermsDocumentHtml { - type: "html"; - href: URL; -} - -export interface TermsDocumentPlain { - type: "plain"; - content: string; -} - -export interface TermsDocumentJson { - type: "json"; - data: any; -} - -export interface TermsDocumentPdf { - type: "pdf"; - location: URL; -} - export type StateFunc = (p: S) => VNode; export type StateViewMap = { [S in StateType as S["status"]]: StateFunc; }; -type RecursiveState = S | (() => RecursiveState) +type RecursiveState = S | (() => RecursiveState); export function compose( name: string, hook: (p: PType) => RecursiveState, viewMap: StateViewMap, ): (p: PType) => VNode { - function withHook(stateHook: () => RecursiveState): () => VNode { - function TheComponent(): VNode { const state = stateHook(); if (typeof state === "function") { - const subComponent = withHook(state) + const subComponent = withHook(state); return createElement(subComponent, {}); } @@ -225,7 +106,7 @@ export function compose( } return (p: PType) => { - const h = withHook(() => hook(p)) - return h() + const h = withHook(() => hook(p)); + return h(); }; } -- cgit v1.2.3