"use client";

import { useEffect } from "react";

import { isNativePartnerApp } from "@/lib/partner-capacitor";

export function PortalServiceWorker() {
  useEffect(() => {
    if (typeof window === "undefined" || !("serviceWorker" in navigator)) {
      return;
    }

    // Service worker NE sme da radi u developmentu ni u native app-u:
    //  • U dev-u SW kešira /portal navigacije; kad Next.js HMR rebuild-uje,
    //    SW servira neusklađen RSC payload → App Router detektuje promenu
    //    buildId-a i radi `location.reload()` → SW opet servira keš →
    //    BESKONAČNA reload petlja ("strana se non stop učitava").
    //  • Native partner app ima svoj runtime i ne treba web SW.
    // Zato u tim slučajevima aktivno odjavljujemo sve postojeće SW-ove i
    // brišemo keš — da se petlja prekine i kod korisnika koji ga već ima.
    if (process.env.NODE_ENV !== "production" || isNativePartnerApp()) {
      navigator.serviceWorker
        .getRegistrations()
        .then((registrations) => {
          for (const registration of registrations) {
            void registration.unregister();
          }
        })
        .catch(() => {
          // best-effort cleanup
        });

      if (typeof caches !== "undefined") {
        caches
          .keys()
          .then((keys) => Promise.all(keys.map((key) => caches.delete(key))))
          .catch(() => {
            // best-effort cleanup
          });
      }

      return;
    }

    navigator.serviceWorker.register("/portal-sw.js", { scope: "/portal/" }).catch(() => {
      // Service worker registration is a progressive enhancement only.
    });
  }, []);

  return null;
}
