import { Button, InputGroup, Image, Modal, Form as BootstrapForm } from 'react-bootstrap'
import Link from 'next/link'
import { useRouter } from 'next/router'
import Nav from 'react-bootstrap/Nav'
import { useRef, useState } from 'react'
import { Form, Input, SubmitButton } from './form'
import * as Yup from 'yup'
import { gql, useApolloClient, useMutation } from '@apollo/client'
import styles from './user-header.module.css'
import { useMe } from './me'
import { NAME_MUTATION, NAME_QUERY } from '../fragments/users'
import QRCode from 'qrcode.react'
import LightningIcon from '../svgs/bolt.svg'
import ModalButton from './modal-button'
import { encodeLNUrl } from '../lib/lnurl'
import Upload from './upload'
import EditImage from '../svgs/image-edit-fill.svg'
import Moon from '../svgs/moon-fill.svg'
import AvatarEditor from 'react-avatar-editor'
export default function UserHeader ({ user }) {
  const [editting, setEditting] = useState(false)
  const me = useMe()
  const router = useRouter()
  const client = useApolloClient()
  const [setName] = useMutation(NAME_MUTATION)
  const isMe = me?.name === user.name
  const Satistics = () => 
{isMe ? `${user.sats} sats \\ ` : ''}{user.stacked} stacked
  const UserSchema = Yup.object({
    name: Yup.string()
      .required('required')
      .matches(/^[\w_]+$/, 'only letters, numbers, and _')
      .max(32, 'too long')
      .test({
        name: 'name',
        test: async name => {
          if (!name || !name.length) return false
          const { data } = await client.query({ query: NAME_QUERY, variables: { name }, fetchPolicy: 'network-only' })
          return data.nameAvailable
        },
        message: 'taken'
      })
  })
  const lnurlp = encodeLNUrl(new URL(`https://stacker.news/.well-known/lnurlp/${user.name}`))
  return (
    <>
      
        
        
          {editting
            ? (
              
              )
            : (
              
                @{user.name}
                {isMe &&
                  
}
              
 
              )}
          
          
                {user.name}@stacker.news
              
            }
          >
            
              
            
            click or scan
          
         
      
    >
  )
}
function PhotoEditor ({ userId }) {
  const [uploading, setUploading] = useState()
  const [editProps, setEditProps] = useState()
  const ref = useRef()
  const [scale, setScale] = useState(1)
  const [setPhoto] = useMutation(
    gql`
      mutation setPhoto($photoId: ID!) {
        setPhoto(photoId: $photoId)
      }`, {
      update (cache, { data: { setPhoto } }) {
        cache.modify({
          id: `User:${userId}`,
          fields: {
            photoId () {
              return setPhoto
            }
          }
        })
      }
    }
  )
  return (
    <>
       setEditProps(null)}
      >
         setEditProps(null)}>X
        
          
          
             setScale(parseFloat(e.target.value))}
              min={1} max={2} step='0.05'
              defaultValue={scale} custom
            />
          
          
        
      
      
          
            {uploading
              ? 
              : }
          
}
        onError={e => {
          console.log(e)
          setUploading(false)
        }}
        onSelect={(file, upload) => {
          setEditProps({ file, upload })
        }}
        onSuccess={async key => {
          const { error } = await setPhoto({ variables: { photoId: key } })
          if (error) {
            console.log(error)
          }
          setUploading(false)
        }}
        onStarted={() => {
          setUploading(true)
        }}
      />
    >
  )
}