import IContext, { IPlatForm, IBizType, IAccessChannel } from "./IContext"; /** * 单例 主要存储上下文和鉴权信息 由外部注入 */ class Context { private context: IContext; private constructor() {} private static instance: Context = null; static getInstance() { if (!Context.instance) { Context.instance = new this(); } return Context.instance; } // 初始化上下文 setContext(context: IContext) { console.log( "-------------------------------context:" + JSON.stringify(context) ); this.context = context; } get wtk() { return Context.instance.context.profile.wtk; } get tk() { return Context.instance.context.profile.tk || ""; } get settings() { return Context.instance.context.settings; } get appId() { return Context.instance.context.appId; } get language() { return Context.instance.context.language === "en" ? "en" : "zh-cn"; } get platForm() { return Context.instance.context.platForm || IPlatForm.H5; } get bizType() { return Context.instance.context.bizType || IBizType.INNER_USER; } get accessChannel() { if ( [ IBizType.INNER_USER, IBizType.PRIVATE_USER, IBizType.OUTTER_USER, ].includes(this.bizType) ) { return IAccessChannel.USER; } return IAccessChannel.DOCTOR; } get uid() { return Context.instance.context.uid; } set uid(value: number) { Context.instance.context.uid = value; } } export default Context;