index.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <template>
  2. <transition mode="out-in">
  3. <div>
  4. <dialogIndex @closeDialog="closeDialog" @confirmDialog="confirmDialog" v-if="dialog == 'dialogIndex'"></dialogIndex>
  5. <dialogShare :shareLink="shareLink" @closeDialog="closeDialog" v-if="dialog == 'dialogShare'"></dialogShare>
  6. <createdRoom v-if="showCreated" @closeCreated="closeCreated" @createdConfirm="createdConfirm()"></createdRoom>
  7. <PageRtcLive @closeSocket="confirmDialog" @openDialog="openDialog" v-if="show"></PageRtcLive>
  8. </div>
  9. </transition>
  10. </template>
  11. <script setup>
  12. import PageRtcLive from "./PageRtcLive";
  13. // import Draw from "./paint/Draw";
  14. import createdRoom from "./dialog/createdRoom";
  15. import dialogIndex from "./dialog/index.vue";
  16. import dialogShare from "./dialog/share.vue";
  17. import browser from "@/utils/browser";
  18. import { onMounted, watch, computed, ref, nextTick } from "vue";
  19. import { useStore } from "vuex";
  20. import { useApp, getApp } from "@/app";
  21. const store = useStore();
  22. const shareLink = ref("");
  23. const dialog = ref("");
  24. const show = ref(false);
  25. const showPaint = ref(true);
  26. const showCreated = ref(false);
  27. const roomId = ref(browser.getURLParam("roomId"));
  28. const role = ref(browser.getURLParam("role"));
  29. const userName = ref(browser.getURLParam("name"));
  30. const socket = computed(() => store.getters["rtc/socket"]);
  31. const openDialog = (str, link) => {
  32. shareLink.value = link;
  33. dialog.value = str;
  34. };
  35. const closeDialog = (str, link) => {
  36. dialog.value = "";
  37. dialog.value = str;
  38. };
  39. const confirmDialog = async () => {
  40. await getApp().Connect.follow.exit();
  41. store.commit("rtc/setIsJoined", false);
  42. if (socket.value) {
  43. if (role.value == "leader") {
  44. socket.value.emit("action", { type: "leader-dismiss" });
  45. }
  46. socket.value.close();
  47. store.commit("rtc/setSocket", null);
  48. window.parent.postMessage(
  49. {
  50. source: "cdf",
  51. event: "exit",
  52. params: {
  53. role:role.value
  54. },
  55. },
  56. "*"
  57. );
  58. }
  59. let tempUrl = window.location.href;
  60. ["mode", "name", "role", "roomId", "userId"].forEach((item) => {
  61. tempUrl = browser.replaceQueryString(tempUrl, item, "");
  62. });
  63. history.replaceState(null, null, tempUrl);
  64. window.parent.postMessage(
  65. {
  66. source: "cdf",
  67. event: "urlReplace",
  68. params: {
  69. tempUrl,
  70. },
  71. },
  72. "*"
  73. );
  74. store.commit("showShoppingguide", false);
  75. dialog.value = "";
  76. };
  77. const closeCreated = (str, link) => {
  78. store.commit("showShoppingguide", false);
  79. showCreated.value = false;
  80. };
  81. const createdConfirm = (str, link) => {
  82. showCreated.value = false;
  83. show.value = true;
  84. };
  85. onMounted(() => {
  86. useApp().then(async (sdk) => {
  87. await nextTick();
  88. if (userName.value) {
  89. createdConfirm();
  90. } else {
  91. showCreated.value = true;
  92. }
  93. });
  94. // showCreated.value = true;
  95. });
  96. </script>
  97. <style lang="scss" scoped></style>