/*
 This file is part of TALER
 (C) 2016 GNUnet e.V.
 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 
*/
import { ExchangeListItem, i18n } from "@gnu-taler/taler-util";
import { Fragment, h, VNode } from "preact";
import { Checkbox } from "../components/Checkbox";
import {
  DestructiveText,
  LinkPrimary,
  SuccessText,
  WarningText,
} from "../components/styled";
import { useDevContext } from "../context/devContext";
import { useAsyncAsHook } from "../hooks/useAsyncAsHook";
import { useBackupDeviceName } from "../hooks/useBackupDeviceName";
import { useExtendedPermissions } from "../hooks/useExtendedPermissions";
import { useLang } from "../hooks/useLang";
import { Pages } from "../NavigationBar";
import { buildTermsOfServiceStatus } from "../utils/index";
import * as wxApi from "../wxApi";
export function SettingsPage(): VNode {
  const [permissionsEnabled, togglePermissions] = useExtendedPermissions();
  const { devMode, toggleDevMode } = useDevContext();
  const { name, update } = useBackupDeviceName();
  const [lang, changeLang] = useLang();
  const exchangesHook = useAsyncAsHook(wxApi.listExchanges);
  return (
    
  );
}
export interface ViewProps {
  lang: string;
  changeLang: (s: string) => void;
  deviceName: string;
  setDeviceName: (s: string) => Promise;
  permissionsEnabled: boolean;
  togglePermissions: () => void;
  developerMode: boolean;
  toggleDeveloperMode: () => void;
  knownExchanges: Array;
}
export function SettingsView({
  knownExchanges,
  permissionsEnabled,
  togglePermissions,
  developerMode,
  toggleDeveloperMode,
}: ViewProps): VNode {
  return (
    
      
        
          Permissions
        
        
        
          Known exchanges
        
        {!knownExchanges || !knownExchanges.length ? (
          No exchange yet!
        ) : (
          
            
              
                
                  | currency | url | term of service | 
              
              
                {knownExchanges.map((e, idx) => {
                  function Status(): VNode {
                    const status = buildTermsOfServiceStatus(
                      e.tos.content,
                      e.tos.acceptedVersion,
                      e.tos.currentVersion,
                    );
                    switch (status) {
                      case "accepted":
                        return ok;
                      case "changed":
                        return changed!;
                      case "new":
                      case "notfound":
                        return not accepted;
                    }
                  }
                  return (
                    
                      | {e.currency} | {e.exchangeBaseUrl} |  | 
                  );
                })}
              
            
          
        )}
        
        Config
        
      
    
  );
}