From 4178dcadc6a6a856a754e3a370c22fa342735e42 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Fri, 24 Mar 2017 17:54:22 +0100 Subject: add auditor editing --- src/pages/auditors.tsx | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/pages/auditors.tsx (limited to 'src/pages/auditors.tsx') diff --git a/src/pages/auditors.tsx b/src/pages/auditors.tsx new file mode 100644 index 000000000..b0bce8fd5 --- /dev/null +++ b/src/pages/auditors.tsx @@ -0,0 +1,96 @@ +/* + This file is part of TALER + (C) 2017 Inria + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + TALER is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + TALER; see the file COPYING. If not, see + */ + +/** + * View and edit auditors. + * + * @author Florian Dold + */ + + +import { ExchangeRecord, DenominationRecord } from "src/types"; +import { AuditorRecord, CurrencyRecord, ReserveRecord, CoinRecord, PreCoinRecord, Denomination } from "src/types"; +import { ImplicitStateComponent, StateHolder } from "src/components"; +import { + getCurrencies, + updateCurrency, +} from "src/wxApi"; +import { prettyAmount } from "src/renderHtml"; +import { getTalerStampDate } from "src/helpers"; + +interface CurrencyListState { + currencies?: CurrencyRecord[]; +} + +class CurrencyList extends React.Component { + constructor() { + super(); + let port = chrome.runtime.connect(); + port.onMessage.addListener((msg: any) => { + if (msg.notify) { + console.log("got notified"); + this.update(); + } + }); + this.update(); + this.state = {} as any; + } + + async update() { + let currencies = await getCurrencies(); + console.log("currencies: ", currencies); + this.setState({ currencies }); + } + + async confirmRemove(c: CurrencyRecord, a: AuditorRecord) { + if (window.confirm(`Do you really want to remove auditor ${a.baseUrl} for currency ${c.name}?`)) { + c.auditors = c.auditors.filter((x) => x.auditorPub != a.auditorPub); + await updateCurrency(c); + } + } + + render(): JSX.Element { + let currencies = this.state.currencies; + if (!currencies) { + return ...; + } + return ( +
+ {currencies.map(c => ( +
+

Currency {c.name}

+

Displayed with {c.fractionalDigits} fractional digits.

+

Auditors:

+
    + {c.auditors.map(a => ( +
  • {a.baseUrl} () +
      +
    • valid until {new Date(a.expirationStamp).toString()}
    • +
    • public key {a.auditorPub}
    • +
    +
  • + ))} +
+
+ ))} +
+ ); + } +} + +export function main() { + ReactDOM.render(, document.getElementById("container")!); +} -- cgit v1.2.3