// Mağaza linki üretici — blog CTA'larının (üst banner, orta banner, alt CTA)
// kampanya izli App Store / Google Play / /download URL'lerini TEK yerden kurar.
// İLERİDE: Adapty One Link'e geçilecek; mağaza URL'leri yalnızca burada tutulur,
// bileşenlere ASLA gömülmez. Bileşenler sadece buildStoreLinks() çağırır.
//
// Bilerek JSX'siz saf JS: tarayıcıda text/babel olarak yüklense de
// `node store-links.jsx` ile doğrudan test edilebilir (dosya sonundaki
// module.exports köprüsü bunun için).

// Desteklenen diller — whitelist dışı bir locale gelirse 'en'e düşülür.
var STORE_LINK_LOCALES = ["tr", "en", "de", "fr", "es", "ru", "pl", "ar"];

// Kampanya adında atlanan dolgu kelimeler: bunlardan birine rastlanınca
// kesilir (break), yani "coding-for-bmw" → yalnızca öncesi alınır.
var STORE_LINK_STOPWORDS = [
  "coding", "for", "and", "the", "a", "an", "of", "to", "in", "on",
  "with", "how", "guide", "vs",
];

// Apple kampanya sağlayıcı token'ı (pt) — dosyada TEK yerde.
// Sunucu window.__APPLE_PT__ basarsa (yalnız rakam) o kullanılır,
// yoksa hesabın sabit token'ına düşülür. Node'da window yok, o yüzden guard'lı.
function getApplePt() {
  if (
    typeof window !== "undefined" &&
    typeof window.__APPLE_PT__ === "string" &&
    /^[0-9]+$/.test(window.__APPLE_PT__)
  ) {
    return window.__APPLE_PT__;
  }
  return "128126561"; // fallback sabit
}

// Slug + dil'den deterministik kampanya adı üretir.
// Örn: "bimmercode-coding-for-bmw-and-mini" + "pl" → "bimmercode_pl"
//      "bmw-auto-start-stop-disable-coding" + "tr" → "bmw_auto_start_stop_tr"
function buildCampaign(slug, locale) {
  var tokens = slug.toLowerCase().split("-").filter(Boolean);
  var out = [];
  for (var i = 0; i < tokens.length; i++) {
    var t = tokens[i];
    if (STORE_LINK_STOPWORDS.indexOf(t) !== -1) break; // dolgu kelimede kes
    out.push(t);
    if (out.length === 4) break; // en fazla 4 parça
  }
  if (!out.length) out = tokens.slice(0, 2); // tamamı stopword ise emniyet
  return (out.join("_") + "_" + locale)
    .toLowerCase()
    .replace(/[^a-z0-9_]/g, "")
    .replace(/_+/g, "_")
    .replace(/^_+|_+$/g, "");
}

// Tek giriş noktası: { locale, slug } → { appStore, googlePlay, downloadPage, campaign }
// campaign da döner — CTA'lar analitik event parametrelerinde kullanır.
function buildStoreLinks(opts) {
  opts = opts || {};

  // Girdi savunması: whitelist dışı dil → 'en'; bozuk/boş slug → 'blog'.
  var locale =
    STORE_LINK_LOCALES.indexOf(opts.locale) !== -1 ? opts.locale : "en";
  var slug =
    typeof opts.slug === "string" && opts.slug.trim() ? opts.slug : "blog";

  var campaign = buildCampaign(slug, locale);

  // Google Play — Install Referrer deseni: referrer değerindeki %3D (=) ve
  // %26 (&) AYNEN böyle kalmalı, ekstra encode YAPILMAZ. campaign zaten
  // [a-z0-9_] süzgecinden geçtiği için doğrudan eklenmesi güvenli.
  var googlePlay =
    "https://play.google.com/store/apps/details?id=com.obdthink.tekincode" +
    "&referrer=utm_source%3Dobdthink_blog%26utm_medium%3Dcta%26utm_campaign%3D" +
    campaign;

  // App Store — Apple kampanya linki (pt: sağlayıcı, ct: kampanya).
  var appStore =
    "https://apps.apple.com/app/apple-store/id6754601889" +
    "?pt=" + getApplePt() + "&ct=" + campaign + "&mt=8";

  // Orta banner /download'a gider; kampanya kısa 'c' parametresiyle taşınır.
  var downloadPage = "/download?c=" + campaign;

  return {
    appStore: appStore,
    googlePlay: googlePlay,
    downloadPage: downloadPage,
    campaign: campaign,
  };
}

// Node uyumluluğu (test için): tarayıcıda module tanımsız, dokunulmaz.
if (typeof module !== "undefined") module.exports = { buildStoreLinks };
