(function () {
  /**
   * cwd-widget（≤0.1.11）里 getLikeStatus 用 post_slug = 完整页面 URL（postUrl），
   * 而点赞写入 likePage 用的是 postSlug；后端排行榜按 slug 汇总，导致前台一直显示 0。
   * getPagePv 已写成 postUrl || postSlug，点赞查询未对齐。这里把 GET /api/like 的
   * post_slug 从绝对地址改回与评论区一致的 slug。
   */
  function patchCwdLikeGetQuery(apiBaseNorm, postSlug) {
    if (window.__cwdLikeStatusQueryPatched) return;
    window.__cwdLikeStatusQueryPatched = true;

    var base = apiBaseNorm;
    var orig = window.fetch;
    window.fetch = function (input, init) {
      var url =
        typeof input === "string"
          ? input
          : input && typeof input.url === "string"
            ? input.url
            : "";
      var method = "GET";
      if (init && init.method) method = String(init.method).toUpperCase();
      else if (typeof Request !== "undefined" && input instanceof Request) {
        method = String(input.method || "GET").toUpperCase();
      }
      if (
        url &&
        url.indexOf(base) === 0 &&
        url.indexOf("/api/like?") !== -1 &&
        method === "GET"
      ) {
        try {
          var u = new URL(url);
          var ps = u.searchParams.get("post_slug") || "";
          if (ps.indexOf("://") !== -1) {
            u.searchParams.set("post_slug", postSlug);
            if (typeof input === "string") {
              input = u.toString();
            } else if (typeof Request !== "undefined" && input instanceof Request) {
              input = new Request(u.toString(), input);
            }
          }
        } catch (e) {
          /* ignore */
        }
      }
      return orig.call(this, input, init);
    };
  }

  function mount() {
    var el = document.getElementById("comments");
    if (!el || typeof CWDComments === "undefined") return;

    var ds = el.dataset;
    var apiBaseUrl = ds.apiBase;
    var postSlug = ds.postSlug;
    if (!apiBaseUrl || !postSlug) return;

    patchCwdLikeGetQuery(apiBaseUrl.replace(/\/$/, ""), postSlug);

    var opts = {
      el: "#comments",
      apiBaseUrl: apiBaseUrl,
      postSlug: postSlug,
      lang: ds.lang || "zh-CN"
    };
    if (ds.siteId) opts.siteId = ds.siteId;

    new CWDComments(opts).mount();
  }

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", mount);
  } else {
    mount();
  }
})();
