fix: improve promotion tabs and referral layout
This commit is contained in:
1 parent
59cef1892a
commit
d4876bb125
1 file changed
+46
-1
@@ -113,6 +113,39 @@
|
|||||||
return target._aksrtPanelRequest;
|
return target._aksrtPanelRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Revenue tabs are injected with the panel HTML. Handle them in the
|
||||||
|
* capture phase so they never fall through to a browser navigation. */
|
||||||
|
function loadRevenueTab(queryParams) {
|
||||||
|
var target = document.getElementById('panel-revenue');
|
||||||
|
var restUrl = (window.aksrtData && (window.aksrtData.restUrl || window.aksrtData.apiUrl)) || cfg.restUrl || '';
|
||||||
|
if (!target || !restUrl) return Promise.reject(new Error('revenue-panel-unavailable'));
|
||||||
|
var params = queryParams || new URLSearchParams();
|
||||||
|
var url = restUrl.replace(/\/$/, '') + '/user-center/panel/revenue';
|
||||||
|
params.forEach(function(value, key) {
|
||||||
|
if (key === 'reward_tab' || key === 'commission_page' || key === 'user_page') {
|
||||||
|
url += (url.indexOf('?') === -1 ? '?' : '&') + key + '=' + encodeURIComponent(value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
target.classList.add('is-loading');
|
||||||
|
return fetch(url, {
|
||||||
|
credentials: 'same-origin',
|
||||||
|
headers: { 'X-WP-Nonce': (window.aksrtData && (window.aksrtData.restNonce || window.aksrtData.nonce)) || '' }
|
||||||
|
}).then(function(response) {
|
||||||
|
return response.json().then(function(payload) {
|
||||||
|
if (!response.ok || !payload || !payload.success || !payload.data || typeof payload.data.html !== 'string') {
|
||||||
|
throw new Error('revenue-tab-load-failed');
|
||||||
|
}
|
||||||
|
target.innerHTML = payload.data.html;
|
||||||
|
target.dataset.panelLoaded = 'true';
|
||||||
|
if (window.AksrtFrontend && typeof window.AksrtFrontend.rehydrate === 'function') {
|
||||||
|
window.AksrtFrontend.rehydrate(target, 'ajax');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}).finally(function() {
|
||||||
|
target.classList.remove('is-loading');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function activate(name, updateHistory, forceLoad, queryParams) {
|
function activate(name, updateHistory, forceLoad, queryParams) {
|
||||||
if (!panels[name]) name = defaultTab;
|
if (!panels[name]) name = defaultTab;
|
||||||
// VIP membership may change outside this page, so never reuse stale HTML.
|
// VIP membership may change outside this page, so never reuse stale HTML.
|
||||||
@@ -155,6 +188,18 @@
|
|||||||
var url;
|
var url;
|
||||||
try { url = new URL(link.href, window.location.href); } catch (_) { return; }
|
try { url = new URL(link.href, window.location.href); } catch (_) { return; }
|
||||||
if (url.origin !== window.location.origin) return;
|
if (url.origin !== window.location.origin) return;
|
||||||
|
if (link.closest('.uc-reward-tabs, .uc-reward-pagination')) {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
loadRevenueTab(url.searchParams).then(function() {
|
||||||
|
if (window.history.replaceState) window.history.replaceState({}, '', '/user/revenue/');
|
||||||
|
if (typeof window.AKSRTAffiliateRevenueInit === 'function') window.AKSRTAffiliateRevenueInit();
|
||||||
|
if (typeof window.AKSRTWithdrawInit === 'function') window.AKSRTWithdrawInit();
|
||||||
|
}).catch(function() {
|
||||||
|
if (typeof showToast === 'function') showToast(i18n.networkError || '加载失败,请重试');
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
var parts = url.pathname.replace(/\/+$/, '').split('/');
|
var parts = url.pathname.replace(/\/+$/, '').split('/');
|
||||||
var pathTab = parts.length > 2 && parts[parts.length - 2] === 'user' ? parts[parts.length - 1] : '';
|
var pathTab = parts.length > 2 && parts[parts.length - 2] === 'user' ? parts[parts.length - 1] : '';
|
||||||
var name = link.getAttribute('data-tab') || pathTab;
|
var name = link.getAttribute('data-tab') || pathTab;
|
||||||
@@ -164,7 +209,7 @@
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var hasQuery = url.search !== '';
|
var hasQuery = url.search !== '';
|
||||||
activate(name, false, hasQuery, url.searchParams).then(function() { updateUrl(name, url.href); });
|
activate(name, false, hasQuery, url.searchParams).then(function() { updateUrl(name, url.href); });
|
||||||
});
|
}, true);
|
||||||
var creatorPanel = panels.creator ? panels.creator.panel : null;
|
var creatorPanel = panels.creator ? panels.creator.panel : null;
|
||||||
if (creatorPanel) {
|
if (creatorPanel) {
|
||||||
creatorPanel.addEventListener('click', function(e) {
|
creatorPanel.addEventListener('click', function(e) {
|
||||||
|
|||||||
Reference in new issue
Block a user