import { Capacitor } from '@capacitor/core'
import { App as CapApp } from '@capacitor/app'
import { useUiStore } from '@/stores/ui'
import { appLock } from '@/composables/appLock'

// 통합 뒤로가기 처리 — 하드웨어 뒤로(capacitor.js)와 하단 내비 뒤로 버튼이 동일 동작.
// 우선순위:
//   1) 잠금 화면이면 우회 불가 → (네이티브) 종료
//   2) 열린 전역 오버레이(회원가입/로그인/비번/사이드바) 닫기
//   3) 화면 뒤로(히스토리)
//   4) 최상위에서 '한 번 더 누르면 종료'(네이티브만, 실수 종료 방지)
let exitArmed = false
let exitTimer = null

export function handleBack(router) {
  const native = Capacitor.isNativePlatform()
  const ui = useUiStore()

  if (appLock.state.locked) {
    if (native) CapApp.exitApp()
    return
  }

  if (ui.signupOpen) { ui.closeSignup(); return }
  if (ui.loginOpen) { ui.closeLogin(); return }
  if (ui.passwordOpen) { ui.closePassword(); return }
  if (ui.sidebarOpen) { ui.closeSidebar(); return }

  if (window.history.length > 1) { router.back(); return }

  // 최상위(더 갈 곳 없음)
  if (native) {
    if (exitArmed) { CapApp.exitApp(); return }
    exitArmed = true
    window.dispatchEvent(new CustomEvent('app:toast', { detail: '한 번 더 누르면 종료됩니다' }))
    clearTimeout(exitTimer)
    exitTimer = setTimeout(() => { exitArmed = false }, 2000)
  }
}
