index.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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 { Dialog } from "@/global_components/";
  18. import browser from "@/utils/browser";
  19. import { onMounted, watch, computed, ref, nextTick } from "vue";
  20. import { useStore } from "vuex";
  21. import { useApp, getApp } from "@/app";
  22. const store = useStore();
  23. const shareLink = ref("");
  24. const dialog = ref("");
  25. const show = ref(false);
  26. const showPaint = ref(true);
  27. const showCreated = ref(false);
  28. const roomId = ref(browser.getURLParam("roomId"));
  29. const role = ref(browser.getURLParam("role"));
  30. const userName = ref(browser.getURLParam("name"));
  31. const socket = computed(() => store.getters["rtc/socket"]);
  32. const openDialog = (str, link) => {
  33. shareLink.value = link;
  34. dialog.value = str;
  35. };
  36. const closeDialog = (str, link) => {
  37. dialog.value = "";
  38. dialog.value = str;
  39. };
  40. const confirmDialog = async () => {
  41. await getApp().Connect.follow.exit();
  42. store.commit("rtc/setIsJoined", false);
  43. if (socket.value) {
  44. if (browser.getURLParam("role") == "leader") {
  45. socket.value.emit("action", { type: "leader-dismiss" });
  46. }
  47. socket.value.close();
  48. store.commit("rtc/setSocket", null);
  49. }
  50. let tempUrl = window.location.href;
  51. ["mode", "name", "role", "roomId", "vruserId"].forEach((item) => {
  52. tempUrl = browser.replaceQueryString(tempUrl, item, "");
  53. });
  54. history.replaceState(null, null, tempUrl);
  55. store.commit("rtc/setRole", "");
  56. store.commit("showShoppingguide", false);
  57. dialog.value = "";
  58. };
  59. const closeCreated = (str, link) => {
  60. store.commit("showShoppingguide", false);
  61. showCreated.value = false;
  62. showguide();
  63. };
  64. const createdConfirm = (str, link) => {
  65. showCreated.value = false;
  66. show.value = true;
  67. showguide();
  68. };
  69. const showguide = () => {
  70. if (!localStorage.getItem("user_guide")) {
  71. Dialog.confirm({
  72. showCloseIcon: false,
  73. okText: "我知道了",
  74. content:
  75. "<span style='font-size: 16px; line-height: 1.5;'>開發者已遵守收集、使用最終用戶個人信息有關的所有可適用法律、政策和法規,保護用戶個人信息安全。<span/>",
  76. title: "隱私條款:",
  77. single: true,
  78. func: (state) => {
  79. if (state == "ok") {
  80. localStorage.setItem("user_guide", Date.now());
  81. }
  82. },
  83. });
  84. }
  85. };
  86. onMounted(() => {
  87. useApp().then(async (sdk) => {
  88. await nextTick();
  89. if (userName.value) {
  90. createdConfirm();
  91. } else {
  92. showCreated.value = true;
  93. // showguide()
  94. }
  95. });
  96. // showCreated.value = true;
  97. });
  98. </script>
  99. <style lang="scss" scoped></style>