import { _ as policyIcon, a as bankIcon, b as giftIcon } from "../js/database-export-CGwyHyM--1776148658686.js"; import { _ as arrowIcon } from "../js/arrow-Cf0JWzXk-1776148658686.js"; import { _ as inviteIcon } from "../js/users-plus-BsDDiQEG-1776148658686.js"; const API_BASE_URL = "https://jvapi.haiyihy.com"; const labels = { en: { bd_center: "BD Center", my_available_salary: "My available salary", bd_salary_link: "BD salary", bd_policy_link: "BD policy", agency_list_link: "Agency list", invite_become_agent: "Invite to become agent", bank_cards_link: "Bank cards", send_welcome_gift: "Send welcome gift", failed_to_load_balance: "Failed to load balance. Please try again.", failed_to_load_permission: "Failed to load permission. Please try again." }, ar: { bd_center: "BD Center", my_available_salary: "My available salary", bd_salary_link: "BD salary", bd_policy_link: "BD policy", agency_list_link: "Agency list", invite_become_agent: "Invite to become agent", bank_cards_link: "Bank cards", send_welcome_gift: "Send welcome gift", failed_to_load_balance: "Failed to load balance. Please try again.", failed_to_load_permission: "Failed to load permission. Please try again." }, tr: { bd_center: "BD Center", my_available_salary: "My available salary", bd_salary_link: "BD salary", bd_policy_link: "BD policy", agency_list_link: "Agency list", invite_become_agent: "Invite to become agent", bank_cards_link: "Bank cards", send_welcome_gift: "Send welcome gift", failed_to_load_balance: "Failed to load balance. Please try again.", failed_to_load_permission: "Failed to load permission. Please try again." }, bn: { bd_center: "BD Center", my_available_salary: "My available salary", bd_salary_link: "BD salary", bd_policy_link: "BD policy", agency_list_link: "Agency list", invite_become_agent: "Invite to become agent", bank_cards_link: "Bank cards", send_welcome_gift: "Send welcome gift", failed_to_load_balance: "Failed to load balance. Please try again.", failed_to_load_permission: "Failed to load permission. Please try again." } }; let commonHeaders = { authorization: "Bearer undefined", "req-app-intel": "version=1.0.0;build=1;model=SM-G9550;sysVersion=9;channel=Google", "req-client": "Android", "req-imei": "8fa54d728ab449e04f9292329ed44bda", "req-lang": "id-ID", "req-sys-origin": "origin=ATYOU;originChild=ATYOU", "req-version": "V2", "req-zone": "Asia/Shanghai" }; const state = { lang: resolveLanguage(), balance: 0, hasGiftPermission: false, appConnected: false, userInfo: null, teamInfo: null, identityInfo: null, identity: "BD" }; function resolveLanguage() { const params = new URLSearchParams(window.location.search); const hashQuery = window.location.hash.includes("?") ? window.location.hash.split("?")[1] : ""; const hashParams = new URLSearchParams(hashQuery); const lang = params.get("lang") || hashParams.get("lang") || navigator.language || "en"; if (lang.startsWith("ar")) return "ar"; if (lang.startsWith("tr")) return "tr"; if (lang.startsWith("bn")) return "bn"; return "en"; } function t(key) { return (labels[state.lang] && labels[state.lang][key]) || labels.en[key] || key; } function setLanguage() { document.documentElement.lang = state.lang; document.documentElement.dir = state.lang === "ar" ? "rtl" : "ltr"; document.querySelector("[data-action='language']").textContent = state.lang.toUpperCase(); document.querySelectorAll("[data-i18n]").forEach((node) => { node.textContent = t(node.dataset.i18n); }); } function setIcons() { const iconMap = { policy: policyIcon, bank: bankIcon, gift: giftIcon, arrow: arrowIcon, invite: inviteIcon }; document.querySelectorAll("[data-icon]").forEach((img) => { img.src = iconMap[img.dataset.icon] || ""; }); } function formatMoney(value) { if (value === null || value === undefined || value === "") return "0"; const number = Number(value); if (Number.isNaN(number)) return String(value); return Number.isInteger(number) ? String(number) : number.toFixed(2); } function render() { document.getElementById("availableBalance").textContent = `$${formatMoney(state.balance)}`; document.querySelectorAll(".gift-permission").forEach((node) => { node.hidden = !state.hasGiftPermission; }); } function showToast(message) { const toast = document.getElementById("toast"); toast.textContent = message; toast.hidden = false; window.clearTimeout(showToast.timer); showToast.timer = window.setTimeout(() => { toast.hidden = true; }, 2500); } function isMobileDevice() { return /Android|iPad|iPhone|iPod/.test(navigator.userAgent); } function isAppEnvironment() { return Boolean(window.app || window.webkit || window.FlutterPageControl || window.FlutterApp); } function splitHeaderPairs(value) { const result = {}; if (!value) return result; value.split(";").forEach((item) => { const index = item.indexOf("="); if (index > -1) { result[item.slice(0, index)] = item.slice(index + 1); } }); return result; } function parseAccessOrigin(raw) { const data = JSON.parse(raw); const appIntel = splitHeaderPairs(data["Req-App-Intel"]); const sysOrigin = splitHeaderPairs(data["Req-Sys-Origin"]); return { reqLang: data["Req-Lang"], authorization: data.Authorization, buildVersion: appIntel.build, appVersion: appIntel.version, appChannel: appIntel.channel, reqImei: data["Req-Imei"] || appIntel["Req-Imei"], sysOrigin: sysOrigin.origin, sysOriginChild: sysOrigin.originChild || sysOrigin.child }; } function setHeadersFromApp(headers) { const next = {}; if (headers.authorization) next.authorization = headers.authorization; if (headers.reqLang) next["req-lang"] = headers.reqLang; if (headers.appVersion || headers.buildVersion || headers.appChannel) { const intel = []; if (headers.appVersion) intel.push(`version=${headers.appVersion}`); if (headers.buildVersion) intel.push(`build=${headers.buildVersion}`); if (headers.appChannel) intel.push(`channel=${headers.appChannel}`); next["req-app-intel"] = intel.join(";"); } if (headers.reqImei) next["req-imei"] = headers.reqImei; if (headers.sysOrigin) { const origin = [`origin=${headers.sysOrigin}`]; if (headers.sysOriginChild) origin.push(`originChild=${headers.sysOriginChild}`); next["req-sys-origin"] = origin.join(";"); } commonHeaders = { ...commonHeaders, ...next }; } function requestAccessOrigin() { return new Promise((resolve) => { window.renderData = resolve; window.getIosAccessOriginParam = resolve; if (!isAppEnvironment()) { setHeadersFromApp({ authorization: "", reqLang: state.lang, appVersion: "1.0.0", buildVersion: "1", appChannel: "Web", reqImei: "H5-STATIC", sysOrigin: "LIKEI", sysOriginChild: "LIKEI" }); resolve(null); return; } let attempt = 0; const maxAttempts = 50; const poll = () => { attempt += 1; if (window.app && typeof window.app.getAccessOrigin === "function") { resolve(window.app.getAccessOrigin()); return; } if (attempt < maxAttempts) { window.setTimeout(poll, 100); return; } if (window.FlutterApp && typeof window.FlutterApp.postMessage === "function") { window.FlutterApp.postMessage("requestAccessOrigin"); } }; if (isMobileDevice() || isAppEnvironment()) { poll(); } else { resolve(null); } }); } async function connectToApp() { const raw = await requestAccessOrigin(); if (!raw) { state.appConnected = true; return; } setHeadersFromApp(parseAccessOrigin(raw)); state.appConnected = true; } async function apiGet(path) { const response = await fetch(`${API_BASE_URL}${path}`, { method: "GET", headers: commonHeaders }); const data = await response.json().catch(() => ({})); if (!response.ok || data.status === false) { const error = new Error(data.errorMsg || data.message || `Request failed: ${response.status}`); error.response = data; throw error; } return data; } async function fetchBalance() { const result = await apiGet("/wallet/salary-account/balance?salaryType=BD_SALARY"); if (result.status && result.body) { state.balance = result.body.availableBalance || 0; } } async function fetchGiftPermission() { const result = await apiGet("/sys/bd/own-permission"); if (result.status) { state.hasGiftPermission = Boolean(result.body); } } async function fetchUserProfile() { const result = await apiGet("/team/member/profile"); if (result.status && result.body) { state.userInfo = result.body; } } async function fetchTeamInfo() { const result = await apiGet("/team/entry"); if (result.status && result.body) { state.teamInfo = result.body.teamProfile || result.body; } } async function fetchIdentity() { const result = await apiGet("/app/h5/identity"); if (result.status && result.body) { state.identityInfo = result.body; } } async function initializePageConfig() { const results = await Promise.allSettled([fetchUserProfile(), fetchTeamInfo(), fetchIdentity()]); results.forEach((result) => { if (result.status === "rejected") { console.warn("BD center page config request failed:", result.reason); } }); } function clearPayeeStore() { try { sessionStorage.removeItem("payee"); localStorage.removeItem("payee"); } catch (error) { console.debug("BD center payee cache clear skipped:", error); } } function setIdentity(identity) { state.identity = identity; localStorage.setItem("identity", JSON.stringify({ identity })); } async function loadBDCenterData() { const results = await Promise.allSettled([fetchBalance(), fetchGiftPermission()]); results.forEach((result) => { if (result.status === "rejected") { console.warn("BD center data request failed:", result.reason); } }); } function navigateTo(target) { const url = new URL(target, window.location.origin); const currentLang = new URLSearchParams(window.location.search).get("lang"); if (currentLang && !url.searchParams.has("lang")) { url.searchParams.set("lang", currentLang); } window.location.href = `${url.pathname}${url.search}${url.hash}`; } function bindEvents() { document.querySelector("[data-action='back']").addEventListener("click", () => { if (window.history.length > 1) { window.history.back(); return; } if (window.app && typeof window.app.closePage === "function") { window.app.closePage(); return; } if (window.FlutterPageControl && typeof window.FlutterPageControl.postMessage === "function") { window.FlutterPageControl.postMessage("close_page"); } }); document.querySelector("[data-action='language']").addEventListener("click", () => { navigateTo("/language"); }); document.querySelectorAll("[data-route]").forEach((node) => { node.addEventListener("click", () => navigateTo(node.dataset.route)); }); } async function init() { setLanguage(); setIcons(); bindEvents(); render(); clearPayeeStore(); setIdentity("BD"); try { await connectToApp(); await initializePageConfig(); await loadBDCenterData(); } catch (error) { console.warn("BD center initialization failed:", error); showToast(error.response?.errorMsg || error.message || t("failed_to_load_balance")); } finally { render(); } } init();