58 lines
2.1 KiB
JavaScript
58 lines
2.1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.default = useMyInfo;
|
|
const tslib_1 = require("tslib");
|
|
const react_1 = require("react");
|
|
const useFeatures_1 = tslib_1.__importDefault(require("./useFeatures"));
|
|
function useMyInfo() {
|
|
const features = (0, useFeatures_1.default)();
|
|
const getMyInfo = () => {
|
|
const userInfo = features.token.getUserInfo();
|
|
const { mobile } = (userInfo?.mobile$user && userInfo?.mobile$user[0]) ||
|
|
(userInfo?.user$ref &&
|
|
userInfo?.user$ref[0] &&
|
|
userInfo?.user$ref[0].mobile$user &&
|
|
userInfo?.user$ref[0].mobile$user[0]) ||
|
|
{};
|
|
const extraFile = userInfo?.extraFile$entity?.find((ele) => ele.tag1 === 'avatar');
|
|
const avatarUrl = features.extraFile.getUrl(extraFile);
|
|
return {
|
|
avatarUrl,
|
|
name: userInfo?.name || '',
|
|
nickname: userInfo?.nickname || '',
|
|
mobile: mobile || '',
|
|
};
|
|
};
|
|
const myInfo = getMyInfo();
|
|
const [avatarUrl, setAvatarUrl] = (0, react_1.useState)(myInfo.avatarUrl || '');
|
|
const [nickname, setNickname] = (0, react_1.useState)(myInfo.nickname || '');
|
|
const [name, setName] = (0, react_1.useState)(myInfo.name || '');
|
|
const [mobile, setMobile] = (0, react_1.useState)(myInfo.mobile || '');
|
|
(0, react_1.useEffect)(() => {
|
|
const appUnsub = features.application.subscribe(() => {
|
|
const { avatarUrl, nickname, name, mobile } = getMyInfo();
|
|
setAvatarUrl(avatarUrl);
|
|
setNickname(nickname);
|
|
setName(name);
|
|
setMobile(mobile);
|
|
});
|
|
const tokenUnsub = features.token.subscribe(() => {
|
|
const { avatarUrl, nickname, name, mobile } = getMyInfo();
|
|
setAvatarUrl(avatarUrl);
|
|
setNickname(nickname);
|
|
setName(name);
|
|
setMobile(mobile);
|
|
});
|
|
return () => {
|
|
appUnsub();
|
|
tokenUnsub();
|
|
};
|
|
}, []);
|
|
return {
|
|
avatarUrl,
|
|
name,
|
|
nickname,
|
|
mobile,
|
|
};
|
|
}
|