|
@@ -25,11 +25,13 @@
|
|
|
<div
|
|
|
class="brushesBack"
|
|
|
@click="onDrawUndo"
|
|
|
+ :class="{ disabled: !canUndo }"
|
|
|
v-if="unref(isBrushes) && isNativeLeader"
|
|
|
></div>
|
|
|
<div
|
|
|
class="brushes"
|
|
|
v-if="isNativeLeader"
|
|
|
+ :class="{ brushed: isBrushes }"
|
|
|
@click="onDraw(!isBrushes)"
|
|
|
></div>
|
|
|
|
|
@@ -82,12 +84,12 @@
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
-import { computed, nextTick, ref, unref } from "vue";
|
|
|
+import { computed, nextTick, onMounted, onUnmounted, ref, unref } from "vue";
|
|
|
import { getApp, useApp } from "/@/hooks/userApp";
|
|
|
import { initSocketEvent } from "./roomControl";
|
|
|
import { createSocket } from "/@/hooks/userSocket";
|
|
|
import { useRtcSdk } from "/@/hooks/useTRTC";
|
|
|
-
|
|
|
+import { useDraw } from "/@/hooks/useDraw";
|
|
|
import browser from "/@/utils/browser";
|
|
|
import ImageIcon from "/@/components/basic/icon/index.vue";
|
|
|
import { useRtcStore } from "/@/store/modules/rtc";
|
|
@@ -97,15 +99,18 @@ import memberList from "./memberList.vue";
|
|
|
|
|
|
import consola from "consola";
|
|
|
|
|
|
+const { isDrawing, setDraw, setCloseDraw } = useDraw();
|
|
|
+
|
|
|
const rtcStore = useRtcStore();
|
|
|
const isNativeLeader = computed(() => rtcStore.role == "leader");
|
|
|
const showInput = ref(false);
|
|
|
const chatShow = ref(true);
|
|
|
-const isBrushes = ref(false);
|
|
|
+const isBrushes = isDrawing;
|
|
|
const canUndo = ref(false);
|
|
|
const animateActive = ref(false);
|
|
|
const showMember = ref(false);
|
|
|
const disableMic = ref(false);
|
|
|
+const isJoined = computed(() => rtcStore.isJoined);
|
|
|
const role = computed(() => rtcStore.role);
|
|
|
const text = ref<string>("");
|
|
|
const chatList = computed(() => rtcStore.chatList);
|
|
@@ -135,14 +140,38 @@ rtcStore.setSocketParams(initParams);
|
|
|
const socket = createSocket();
|
|
|
initSocketEvent(socket);
|
|
|
const { createRTCSocket } = useRtcSdk();
|
|
|
+
|
|
|
(async () => {
|
|
|
await createRTCSocket();
|
|
|
})();
|
|
|
-// onMounted(() => {
|
|
|
-// const app = getApp();
|
|
|
-// });
|
|
|
+
|
|
|
+onMounted(async () => {
|
|
|
+ const app = await useApp();
|
|
|
+ app.Connect.follow.start({ follow: !unref(isNativeLeader) });
|
|
|
+ app.Connect.follow.on("data", leaderSync);
|
|
|
+ app.Connect.paint.on("data", leaderPaint);
|
|
|
+});
|
|
|
+onUnmounted(async () => {
|
|
|
+ const app = await useApp();
|
|
|
+ app.Connect.follow.off("data", leaderSync);
|
|
|
+ app.Connect.paint.off("data", leaderPaint);
|
|
|
+});
|
|
|
|
|
|
/* method */
|
|
|
+
|
|
|
+const leaderSync = (data) => {
|
|
|
+ if (unref(isNativeLeader) && unref(isJoined)) {
|
|
|
+ socket.emit("sync", data);
|
|
|
+ }
|
|
|
+};
|
|
|
+const leaderPaint = (data) => {
|
|
|
+ if (unref(isNativeLeader) && unref(isJoined)) {
|
|
|
+ const records = getApp().Connect.paint.records;
|
|
|
+ canUndo.value = records?.length;
|
|
|
+ socket.emit("paint", data);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
const onDrawUndo = async () => {
|
|
|
let app = getApp();
|
|
|
app.Connect.paint.undo();
|
|
@@ -151,11 +180,13 @@ const onDrawUndo = async () => {
|
|
|
console.log(app.Connect.paint.records, "app.Connect.paint.records");
|
|
|
};
|
|
|
|
|
|
-const onDraw = async (status) => {
|
|
|
- isBrushes.value = status;
|
|
|
-
|
|
|
+const onDraw = async (status: boolean) => {
|
|
|
+ // isBrushes.value = status;
|
|
|
+ status && setDraw();
|
|
|
+ !status && setCloseDraw();
|
|
|
if (unref(isBrushes)) {
|
|
|
const app = await useApp();
|
|
|
+ console.log("app", app.Connect.paint);
|
|
|
app.Connect.paint.show({
|
|
|
role: unref(role),
|
|
|
paint: isNativeLeader ? true : false,
|