需要添加直播接口

This commit is contained in:
cbb
2026-01-12 17:52:15 +08:00
parent 83fec2617c
commit 13af9eb303
281 changed files with 313157 additions and 104 deletions

View File

@@ -0,0 +1,146 @@
/**
* @module LoginState
* @module_description
* 用户身份认证与登录管理模块
* 核心功能:负责用户身份验证、登录状态管理、用户信息维护等基础认证服务。
* 技术特点:支持多种认证方式、会话管理、权限验证等高级功能,确保用户身份的安全和有效。
* 业务价值:为直播平台提供基础的用户认证能力,是所有其他业务模块的前置条件。
* 应用场景:用户登录、身份验证、会话管理、权限控制等基础认证场景。
*/
import { ref } from "vue";
import { UserProfileParam, LoginOptions, LogoutOptions, SetSelfInfoOptions } from "@/uni_modules/tuikit-atomic-x";
import { getRTCRoomEngineManager } from "./rtcRoomEngine";
import { callUTSFunction, safeJsonParse } from "../utils/utsUtils";
/**
* 当前登录用户信息
* @type {Ref<UserProfileParam>}
* @memberof module:LoginState
* @example
* import { useLoginState } from '@/uni_modules/tuikit-atomic-x/state/LoginState';
* const { loginUserInfo } = useLoginState();
*
* // 监听用户信息变化
* watch(loginUserInfo, (newUserInfo) => {
* if (newUserInfo) {
* console.log('用户信息更新:', newUserInfo);
* console.log('用户ID:', newUserInfo.userID);
* console.log('用户昵称:', newUserInfo.nickname);
* console.log('用户头像:', newUserInfo.avatarURL);
* }
* });
*
* // 获取当前用户信息
* const currentUser = loginUserInfo.value;
* if (currentUser) {
* console.log('当前登录用户:', currentUser.nickname);
* }
*/
const loginUserInfo = ref<UserProfileParam>();
/**
* 当前登录状态
* @type {Ref<string>}
* @memberof module:LoginState
* @example
* import { useLoginState } from '@/uni_modules/tuikit-atomic-x/state/LoginState';
* const { logout } = useLoginState();
* logout({
* onSuccess: () => console.log('登出成功'),
* onError: (error) => console.error('登出失败:', error)
* });
*/
const loginStatus = ref<string>();
/**
* 登录方法
* @param {LoginOptions} params - 登录参数
* @returns {void}
* @memberof module:LoginState
* @example
* import { useLoginState } from '@/uni_modules/tuikit-atomic-x/state/LoginState';
* const { login } = useLoginState();
* login({
* sdkAppID: 1400000000,
* userID: 'user123',
* userSig: 'eJx1kF1PwzAMhv9KlG...',
* onSuccess: () => console.log('登录成功'),
* onError: (error) => console.error('登录失败:', error)
* });
*/
function login(params: LoginOptions): void {
callUTSFunction("login", params);
}
/**
* 登出方法
* @param {LogoutOptions} [params] - 登出参数(可选)
* @returns {void}
* @memberof module:LoginState
* @example
* import { useLoginState } from '@/uni_modules/tuikit-atomic-x/state/LoginState';
* const { logout } = useLoginState();
* logout({
* onSuccess: () => console.log('登出成功'),
* onError: (error) => console.error('登出失败:', error)
* });
*/
function logout(params?: LogoutOptions): void {
callUTSFunction("logout", params || {});
}
/**
* 设置用户信息
* @param {SetSelfInfoOptions} userInfo - 用户信息
* @returns {void}
* @memberof module:LoginState
* @example
* import { useLoginState } from '@/uni_modules/tuikit-atomic-x/state/LoginState';
* const { setSelfInfo } = useLoginState();
* setSelfInfo({
* userID: 'user123',
* nickname: '张三',
* avatarURL: 'https://example.com/avatar.jpg',
* onSuccess: () => console.log('用户信息设置成功'),
* onError: (error) => console.error('用户信息设置失败:', error)
* });
*/
function setSelfInfo(userInfo: SetSelfInfoOptions): void {
callUTSFunction("setSelfInfo", userInfo);
}
function getLoginUserInfo(): UserProfileParam | undefined {
return loginUserInfo.value;
}
const onLoginStoreChanged = (eventName: string, res: string): void => {
try {
if (eventName === "loginUserInfo") {
const data = safeJsonParse<UserProfileParam>(res, {});
loginUserInfo.value = data;
} else if (eventName === "loginStatus") {
loginStatus.value = safeJsonParse<string>(res, "");
}
} catch (error) {
console.error("onLoginStoreChanged error:", error);
}
};
function bindEvent(): void {
getRTCRoomEngineManager().on("loginStoreChanged", onLoginStoreChanged, '');
}
export function useLoginState() {
bindEvent();
return {
loginUserInfo, // 当前登录用户信息
loginStatus, // 当前登录状态
login, // 登录方法
logout, // 登出方法
setSelfInfo, // 设置用户信息
getLoginUserInfo, // 获取登录用户信息
};
}
export default useLoginState;