样式修改完成,待测试
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
(function (global) {
|
||||
var DEFAULT_REQUIRED_DAILY_FREE_ARTICLES = 2;
|
||||
|
||||
function isTruthy(value) {
|
||||
return (
|
||||
value === true ||
|
||||
value === 1 ||
|
||||
value === '1' ||
|
||||
String(value).toLowerCase() === 'true'
|
||||
);
|
||||
}
|
||||
|
||||
function firstDefined(source, keys) {
|
||||
if (!source || typeof source !== 'object') return undefined;
|
||||
|
||||
for (var i = 0; i < keys.length; i += 1) {
|
||||
var key = keys[i];
|
||||
if (
|
||||
Object.prototype.hasOwnProperty.call(source, key) &&
|
||||
source[key] !== undefined &&
|
||||
source[key] !== null
|
||||
) {
|
||||
return source[key];
|
||||
}
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function toNumber(value, fallback) {
|
||||
var numberValue = Number(value);
|
||||
return Number.isFinite(numberValue) ? numberValue : fallback;
|
||||
}
|
||||
|
||||
function buildQuotaReason(todayCount, requiredCount) {
|
||||
return (
|
||||
'今天需先发布' +
|
||||
requiredCount +
|
||||
'篇审核通过的免费文章后,才能发布付费文章(当前' +
|
||||
todayCount +
|
||||
'篇)'
|
||||
);
|
||||
}
|
||||
|
||||
function parseSummary(userData, options) {
|
||||
var data = userData && typeof userData === 'object' ? userData : {};
|
||||
var config = options || {};
|
||||
var status = String(
|
||||
firstDefined(data, ['expertStatus', 'expert_status']) || ''
|
||||
).toLowerCase();
|
||||
var isIntern = /实习|intern|trial/.test(status);
|
||||
var isRegularByStatus = /正式|regular|formal/.test(status);
|
||||
var isRegularExpert =
|
||||
isTruthy(
|
||||
firstDefined(data, [
|
||||
'is_regular_expert',
|
||||
'isRegularExpert',
|
||||
'regularExpert',
|
||||
])
|
||||
) || isRegularByStatus;
|
||||
var hasExpertIdentity =
|
||||
isTruthy(firstDefined(data, ['is_expert', 'isExpert', 'expert'])) ||
|
||||
isTruthy(
|
||||
firstDefined(data, [
|
||||
'is_regular_expert',
|
||||
'isRegularExpert',
|
||||
'regularExpert',
|
||||
])
|
||||
) ||
|
||||
isIntern ||
|
||||
isRegularByStatus;
|
||||
var requiredCount = toNumber(
|
||||
firstDefined(data, [
|
||||
'requiredDailyApprovedFreeArticleCount',
|
||||
'required_daily_approved_free_article_count',
|
||||
]),
|
||||
config.requiredDailyFreeArticleCount || DEFAULT_REQUIRED_DAILY_FREE_ARTICLES
|
||||
);
|
||||
var todayCount = toNumber(
|
||||
firstDefined(data, [
|
||||
'todayApprovedFreeArticleCount',
|
||||
'today_approved_free_article_count',
|
||||
]),
|
||||
0
|
||||
);
|
||||
var quotaExemptRaw = firstDefined(data, [
|
||||
'payArticleFreeQuotaExempt',
|
||||
'pay_article_free_quota_exempt',
|
||||
]);
|
||||
var canPublishRaw = firstDefined(data, [
|
||||
'canPublishPayArticle',
|
||||
'can_publish_pay_article',
|
||||
]);
|
||||
var backendReason = String(
|
||||
firstDefined(data, [
|
||||
'payArticlePublishReason',
|
||||
'pay_article_publish_reason',
|
||||
]) || ''
|
||||
);
|
||||
var quotaExempt = isTruthy(quotaExemptRaw);
|
||||
var hasBackendPaidDecision = canPublishRaw !== undefined;
|
||||
var canPaid = false;
|
||||
var paidReason = '';
|
||||
|
||||
if (quotaExempt) {
|
||||
canPaid = true;
|
||||
} else if (hasBackendPaidDecision) {
|
||||
canPaid = isTruthy(canPublishRaw);
|
||||
paidReason = canPaid
|
||||
? ''
|
||||
: backendReason ||
|
||||
(!hasExpertIdentity || !isRegularExpert
|
||||
? '正式专家才能发布付费文章'
|
||||
: buildQuotaReason(todayCount, requiredCount));
|
||||
} else if (!hasExpertIdentity || !isRegularExpert) {
|
||||
paidReason = '正式专家才能发布付费文章';
|
||||
} else {
|
||||
canPaid = todayCount >= requiredCount;
|
||||
paidReason = canPaid ? '' : buildQuotaReason(todayCount, requiredCount);
|
||||
}
|
||||
|
||||
return {
|
||||
hasExpertIdentity: hasExpertIdentity,
|
||||
isRegularExpert: hasExpertIdentity && isRegularExpert,
|
||||
canFree: hasExpertIdentity,
|
||||
canPaid: canPaid,
|
||||
quotaExempt: quotaExempt,
|
||||
todayFreeArticleCount: todayCount,
|
||||
requiredDailyFreeArticleCount: requiredCount,
|
||||
paidReason: paidReason,
|
||||
reason: paidReason,
|
||||
};
|
||||
}
|
||||
|
||||
global.PublishPermission = {
|
||||
isTruthy: isTruthy,
|
||||
parseSummary: parseSummary,
|
||||
};
|
||||
})(typeof window !== 'undefined' ? window : globalThis);
|
||||
Reference in New Issue
Block a user