join.ts 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import consolaGlobalInstance from 'consola';
  2. // import Dialog from '/@/components/basic/dialog';
  3. // import { getApp } from '/@/hooks/userApp';
  4. import { useRoom } from '/@/hooks/useRoom';
  5. import { useSocket } from '/@/hooks/userSocket';
  6. import { UserInfoType, useRtcStore } from '/@/store/modules/rtc';
  7. const { enterRoom } = useRoom();
  8. // 自已join的方法
  9. export function handleJoin(data: any) {
  10. // const app = getApp();
  11. const { socket, closeSocket } = useSocket();
  12. const members = data?.members as any as UserInfoType[];
  13. const user = data?.user as any as UserInfoType;
  14. const rtcStore = useRtcStore();
  15. const userExsit = rtcStore.checkUserInMemberList(rtcStore.userId);
  16. enterRoom();
  17. rtcStore.setIsJoined(true);
  18. consolaGlobalInstance.info({
  19. message: data,
  20. tag: 'socket:enter',
  21. });
  22. if (user) {
  23. console.log('gem1', rtcStore.userId);
  24. console.log('gem2', rtcStore.memberList);
  25. const userExsit = rtcStore.checkUserInMemberList(rtcStore.userId);
  26. console.log('gem3', userExsit, user.Id !== userExsit?.Id);
  27. if (userExsit) {
  28. // Dialog.confirm({
  29. // showCloseIcon: false,
  30. // okText: '我知道了',
  31. // content:
  32. // "<span style='font-size: 16px; line-height: 1.5;'>您已有登录端在登录,请不要重复登录<span/>",
  33. // title: '隱私條款:',
  34. // single: true,
  35. // func: (state) => {},
  36. // });
  37. }
  38. } else {
  39. }
  40. members && rtcStore.setMemberList(members);
  41. console.log('gem', rtcStore.memberList.length, userExsit);
  42. const maxNumber = import.meta.env.VITE_ROOM_MEMBER || 10;
  43. console.log('roomMaxNumber', maxNumber);
  44. if (rtcStore.memberList.length > Number(maxNumber)) {
  45. if (rtcStore.role === 'customer') {
  46. rtcStore.showBaseDialog(
  47. {
  48. title: '温馨提示',
  49. desc: '带看人数已满,可切换自由观看',
  50. okTxt: '自由观看',
  51. closeTxt: '取消',
  52. isSingle: true,
  53. },
  54. () => {
  55. setTimeout(() => {
  56. closeSocket();
  57. }, 1500);
  58. },
  59. );
  60. // Dialog.toast({ content: `房间已满员` });
  61. // setTimeout(() => {
  62. // closeSocket();
  63. // }, 1500);
  64. // return;
  65. }
  66. }
  67. const { currentScene } = useRoom();
  68. if (rtcStore.isLeader) {
  69. socket.emit('action', {
  70. type: 'changeScene',
  71. data: currentScene.value,
  72. });
  73. }
  74. if (!rtcStore.isLeader) {
  75. setTimeout(() => {
  76. socket.emit('action', {
  77. type: 'user-init',
  78. });
  79. }, 1500);
  80. }
  81. }