fix(user): replicate level center page
This commit is contained in:
1 parent
6f1860f5d0
commit
632a7d15ba
4 files changed
+642
-188
No files matched your search
@@ -107,12 +107,11 @@
|
||||
var allowedParams = [];
|
||||
if (name === 'creator') allowedParams = ['income_page'];
|
||||
if (name === 'revenue') allowedParams = ['reward_tab', 'commission_page', 'user_page'];
|
||||
if (name === 'posts') allowedParams = ['post_status', 'posts_page'];
|
||||
if (name === 'follow') allowedParams = ['follow_list', 'follow_page'];
|
||||
if (name === 'credits') allowedParams = ['asset', 'page'];
|
||||
allowedParams.forEach(function(key) {
|
||||
if (params.get(key)) url += (url.indexOf('?') === -1 ? '?' : '&') + key + '=' + encodeURIComponent(params.get(key));
|
||||
});
|
||||
if (name === 'posts') allowedParams = ['post_status', 'posts_page'];
|
||||
if (name === 'follow') allowedParams = ['follow_list', 'follow_page'];
|
||||
allowedParams.forEach(function(key) {
|
||||
if (params.get(key)) url += (url.indexOf('?') === -1 ? '?' : '&') + key + '=' + encodeURIComponent(params.get(key));
|
||||
});
|
||||
}
|
||||
target._aksrtPanelRequest = fetch(url, {
|
||||
credentials: 'same-origin',
|
||||
@@ -135,9 +134,31 @@
|
||||
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) {
|
||||
/* Level tabs are nested inside the active panel and must not enter the
|
||||
* main user-center navigation handler. */
|
||||
function activateLevelTab(link) {
|
||||
var page = link.closest('.aksrt-level-page');
|
||||
var paneId = link.getAttribute('data-aksrt-level-tab') || '';
|
||||
if (!page || !paneId) return false;
|
||||
var pane = Array.prototype.find.call(page.querySelectorAll('.aksrt-level-experience .tab-pane'), function(item) {
|
||||
return item.id === paneId;
|
||||
});
|
||||
if (!pane) return false;
|
||||
page.querySelectorAll('[data-aksrt-level-tab]').forEach(function(tab) {
|
||||
var active = tab.getAttribute('data-aksrt-level-tab') === paneId;
|
||||
tab.classList.toggle('is-active', active);
|
||||
if (tab.getAttribute('role') === 'tab') tab.setAttribute('aria-selected', active ? 'true' : 'false');
|
||||
});
|
||||
page.querySelectorAll('.aksrt-level-experience .tab-pane').forEach(function(item) {
|
||||
var active = item === pane;
|
||||
item.classList.toggle('active', active);
|
||||
item.classList.toggle('in', active);
|
||||
item.hidden = !active;
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
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'));
|
||||
@@ -201,8 +222,14 @@
|
||||
|
||||
// Delegate every internal user-center link. This also covers markup injected
|
||||
// after a REST panel refresh, so panel navigation never falls back to a full load.
|
||||
document.addEventListener('click', function(e) {
|
||||
var withdrawOpen = e.target && e.target.closest ? e.target.closest('[data-aksrt-withdraw-open]') : null;
|
||||
document.addEventListener('click', function(e) {
|
||||
var levelTab = e.target && e.target.closest ? e.target.closest('[data-aksrt-level-tab]') : null;
|
||||
if (levelTab && activateLevelTab(levelTab)) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
return;
|
||||
}
|
||||
var withdrawOpen = e.target && e.target.closest ? e.target.closest('[data-aksrt-withdraw-open]') : null;
|
||||
if (withdrawOpen) {
|
||||
var withdrawModal = document.querySelector('[data-aksrt-withdraw-modal]');
|
||||
if (withdrawModal) {
|
||||
|
||||
Reference in new issue
Block a user