import { TranslatedString } from "@gnu-taler/taler-util";
import {
  notifyError,
  useTranslationContext,
} from "@gnu-taler/web-util/browser";
import { VNode, h } from "preact";
import { createNewForm } from "../handlers/forms.js";
export function CreateAccount({
  onNewAccount,
}: {
  onNewAccount: (password: string) => void;
}): VNode {
  const { i18n } = useTranslationContext();
  const Form = createNewForm<{
    password: string;
    repeat: string;
  }>();
  return (
    
      
        
          Create account
        
      
      
        
           {
              return {
                password: {
                  error: !v.password
                    ? i18n.str`required`
                    : v.password.length < 8
                    ? i18n.str`should have at least 8 characters`
                    : !v.password.match(/[a-z]/) && v.password.match(/[A-Z]/)
                    ? i18n.str`should have lowercase and uppercase characters`
                    : !v.password.match(/\d/)
                    ? i18n.str`should have numbers`
                    : !v.password.match(/[^a-zA-Z\d]/)
                    ? i18n.str`should have at least one character which is not a number or letter`
                    : undefined,
                },
                repeat: {
                  error: !v.repeat
                    ? i18n.str`required`
                    : v.repeat !== v.password
                    ? i18n.str`doesn't match`
                    : undefined,
                },
              };
            }}
            onSubmit={async (v, s) => {
              console.log(v, s);
              const error = s?.password?.error ?? s?.repeat?.error;
              console.log(error);
              if (error) {
                notifyError(
                  "Can't create account" as TranslatedString,
                  error as TranslatedString,
                );
              } else {
                onNewAccount(v.password!);
              }
            }}
          >
            
              
            
            
              
            
            
              
            
          
         
       
     
  );
}