diff options
Diffstat (limited to 'src/pages')
| -rw-r--r-- | src/pages/auditors.html | 37 | ||||
| -rw-r--r-- | src/pages/auditors.tsx | 96 | 
2 files changed, 133 insertions, 0 deletions
| diff --git a/src/pages/auditors.html b/src/pages/auditors.html new file mode 100644 index 000000000..0a9740f03 --- /dev/null +++ b/src/pages/auditors.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<html> + +<head> +	<title>Taler Wallet: Auditors</title> + +	<link rel="stylesheet" type="text/css" href="../style/lang.css"> +	<link rel="stylesheet" type="text/css" href="../style/wallet.css"> + +	<link rel="icon" href="/img/icon.png"> + +	<script src="/src/vendor/URI.js"></script> +	<script src="/src/vendor/react.js"></script> +	<script src="/src/vendor/react-dom.js"></script> + +	<script src="/src/vendor/system-csp-production.src.js"></script> +	<script src="/src/moduleTrampoline.js"></script> + +	<style> +		.tree-item { +			margin: 2em; +			border-radius: 5px; +			border: 1px solid gray; +			padding: 1em; +		} +                .button-linky { +                  background: none; +                  color: black; +                  text-decoration: underline; +                  border: none; +                } +	</style> + +        <body> +          <div id="container"></div> +        </body> +</html> 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 <http://www.gnu.org/licenses/> + */ + +/** + * 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<any, CurrencyListState> { +  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 <span>...</span>; +    } +    return ( +      <div> +      {currencies.map(c => ( +        <div> +          <h1>Currency {c.name}</h1> +          <p>Displayed with {c.fractionalDigits} fractional digits.</p> +          <p>Auditors:</p> +          <ul> +          {c.auditors.map(a => ( +            <li>{a.baseUrl} (<button className="button-linky" onClick={() => this.confirmRemove(c, a)}>Remove</button>) +              <ul> +                <li>valid until {new Date(a.expirationStamp).toString()}</li> +                <li>public key {a.auditorPub}</li> +              </ul> +            </li> +          ))} +          </ul> +        </div> +      ))} +      </div> +    ); +  } +} + +export function main() { +  ReactDOM.render(<CurrencyList />, document.getElementById("container")!); +} | 
