From 829a59e1a24d6a99ce7554d28acfd05f21baeaf8 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 22 Nov 2021 17:34:27 -0300 Subject: add exchange feature --- .../src/NavigationBar.tsx | 1 + .../src/components/CheckboxOutlined.tsx | 8 +- .../src/components/styled/index.tsx | 11 + .../src/cta/TermsOfServiceSection.tsx | 129 ++++ .../src/cta/Withdraw.stories.tsx | 792 +-------------------- .../taler-wallet-webextension/src/cta/Withdraw.tsx | 255 ++----- .../src/cta/termsExample.ts | 781 ++++++++++++++++++++ .../src/popup/BalancePage.tsx | 5 + .../src/popup/Settings.stories.tsx | 7 +- .../src/popup/Settings.tsx | 82 +-- .../src/popupEntryPoint.tsx | 10 + .../taler-wallet-webextension/src/utils/index.ts | 162 +++++ .../src/wallet/BalancePage.tsx | 17 +- .../src/wallet/CreateManualWithdraw.tsx | 28 +- .../src/wallet/ExchangeAddConfirm.stories.tsx | 67 ++ .../src/wallet/ExchangeAddConfirm.tsx | 152 ++++ .../src/wallet/ExchangeAddPage.tsx | 75 ++ .../src/wallet/ExchangeAddSetUrl.stories.tsx | 62 ++ .../src/wallet/ExchangeSetUrl.tsx | 130 ++++ .../src/wallet/ProviderAddPage.tsx | 31 +- .../src/wallet/ReserveCreated.tsx | 5 +- .../src/wallet/Settings.tsx | 5 +- .../src/walletEntryPoint.tsx | 9 + 23 files changed, 1700 insertions(+), 1124 deletions(-) create mode 100644 packages/taler-wallet-webextension/src/cta/TermsOfServiceSection.tsx create mode 100644 packages/taler-wallet-webextension/src/cta/termsExample.ts create mode 100644 packages/taler-wallet-webextension/src/utils/index.ts create mode 100644 packages/taler-wallet-webextension/src/wallet/ExchangeAddConfirm.stories.tsx create mode 100644 packages/taler-wallet-webextension/src/wallet/ExchangeAddConfirm.tsx create mode 100644 packages/taler-wallet-webextension/src/wallet/ExchangeAddPage.tsx create mode 100644 packages/taler-wallet-webextension/src/wallet/ExchangeAddSetUrl.stories.tsx create mode 100644 packages/taler-wallet-webextension/src/wallet/ExchangeSetUrl.tsx diff --git a/packages/taler-wallet-webextension/src/NavigationBar.tsx b/packages/taler-wallet-webextension/src/NavigationBar.tsx index 56704fb57..8dc73efdb 100644 --- a/packages/taler-wallet-webextension/src/NavigationBar.tsx +++ b/packages/taler-wallet-webextension/src/NavigationBar.tsx @@ -42,6 +42,7 @@ export enum Pages { transaction = "/transaction/:tid", provider_detail = "/provider/:pid", provider_add = "/provider/add", + exchange_add = "/exchange/add", reset_required = "/reset-required", payback = "/payback", diff --git a/packages/taler-wallet-webextension/src/components/CheckboxOutlined.tsx b/packages/taler-wallet-webextension/src/components/CheckboxOutlined.tsx index 3b9519f39..c22103a85 100644 --- a/packages/taler-wallet-webextension/src/components/CheckboxOutlined.tsx +++ b/packages/taler-wallet-webextension/src/components/CheckboxOutlined.tsx @@ -48,8 +48,8 @@ export function CheckboxOutlined({ label, }: Props): VNode { return ( - - + + - - + + ); } diff --git a/packages/taler-wallet-webextension/src/components/styled/index.tsx b/packages/taler-wallet-webextension/src/components/styled/index.tsx index b2ca13801..7cef8789b 100644 --- a/packages/taler-wallet-webextension/src/components/styled/index.tsx +++ b/packages/taler-wallet-webextension/src/components/styled/index.tsx @@ -476,6 +476,14 @@ const ButtonVariant = styled(Button)` text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); `; +export const LinkDestructive = styled(Link)` + background-color: rgb(202, 60, 60); +`; + +export const LinkPrimary = styled(Link)` + color: rgb(66, 184, 221); +`; + export const ButtonPrimary = styled(ButtonVariant)<{ small?: boolean }>` font-size: ${({ small }) => (small ? "small" : "inherit")}; background-color: rgb(66, 184, 221); @@ -892,12 +900,14 @@ export const StyledCheckboxLabel = styled.div` text-transform: uppercase; /* font-weight: bold; */ text-align: center; + cursor: pointer; span { input { display: none; opacity: 0; width: 1em; height: 1em; + cursor: pointer; } div { display: inline-grid; @@ -916,6 +926,7 @@ export const StyledCheckboxLabel = styled.div` label { padding: 0px; font-size: small; + cursor: pointer; } } diff --git a/packages/taler-wallet-webextension/src/cta/TermsOfServiceSection.tsx b/packages/taler-wallet-webextension/src/cta/TermsOfServiceSection.tsx new file mode 100644 index 000000000..5eddde64f --- /dev/null +++ b/packages/taler-wallet-webextension/src/cta/TermsOfServiceSection.tsx @@ -0,0 +1,129 @@ +import { i18n } from "@gnu-taler/taler-util"; +import { Fragment, h, VNode } from "preact"; +import { CheckboxOutlined } from "../components/CheckboxOutlined"; +import { ExchangeXmlTos } from "../components/ExchangeToS"; +import { + ButtonSuccess, + ButtonWarning, + LinkSuccess, + TermsOfService, + WarningBox, +} from "../components/styled"; +import { TermsState } from "../utils"; + +interface Props { + reviewing: boolean; + reviewed: boolean; + terms: TermsState; + onReview?: (b: boolean) => void; + onAccept: (b: boolean) => void; +} +export function TermsOfServiceSection({ + reviewed, + reviewing, + terms, + onAccept, + onReview, +}: Props): VNode { + if (!reviewing) { + if (!reviewed) { + if (!onReview) { + return
Terms of service status: {terms.status}
; + } + return ( + + {terms.status === "new" && ( +
+ onReview(true)}> + {i18n.str`Review exchange terms of service`} + +
+ )} + {terms.status === "changed" && ( +
+ onReview(true)}> + {i18n.str`Review new version of terms of service`} + +
+ )} +
+ ); + } + return ( + + {onReview && ( +
+ onReview(true)}> + {i18n.str`Show terms of service`} + +
+ )} +
+ { + console.log("asdasd", reviewed); + onAccept(!reviewed); + if (onReview) onReview(false); + }} + /> +
+
+ ); + } + return ( + + {terms.status !== "notfound" && !terms.content && ( +
+ + The exchange reply with a empty terms of service + +
+ )} + {terms.status !== "accepted" && terms.content && ( +
+ {terms.content.type === "xml" && ( + + + + )} + {terms.content.type === "plain" && ( +
+
{terms.content.content}
+
+ )} + {terms.content.type === "html" && ( +