join.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import consolaGlobalInstance from 'consola';
  2. // import sortBy from 'lodash-es/sortBy';
  3. import { unref, ref } from 'vue';
  4. import { useI18n } from '/@/hooks/useI18n';
  5. // import { unref } from 'vue';
  6. // import Dialog from '/@/components/basic/dialog';
  7. // import { getApp } from '/@/hooks/userApp';
  8. import { roomId, useRoom } from '/@/hooks/useRoom';
  9. import { useSocket } from '/@/hooks/userSocket';
  10. import { UserInfoType, useRtcStore } from '/@/store/modules/rtc';
  11. import { useAppStore } from '/@/store/modules/app';
  12. // import { useRtcSdk } from '/@/hooks/useTRTC';
  13. // import { useMiniApp } from '/@/hooks/useMiniApp';
  14. const { enterRoom } = useRoom();
  15. const isInternational = ref(import.meta.env.VITE_IS_INTERNATIONAL);
  16. const is404Page = ref(import.meta.env.VITE_404_PAGE);
  17. // 自已join的方法
  18. export async function handleJoin(data: any) {
  19. // const app = getApp();
  20. const { socket, closeSocket } = useSocket();
  21. const members = data?.members as any as UserInfoType[];
  22. // const user = data?.user as any as UserInfoType;
  23. const rtcStore = useRtcStore();
  24. // const userExsit = rtcStore.checkUserInMemberList(rtcStore.userId);
  25. // banLaterEnterer(members, user);
  26. const res = await enterRoom();
  27. const { code } = res.data;
  28. if (code === 4003 && !roomId.includes('temp_') && unref(isInternational)) {
  29. location.href = is404Page.value;
  30. return;
  31. }
  32. rtcStore.setIsJoined(true);
  33. consolaGlobalInstance.info({
  34. message: data,
  35. tag: 'socket:enter',
  36. });
  37. const { room } = useRoom();
  38. const maxNumber = unref(room)?.maxMan || 10;
  39. console.log('maxMan:', maxNumber, members.length, Number(maxNumber));
  40. if (members.length > Number(maxNumber)) {
  41. if (rtcStore.role === 'customer') {
  42. const { t } = useI18n();
  43. rtcStore.showBaseDialog(
  44. {
  45. title: t('base.tips'),
  46. desc: t('base.maxRooms'),
  47. okTxt: t('base.confirm'),
  48. closeTxt: t('base.cancel'),
  49. isSingle: true,
  50. },
  51. () => {
  52. setTimeout(() => {
  53. closeSocket();
  54. }, 1500);
  55. },
  56. );
  57. setTimeout(() => {
  58. closeSocket();
  59. }, 3000);
  60. }
  61. } else {
  62. members && rtcStore.setMemberList(members);
  63. }
  64. rtcStore.setConnectStatus(1);
  65. setTimeout(() => {
  66. if (!rtcStore.isLeader) {
  67. socket.emit('action', {
  68. type: 'user-init',
  69. });
  70. socket.emit('action', {
  71. type: 'ask-currentscene',
  72. });
  73. } else {
  74. const { currentScene } = useRoom();
  75. console.log('currentScene', unref(currentScene));
  76. socket.emit('action', {
  77. type: 'changeScene',
  78. data: unref(currentScene),
  79. });
  80. console.log('进入,主持人禁音-1');
  81. }
  82. const appStore = useAppStore();
  83. console.log('检查是否输入过密码', appStore.isPassWordConfirm);
  84. if (appStore.isPassWordConfirm) {
  85. socket.emit('action', {
  86. type: 'confirm-password',
  87. data: {
  88. userId: rtcStore.userId,
  89. },
  90. });
  91. }
  92. }, 1500);
  93. }
  94. // const banLaterEnterer = (members: UserInfoType[], user: UserInfoType) => {
  95. // if (members && user) {
  96. // console.log('banLaterEnterer', members);
  97. // const sameIDsArray = members.some((item) => item.UserId === user.UserId);
  98. // const sortList = sortBy(sameIDsArray, ['InTime'], ['asc']);
  99. // console.log('banLaterEnterer', sortList);
  100. // // const beforeUSer =
  101. // }
  102. // };