From f80bb2481aafcbaad31fb6cc03301ca3dab61cae Mon Sep 17 00:00:00 2001 From: 170-carry Date: Mon, 27 Apr 2026 20:02:49 +0800 Subject: [PATCH] fix app invite share link code --- h5/app-invite/app.js | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/h5/app-invite/app.js b/h5/app-invite/app.js index 23a3557..e303f67 100644 --- a/h5/app-invite/app.js +++ b/h5/app-invite/app.js @@ -580,8 +580,39 @@ function formatSignedReward(value) { return `+${formatMetric(raw)}`; } +function buildInviteShareURL(inviteLink, inviteCode) { + const rawURL = trimValue(inviteLink); + const code = trimValue(inviteCode); + if (!rawURL || !code) { + return rawURL; + } + + try { + const url = new URL(rawURL, window.location.href); + if (url.hostname.includes("play.google.com")) { + const referrer = new URLSearchParams(url.searchParams.get("referrer") || ""); + setPlayInstallReferrer(referrer, code); + removeTopLevelInviteCodeParams(url.searchParams); + url.searchParams.set("referrer", referrer.toString()); + return url.toString(); + } + + setInviteCodeParams(url.searchParams, code); + return url.toString(); + } catch { + const separator = rawURL.includes("?") ? "&" : "?"; + const params = new URLSearchParams(); + setInviteCodeParams(params, code); + return `${rawURL}${separator}${params.toString()}`; + } +} + +function currentInviteShareURL() { + return buildInviteShareURL(state.inviteLink, state.inviteCode); +} + function renderStats() { - els.inviteLinkText.textContent = trimValue(state.inviteLink) || "--"; + els.inviteLinkText.textContent = trimValue(currentInviteShareURL()) || "--"; els.inviteCodeText.textContent = trimValue(state.inviteCode) || "--"; els.statInvitees.textContent = formatMetric(state.invitees); els.statEligible.textContent = formatMetric(state.eligibleVoters); @@ -1131,7 +1162,7 @@ function bindEvents() { els.copyButtons.forEach((button) => { button.addEventListener("click", async () => { const target = button.getAttribute("data-copy-target"); - const value = target === "invite-code" ? state.inviteCode : state.inviteLink; + const value = target === "invite-code" ? state.inviteCode : currentInviteShareURL(); try { await copyText(trimValue(value));