Files
jiapu/dist/public/js/app-promotion-pages.js
T

2 lines
3.0 KiB
JavaScript

(function(t,o){if(typeof module=="object"&&module.exports){module.exports=o(t);return}t.AppPromotionPages=o(t),t.document&&t.document.addEventListener("DOMContentLoaded",function(){t.AppPromotionPages.init()})})(typeof globalThis!="undefined"?globalThis:window,function(t){"use strict";var o=t.MediaDisplay||(typeof require=="function"?require("./media-display.js"):null);function u(r){return String(r==null?"":r).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function P(r){var e;return typeof r=="number"&&!Number.isSafeInteger(r)||r==null?"":(e=String(r).trim(),/^[1-9][0-9]*$/.test(e)?e:"")}function d(r){return r==null?"":String(r).trim()}function f(r){var e=d(r),n;if(!e)return"";try{n=new URL(e)}catch(l){return""}return n.protocol==="http:"||n.protocol==="https:"?n.href:""}function s(r){var e=r||{},n=P(e.promotionId),l=d(e.promotionTitle),i=o&&o.normalizeFileAccess(e.coverFile),p;return!n||!l||String(e.status)!=="0"||e.coverFile!==void 0&&e.coverFile!==null&&!i?null:(p={promotionId:n,promotionTitle:l,promotionDesc:d(e.promotionDesc),targetUrl:f(e.targetUrl)},i&&(p.coverFile=i),p)}function m(r){var e;return Array.isArray(r)?(e=r.map(s),e.some(function(n){return!n})?[]:e):[]}function g(r){var e=(o?o.renderImage(r.coverFile,{alt:r.promotionTitle+"封面",className:"promotion-cover-media"}):"")+"<div><h3>"+u(r.promotionTitle)+"</h3><p>"+u(r.promotionDesc)+"</p></div>";return r.targetUrl?'<a class="promotion-card" data-promotion-id="'+u(r.promotionId)+'" href="'+u(r.targetUrl)+'" target="_blank" rel="noopener noreferrer">'+e+"</a>":'<article class="promotion-card" data-promotion-id="'+u(r.promotionId)+'">'+e+"</article>"}function h(r){var e=m(r);return e.map(g).join("")}function a(r,e,n){if(r){if(t.ProfileUI&&t.ProfileUI.setApiState){t.ProfileUI.setApiState(r,e,n);return}r.textContent=n}}async function v(r){var e,n;if(!r||typeof r.promotions!="function")throw new Error("应用推广接口不可用");if(e=await r.promotions({platform:"pc"}),n=m(e),!Array.isArray(e)||n.length!==e.length)throw new Error("推广列表响应无效");return n}function y(r){return Number(r&&(r.status||r.code))===401}function c(r){return Number(r&&(r.status||r.code))===403}async function T(){var r=t.document&&t.document.querySelector("[data-promotion-page]"),e=t.document&&t.document.querySelector("[data-promotion-list]"),n=t.GenealogyApi&&t.GenealogyApi.defaultClient;if(!(!r||!e)){if(!n||!n.getToken||!n.getToken()){a(e,"forbidden","登录后可查看应用推广。");return}a(e,"loading","正在读取应用推广…");try{var l=await v(n);if(!l.length){a(e,"empty","当前暂无应用推广。");return}e.innerHTML=l.map(g).join("")}catch(i){if(y(i)){n.clearToken&&n.clearToken(),a(e,"forbidden","登录后可查看应用推广。");return}a(e,c(i)?"forbidden":"error",c(i)?"当前账号无权查看应用推广。":"应用推广读取失败,请稍后重试。")}}}return{normalizePromotion:s,normalizePromotionList:m,normalizeTargetUrl:f,renderPromotionList:h,setPromotionState:a,loadPromotions:v,isUnauthorized:y,isForbidden:c,init:T}});