成就
This commit is contained in:
parent
75dd8d7920
commit
dc26c48c0f
@ -560,6 +560,7 @@
|
|||||||
new URLSearchParams(window.location.search).get(
|
new URLSearchParams(window.location.search).get(
|
||||||
'tab'
|
'tab'
|
||||||
) || 'honors',
|
) || 'honors',
|
||||||
|
targetUserID: normalizedQueryUserID(),
|
||||||
loading: false,
|
loading: false,
|
||||||
toastTimer: 0,
|
toastTimer: 0,
|
||||||
profile: null,
|
profile: null,
|
||||||
@ -596,6 +597,30 @@
|
|||||||
function validTab(value) {
|
function validTab(value) {
|
||||||
return tabs[value] ? value : 'honors';
|
return tabs[value] ? value : 'honors';
|
||||||
}
|
}
|
||||||
|
function normalizedQueryUserID() {
|
||||||
|
var value = String(
|
||||||
|
new URLSearchParams(window.location.search).get(
|
||||||
|
'user_id'
|
||||||
|
) || ''
|
||||||
|
).trim();
|
||||||
|
return /^\d+$/.test(value) && Number(value) > 0
|
||||||
|
? value
|
||||||
|
: '';
|
||||||
|
}
|
||||||
|
function hasAccessToken() {
|
||||||
|
return !!(
|
||||||
|
window.HyAppAPI &&
|
||||||
|
window.HyAppAPI.getAccessToken &&
|
||||||
|
window.HyAppAPI.getAccessToken()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
function canLoadAchievements() {
|
||||||
|
return !!(
|
||||||
|
window.HyAppAPI &&
|
||||||
|
window.HyAppAPI.achievement &&
|
||||||
|
(state.targetUserID || hasAccessToken())
|
||||||
|
);
|
||||||
|
}
|
||||||
function showToast(message) {
|
function showToast(message) {
|
||||||
var toast = byId('toast');
|
var toast = byId('toast');
|
||||||
toast.textContent = message;
|
toast.textContent = message;
|
||||||
@ -947,18 +972,22 @@
|
|||||||
}
|
}
|
||||||
function achievementQuery(name, page) {
|
function achievementQuery(name, page) {
|
||||||
var cfg = tabs[name] || tabs.honors;
|
var cfg = tabs[name] || tabs.honors;
|
||||||
return {
|
var query = {
|
||||||
collection_type: cfg.collection_type,
|
collection_type: cfg.collection_type,
|
||||||
collection_id: cfg.collection_id || '',
|
collection_id: cfg.collection_id || '',
|
||||||
page: page,
|
page: page,
|
||||||
page_size: 60,
|
page_size: 60,
|
||||||
};
|
};
|
||||||
|
if (state.targetUserID) query.user_id = state.targetUserID;
|
||||||
|
return query;
|
||||||
}
|
}
|
||||||
function fetchAchievementList(name, page, acc) {
|
function fetchAchievementList(name, page, acc) {
|
||||||
var nextPage = page || 1;
|
var nextPage = page || 1;
|
||||||
var items = acc || [];
|
var items = acc || [];
|
||||||
return window.HyAppAPI.achievement
|
return window.HyAppAPI.achievement
|
||||||
.list(achievementQuery(name, nextPage))
|
.list(achievementQuery(name, nextPage), {
|
||||||
|
skipAuth: !!state.targetUserID,
|
||||||
|
})
|
||||||
.then(function (data) {
|
.then(function (data) {
|
||||||
var current = normalizeAchievements(data);
|
var current = normalizeAchievements(data);
|
||||||
var merged = items.concat(current);
|
var merged = items.concat(current);
|
||||||
@ -985,11 +1014,7 @@
|
|||||||
}
|
}
|
||||||
render();
|
render();
|
||||||
if (state.loaded[state.tab]) return Promise.resolve();
|
if (state.loaded[state.tab]) return Promise.resolve();
|
||||||
if (
|
if (!canLoadAchievements()) {
|
||||||
!window.HyAppAPI ||
|
|
||||||
!window.HyAppAPI.achievement ||
|
|
||||||
!window.HyAppAPI.getAccessToken()
|
|
||||||
) {
|
|
||||||
state.loaded[state.tab] = true;
|
state.loaded[state.tab] = true;
|
||||||
render();
|
render();
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
@ -1016,11 +1041,51 @@
|
|||||||
}
|
}
|
||||||
function loadUserProfile() {
|
function loadUserProfile() {
|
||||||
var tasks = [];
|
var tasks = [];
|
||||||
var hasToken =
|
var hasToken = hasAccessToken();
|
||||||
|
if (
|
||||||
|
state.targetUserID &&
|
||||||
window.HyAppAPI &&
|
window.HyAppAPI &&
|
||||||
window.HyAppAPI.getAccessToken &&
|
window.HyAppAPI.user
|
||||||
window.HyAppAPI.getAccessToken();
|
) {
|
||||||
if (window.HyAppParams && window.HyAppParams.loadUser) {
|
if (window.HyAppAPI.user.profile) {
|
||||||
|
tasks.push(
|
||||||
|
window.HyAppAPI.user
|
||||||
|
.profile(state.targetUserID, {
|
||||||
|
skipAuth: true,
|
||||||
|
})
|
||||||
|
.then(function (data) {
|
||||||
|
state.profile = profileSource(data);
|
||||||
|
renderHeader();
|
||||||
|
return data;
|
||||||
|
})
|
||||||
|
.catch(function () {
|
||||||
|
return null;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (window.HyAppAPI.user.appearance) {
|
||||||
|
tasks.push(
|
||||||
|
window.HyAppAPI.user
|
||||||
|
.appearance(state.targetUserID, {
|
||||||
|
skipAuth: true,
|
||||||
|
})
|
||||||
|
.then(function (data) {
|
||||||
|
state.appearance =
|
||||||
|
normalizeAppearance(data);
|
||||||
|
renderHeader();
|
||||||
|
return data;
|
||||||
|
})
|
||||||
|
.catch(function () {
|
||||||
|
state.appearance = {};
|
||||||
|
renderHeader();
|
||||||
|
return null;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else if (
|
||||||
|
window.HyAppParams &&
|
||||||
|
window.HyAppParams.loadUser
|
||||||
|
) {
|
||||||
tasks.push(
|
tasks.push(
|
||||||
window.HyAppParams.loadUser()
|
window.HyAppParams.loadUser()
|
||||||
.then(function (current) {
|
.then(function (current) {
|
||||||
@ -1034,6 +1099,7 @@
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
|
!state.targetUserID &&
|
||||||
hasToken &&
|
hasToken &&
|
||||||
window.HyAppAPI.user &&
|
window.HyAppAPI.user &&
|
||||||
window.HyAppAPI.user.appearance
|
window.HyAppAPI.user.appearance
|
||||||
@ -1064,11 +1130,7 @@
|
|||||||
var active = state.tab;
|
var active = state.tab;
|
||||||
var other = active === 'honors' ? 'event' : 'honors';
|
var other = active === 'honors' ? 'event' : 'honors';
|
||||||
if (state.loaded[other]) return Promise.resolve();
|
if (state.loaded[other]) return Promise.resolve();
|
||||||
if (
|
if (!canLoadAchievements()) {
|
||||||
!window.HyAppAPI ||
|
|
||||||
!window.HyAppAPI.achievement ||
|
|
||||||
!window.HyAppAPI.getAccessToken()
|
|
||||||
) {
|
|
||||||
state.loaded[other] = true;
|
state.loaded[other] = true;
|
||||||
renderHeader();
|
renderHeader();
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
|
|||||||
@ -453,7 +453,7 @@ var default_api = 'https://api.global-interaction.com/';
|
|||||||
);
|
);
|
||||||
var token = getAccessToken();
|
var token = getAccessToken();
|
||||||
var url = buildURL(path, opts.query);
|
var url = buildURL(path, opts.query);
|
||||||
if (token) headers.Authorization = 'Bearer ' + token;
|
if (token && !opts.skipAuth) headers.Authorization = 'Bearer ' + token;
|
||||||
headers['X-App-Code'] = requestAppCode();
|
headers['X-App-Code'] = requestAppCode();
|
||||||
if (!shouldPersist() && isSameOriginURL(url))
|
if (!shouldPersist() && isSameOriginURL(url))
|
||||||
headers['Cache-Control'] = 'no-cache';
|
headers['Cache-Control'] = 'no-cache';
|
||||||
@ -501,8 +501,29 @@ var default_api = 'https://api.global-interaction.com/';
|
|||||||
overview: function () {
|
overview: function () {
|
||||||
return request('/api/v1/users/me/overview', { method: 'GET' });
|
return request('/api/v1/users/me/overview', { method: 'GET' });
|
||||||
},
|
},
|
||||||
appearance: function () {
|
profile: function (userID, options) {
|
||||||
return request('/api/v1/users/me/appearance', { method: 'GET' });
|
var id = String(userID || '').trim();
|
||||||
|
var opts = options || {};
|
||||||
|
if (!id) return Promise.reject(new Error('user_id is required'));
|
||||||
|
return request(
|
||||||
|
'/api/v1/users/by-id/' + encodeURIComponent(id) + '/profile',
|
||||||
|
{
|
||||||
|
method: 'GET',
|
||||||
|
skipAuth: !!opts.skipAuth,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
appearance: function (userID, options) {
|
||||||
|
var id = String(userID || '').trim();
|
||||||
|
var opts = options || {};
|
||||||
|
return request(
|
||||||
|
id
|
||||||
|
? '/api/v1/users/by-id/' +
|
||||||
|
encodeURIComponent(id) +
|
||||||
|
'/appearance'
|
||||||
|
: '/api/v1/users/me/appearance',
|
||||||
|
{ method: 'GET', skipAuth: !!opts.skipAuth }
|
||||||
|
);
|
||||||
},
|
},
|
||||||
hostIdentity: function () {
|
hostIdentity: function () {
|
||||||
return request('/api/v1/users/me/host-identity', {
|
return request('/api/v1/users/me/host-identity', {
|
||||||
@ -1060,14 +1081,18 @@ var default_api = 'https://api.global-interaction.com/';
|
|||||||
},
|
},
|
||||||
options: function (displayUserID, extra) {
|
options: function (displayUserID, extra) {
|
||||||
if (isConfiguredWebPay()) {
|
if (isConfiguredWebPay()) {
|
||||||
var query = Object.assign(aslanUserQuery(displayUserID, extra), {
|
var query = Object.assign(
|
||||||
payCountryId:
|
aslanUserQuery(displayUserID, extra),
|
||||||
extra && (extra.pay_country_id || extra.payCountryId),
|
{
|
||||||
countryCode:
|
payCountryId:
|
||||||
extra && (extra.country_code || extra.countryCode),
|
extra &&
|
||||||
regionId: extra && (extra.region_id || extra.regionId),
|
(extra.pay_country_id || extra.payCountryId),
|
||||||
userId: extra && (extra.user_id || extra.userId),
|
countryCode:
|
||||||
});
|
extra && (extra.country_code || extra.countryCode),
|
||||||
|
regionId: extra && (extra.region_id || extra.regionId),
|
||||||
|
userId: extra && (extra.user_id || extra.userId),
|
||||||
|
}
|
||||||
|
);
|
||||||
return request(
|
return request(
|
||||||
appEndpoint('options', '/order/web/pay/h5/options'),
|
appEndpoint('options', '/order/web/pay/h5/options'),
|
||||||
{
|
{
|
||||||
@ -1496,10 +1521,12 @@ var default_api = 'https://api.global-interaction.com/';
|
|||||||
// 成就页只读当前用户的 App 成就和徽章展示资料;认证、app_code、env、错误 envelope 仍由 request 统一处理。
|
// 成就页只读当前用户的 App 成就和徽章展示资料;认证、app_code、env、错误 envelope 仍由 request 统一处理。
|
||||||
// collection_type 由页面按 tab 传入,避免 H5 自己拼接不同业务集合导致后端筛选语义漂移。
|
// collection_type 由页面按 tab 传入,避免 H5 自己拼接不同业务集合导致后端筛选语义漂移。
|
||||||
var achievementAPI = {
|
var achievementAPI = {
|
||||||
list: function (query) {
|
list: function (query, options) {
|
||||||
|
var opts = options || {};
|
||||||
return request('/api/v1/achievements', {
|
return request('/api/v1/achievements', {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
query: query || {},
|
query: query || {},
|
||||||
|
skipAuth: !!opts.skipAuth,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
badges: function () {
|
badges: function () {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user