import Link from 'next/link'
import { Button, Dropdown, Nav, Navbar } from 'react-bootstrap'
import styles from '../header.module.css'
import { useRouter } from 'next/router'
import BackArrow from '../../svgs/arrow-left-line.svg'
import { useCallback, useEffect, useState } from 'react'
import Price from '../price'
import SubSelect from '../sub-select'
import { ANON_USER_ID, BALANCE_LIMIT_MSATS } from '../../lib/constants'
import Head from 'next/head'
import NoteIcon from '../../svgs/notification-4-fill.svg'
import { useMe } from '../me'
import HiddenWalletSummary from '../hidden-wallet-summary'
import { abbrNum, msatsToSats } from '../../lib/format'
import { useServiceWorker } from '../serviceworker'
import { signOut } from 'next-auth/react'
import Hat from '../hat'
import { randInRange } from '../../lib/rand'
import { useLightning } from '../lightning'
import LightningIcon from '../../svgs/bolt.svg'
import SearchIcon from '../../svgs/search-line.svg'
import classNames from 'classnames'
import SnIcon from '@/svgs/sn.svg'
import { useHasNewNotes } from '../use-has-new-notes'
export function Brand ({ className }) {
  return (
    
         
    
  )
}
export function hasNavSelect ({ path, pathname }) {
  return (
    pathname.startsWith('/~') &&
    !path.endsWith('/post') &&
    !path.endsWith('/edit')
  )
}
export function Back () {
  const router = useRouter()
  const [back, setBack] = useState(router.asPath !== '/')
  useEffect(() => {
    setBack(router.asPath !== '/' && (typeof window.navigation === 'undefined' || window.navigation.canGoBack === undefined || window?.navigation.canGoBack))
  }, [router.asPath])
  if (!back) return null
  return (
     {
        if (back) {
          router.back()
        } else {
          router.push('/')
        }
      }}
    >
       
  )
}
export function BackOrBrand ({ className }) {
  const router = useRouter()
  const [back, setBack] = useState(router.asPath !== '/')
  useEffect(() => {
    setBack(router.asPath !== '/' && (typeof window.navigation === 'undefined' || window.navigation.canGoBack === undefined || window?.navigation.canGoBack))
  }, [router.asPath])
  return (
    
      {back ? 
  )
}
export function SearchItem ({ prefix, className }) {
  return (
    
         
    
  )
}
export function NavPrice ({ className }) {
  return (
    
       
  )
}
const PREPEND_SUBS = ['home']
const APPEND_SUBS = [{ label: '--------', items: ['create'] }]
export function NavSelect ({ sub: subName, className, size }) {
  const sub = subName || 'home'
  return (
    
       
  )
}
export function NavNotifications ({ className }) {
  const hasNewNotes = useHasNewNotes()
  return (
    <>
      
        
          
              {' '} 
             }
         
      
    >
  )
}
export function WalletSummary () {
  const me = useMe()
  if (!me) return null
  if (me.privates?.hideWalletBalance) {
    return 
      
           
      
     
  )
}
export function MeDropdown ({ me, dropNavKey }) {
  if (!me) return null
  const { registration: swRegistration, togglePushSubscription } = useServiceWorker()
  return (
    
      
        
          
            {`@${me.name}`} 
         
        
          
              profile
              {me && !me.bioId &&
                
                  {' '} 
                
}
             
          
          bookmarks 
          
          wallet 
          
          satistics 
          
          referrals 
          
          
            settings 
            
          
           {
              try {
                // order is important because we need to be logged in to delete push subscription on server
                const pushSubscription = await swRegistration?.pushManager.getSubscription()
                if (pushSubscription) {
                  await togglePushSubscription()
                }
              } catch (err) {
                // don't prevent signout because of an unsubscription error
                console.error(err)
              }
              await signOut({ callbackUrl: '/' })
            }}
          >logout
           
         
       
      {!me.bioId &&
        
          {' '} 
         }
    
 
  )
}
export function SignUpButton ({ className = 'py-0' }) {
  const router = useRouter()
  const handleLogin = useCallback(async pathname => await router.push({
    pathname,
    query: { callbackUrl: window.location.origin + router.asPath }
  }), [router])
  return (
     handleLogin('/signup')}
    >
       
  )
}
export default function LoginButton ({ className }) {
  const router = useRouter()
  const handleLogin = useCallback(async pathname => await router.push({
    pathname,
    query: { callbackUrl: window.location.origin + router.asPath }
  }), [router])
  return (
     handleLogin('/login')}
    >
      login
     
  )
}
export function LoginButtons () {
  return (
    <>
      
      
        
          
            @anon 
         
        
           
       
    
  )
}
export function Sorts ({ sub, prefix, className }) {
  return (
    <>
      
        hot 
        
       
      
        recent 
        
       
      {/* 
        random 
        
        */}
      {sub !== 'jobs' &&
        
          top 
          
         }
    >
  )
}
export function PostItem ({ className, prefix }) {
  return (
    
      
  )
}
export function AnonCorner ({ dropNavKey, className }) {
  return (
    
  )
}