加入房间逻辑完善

This commit is contained in:
kron
2025-06-19 21:49:16 +08:00
parent 35d544003d
commit 6d063d56ab
3 changed files with 13 additions and 5 deletions

View File

@@ -1,7 +1,7 @@
<script setup> <script setup>
import { ref } from "vue"; import { ref } from "vue";
import SButton from "@/components/SButton.vue"; import SButton from "@/components/SButton.vue";
import { createRoomAPI } from "@/apis"; import { joinRoomAPI, createRoomAPI } from "@/apis";
const props = defineProps({ const props = defineProps({
onConfirm: { onConfirm: {
@@ -26,9 +26,10 @@ const createRoom = async () => {
step.value = 2; step.value = 2;
loading.value = false; loading.value = false;
}; };
const enterRoom = () => { const enterRoom = async () => {
step.value = 1; step.value = 1;
props.onConfirm(); props.onConfirm();
await joinRoomAPI(roomNumber.value);
uni.navigateTo({ uni.navigateTo({
url: `/pages/battle-room?roomNumber=${roomNumber.value}`, url: `/pages/battle-room?roomNumber=${roomNumber.value}`,
}); });

View File

@@ -225,7 +225,6 @@ const destroyRoom = async () => {
}; };
const exitRoom = async () => { const exitRoom = async () => {
await exitRoomAPI(roomNumber.value);
uni.navigateBack(); uni.navigateBack();
}; };

View File

@@ -6,7 +6,11 @@ import Guide from "@/components/Guide.vue";
import SButton from "@/components/SButton.vue"; import SButton from "@/components/SButton.vue";
import SModal from "@/components/SModal.vue"; import SModal from "@/components/SModal.vue";
import CreateRoom from "@/components/CreateRoom.vue"; import CreateRoom from "@/components/CreateRoom.vue";
import { joinRoomAPI } from "@/apis"; import { getRoomAPI, joinRoomAPI } from "@/apis";
import useStore from "@/store";
import { storeToRefs } from "pinia";
const store = useStore();
const { user } = storeToRefs(store);
const showModal = ref(false); const showModal = ref(false);
const warnning = ref(""); const warnning = ref("");
@@ -17,8 +21,12 @@ const enterRoom = async () => {
warnning.value = "请输入房间号"; warnning.value = "请输入房间号";
showModal.value = true; showModal.value = true;
} else { } else {
const room = await joinRoomAPI(roomNumber.value); const room = await getRoomAPI(roomNumber.value);
if (room.number) { if (room.number) {
const alreadyIn = room.members.find(
(item) => item.userInfo.id === user.value.id
);
if (!alreadyIn) await joinRoomAPI(roomNumber.value);
roomNumber.value = ""; roomNumber.value = "";
uni.navigateTo({ uni.navigateTo({
url: `/pages/battle-room?roomNumber=${room.number}`, url: `/pages/battle-room?roomNumber=${room.number}`,