import { HttpError } from "./api";
import { notify } from "./notifications";
import i18n from "../i18n";

// A YouTube-gated action (subscribe, sync, backfill, unsubscribe) that 403s means the user hasn't
// granted the write scope — surface a "Connect" affordance instead of a vague failure. Pass
// `onConnect` to offer the connect-wizard button (callers that have no wizard handle, e.g. the
// channel page, just get the message). `fallbackMessage` is the already-translated non-403 error.
export function notifyYouTubeActionError(
  err: unknown,
  fallbackMessage: string,
  onConnect?: () => void,
): void {
  if (err instanceof HttpError && err.status === 403) {
    notify({
      level: "error",
      message: i18n.t("channels.notify.needYouTube"),
      action: onConnect
        ? { label: i18n.t("channels.notify.connect"), onClick: onConnect }
        : undefined,
    });
  } else {
    notify({ level: "error", message: fallbackMessage });
  }
}
