/**
 * Firebase initialization plugin (client-only).
 * Initializes Firebase auth and presence when user is already logged in from cookies.
 * For fresh logins, Firebase is initialized in useAuth().login().
 */
import {
  initFirebaseAuth,
  scheduleTokenRefresh,
  setMyPresence,
  cleanupFirebase,
} from '~/services/firebase'

export default defineNuxtPlugin(() => {
  const authStore = useAuthStore()
  const chatStore = useChatStore()

  // Only initialize if user is restored from cookies (already logged in)
  if (authStore.loggedIn && authStore.token && authStore.user) {
    initFirebaseAuth(authStore.token)
      .then(() => {
        scheduleTokenRefresh(authStore.token!)
        setMyPresence(authStore.user!.id, true)
        chatStore.setFirebaseConnected(true)
      })
      .catch((e) => console.error('Firebase chat init failed:', e))
  }

  // Set offline on page unload
  window.addEventListener('beforeunload', () => {
    if (authStore.loggedIn && authStore.user) {
      setMyPresence(authStore.user.id, false)
    }
  })

  // Cleanup on logout (watch for auth state changes)
  watch(
    () => authStore.loggedIn,
    (loggedIn, wasLoggedIn) => {
      if (wasLoggedIn && !loggedIn) {
        cleanupFirebase()
        chatStore.setFirebaseConnected(false)
      }
    },
  )
})
