Files
jiapu/dist/public/js/profile-pages.js
T

2 lines
4.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
(function(i,n){if(typeof module=="object"&&module.exports){module.exports=n(i);return}i.ProfilePages=n(i),i.document&&i.document.addEventListener("DOMContentLoaded",function(){i.ProfilePages.init()})})(typeof globalThis!="undefined"?globalThis:window,function(i){"use strict";var n=i.document,d=i.MediaDisplay||(typeof require=="function"?require("./media-display.js"):null);function p(e){var t=e==null?"":String(e).trim();return t||void 0}function l(e,t,a){var r=e&&e[t];return r==null||r===""?a:r}function P(e){var t=l(e,"nickName","家");return String(t).charAt(0)||"家"}function k(e){var t={0:"男",1:"女",2:"未知"};return t[String(e)]||"待填写"}function h(e){var t=d&&d.normalizeFileAccess(e&&e.avatarFile),a;return a={displayName:l(e,"nickName","未设置昵称"),realName:l(e,"realName","待填写"),avatarText:P(e),avatarStatus:t?"已设置":"未设置",phone:l(e,"phone","未绑定"),sex:k(e&&e.sex),birthday:l(e,"birthday","待填写"),email:l(e,"email","待填写"),regionText:"当前资料接口未提供"},t&&(a.avatarFile=t),a}function x(e){var t=e||{},a={},r=p(t.avatar);if(["nickName","realName","sex","birthday","email"].forEach(function(u){var L=p(t[u]);L!==void 0&&(a[u]=L)}),r!==void 0){if(!/^\d+$/.test(r))throw new Error("头像 OSS ID 必须是整数");a.avatar=r}return a}function b(e){return!e||Object.keys(e).length===0?"请至少填写一项资料":e.email&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.email)?"请输入正确的邮箱地址":""}function T(){return i.GenealogyApi&&i.GenealogyApi.defaultClient}function N(e,t){var a=t&&(t.status||t.code);return!e||!e.getToken||!e.getToken()||Number(a)===401}function F(){i.NavigationUtil.open("login.html")}function c(e,t){return N(e,t)?(e&&e.clearToken&&e.clearToken(),F(),!0):!1}function s(e,t){return n?(t||n).querySelector(e):null}function o(e,t){return n?Array.prototype.slice.call((t||n).querySelectorAll(e)):[]}function v(e){if(i.layui&&i.layui.layer){i.layui.layer.msg(e);return}i.alert&&i.alert(e)}function f(e,t,a){var r=s("[data-profile-status]",e);if(r){if(i.ProfileUI&&i.ProfileUI.setApiState&&t){i.ProfileUI.setApiState(r,t,a);return}r.textContent=a||""}}function S(e,t){o('button[type="submit"]',e).forEach(function(a){a.dataset.defaultLabel||(a.dataset.defaultLabel=a.textContent),a.disabled=t,a.textContent=t?"保存中…":a.dataset.defaultLabel})}function A(e){o("[data-profile-text]").forEach(function(t){var a=t.getAttribute("data-profile-text"),r=e[a];a==="avatarText"&&e.avatarFile||r!=null&&r!==""&&(t.textContent=r)}),o("[data-profile-avatar]").forEach(function(t){if(!d){t.textContent=e.avatarText;return}t.innerHTML=d.renderAvatar(e.avatarFile,{name:e.displayName,className:"profile-avatar-media"})})}function m(e,t){var a=s("[data-profile-load-status]");if(a){if(i.ProfileUI&&i.ProfileUI.setApiState&&e){i.ProfileUI.setApiState(a,e,t);return}a.textContent=t||""}}function U(){return{displayName:"账户资料暂时无法读取",realName:"暂无数据",avatarText:"",avatarStatus:"暂无数据",phone:"暂无数据",birthday:"暂无数据",email:"暂无数据",sex:"暂无数据",regionText:"暂无数据"}}function q(e){var t={};return o("[name]",e).forEach(function(a){t[a.name]=a.value}),t}function w(e){var t=s("[data-profile-form]"),a=e||{};t&&o("[name]",t).forEach(function(r){a[r.name]!==void 0&&a[r.name]!==null&&(r.value=a[r.name])})}var y=0;async function g(){var e=T(),t,a=y+1;if(y=a,!(!e||!n||!n.querySelector("[data-profile-page]"))&&!c(e)){m("loading","正在读取账户资料…");try{if(t=await e.currentProfile(),a!==y)return;i.PublicNavigation&&i.PublicNavigation.storeUser(t),A(h(t)),w(t),m("","")}catch(r){if(c(e,r))return;A(U()),m("error","资料读取失败,请刷新页面后重试。"),v(r.message||"个人资料加载失败")}}}async function E(e){var t=T(),a,r;if(!(!t||!e)&&!c(t)){try{a=x(q(e))}catch(u){f(e,"error",u.message||"资料校验失败");return}if(r=b(a),r){f(e,"error",r);return}try{S(e,!0),f(e,"loading","正在保存资料…"),await t.updateProfile(a),f(e,"","已保存"),v("个人资料已保存"),await g()}catch(u){if(c(t,u))return;f(e,"error","保存失败,请稍后重试。"),v(u.message||"个人资料保存失败")}finally{S(e,!1)}}}function I(){var e=s("[data-profile-form]");e&&e.addEventListener("submit",function(t){if(t.preventDefault(),!e.checkValidity()){f(e,"error","请检查资料填写是否正确"),e.reportValidity();return}E(e)})}function C(){I(),g()}return{getAvatarText:P,buildProfileView:h,buildUnavailableProfileView:U,buildProfileUpdateBody:x,validateProfileUpdateBody:b,shouldRedirectToLogin:N,reloadProfile:g,init:C}});