From e9ecc1d11d7dbcb8752c884a004365e394743374 Mon Sep 17 00:00:00 2001 From: Nzt3 Date: Sun, 16 Jun 2024 01:15:01 +0900 Subject: [PATCH 01/18] set enterRoom --- src/pages/EnterRoom.vue | 58 +++++++++++++++++++++++++++++++++++++++++ src/router/index.ts | 5 ++++ 2 files changed, 63 insertions(+) create mode 100644 src/pages/EnterRoom.vue diff --git a/src/pages/EnterRoom.vue b/src/pages/EnterRoom.vue new file mode 100644 index 0000000..f061561 --- /dev/null +++ b/src/pages/EnterRoom.vue @@ -0,0 +1,58 @@ + + \ No newline at end of file diff --git a/src/router/index.ts b/src/router/index.ts index 2d2ead4..caac579 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -16,6 +16,11 @@ const routes: RouteRecordRaw[] = [ name: 'IndividualRoom', component: () => import('@/pages/IndividualRoom.vue'), }, + { + path: '/rooms/:id/enter', + name: 'EnterRoom', + component: () => import('@/pages/EnterRoom.vue'), + }, { path: '/rooms/create', name: 'CreateRoom', From 8b6a3dda044f59c860589ae72baf9bbf1403f554 Mon Sep 17 00:00:00 2001 From: Nzt3 Date: Sun, 16 Jun 2024 09:27:46 +0900 Subject: [PATCH 02/18] =?UTF-8?q?=E7=A7=BB=E5=8B=95=E5=85=88=E3=81=AEURL?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/CreateRoom.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/CreateRoom.vue b/src/pages/CreateRoom.vue index 4ae77b3..5ecad4a 100644 --- a/src/pages/CreateRoom.vue +++ b/src/pages/CreateRoom.vue @@ -28,7 +28,7 @@ const submit = async ()=> { const resp = await api.apiRoomPost(roomInfo) const roomId = resp.data.roomId router.push( - {path: `/rooms/${roomId}`,query: {password:roomPassword.value}} + {path: `/rooms/${roomId}/enter`,query: {password:roomPassword.value}} ) }catch(e){ console.error(e) From 1b63357a78ef1a79639d6bac77811467d17f9265 Mon Sep 17 00:00:00 2001 From: Nzt3 Date: Sun, 16 Jun 2024 09:37:37 +0900 Subject: [PATCH 03/18] =?UTF-8?q?add=20=E3=83=91=E3=82=B9=E3=83=91?= =?UTF-8?q?=E3=83=A9=E3=83=A1=E3=82=BF=E3=80=81=E3=82=AF=E3=82=A8=E3=83=AA?= =?UTF-8?q?=E3=83=91=E3=83=A9=E3=83=A1=E3=82=BF=E3=81=AE=E5=8F=96=E5=BE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/EnterRoom.vue | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/src/pages/EnterRoom.vue b/src/pages/EnterRoom.vue index f061561..c6de145 100644 --- a/src/pages/EnterRoom.vue +++ b/src/pages/EnterRoom.vue @@ -10,7 +10,6 @@ import router from '@/router'; // 名前に被り || 合言葉が不正 -> 失敗を表示して再入力へ const thisRoomId=ref('') -const thisRoomName=ref('') const userNickName=ref('') const roomPassword=ref('') const errMsg=ref('') @@ -22,8 +21,11 @@ const submit = async () => { try{ // enterRoom を送る const resp = (await api.apiRoomRoomIdEnterPost(thisRoomId.value,enterInfo)).data - // ここで resp から userId と RoomId と userName を持たせて IndividualRoom へ - // userId を持たせておけば password とかは不要そう + // ここで resp から userId と userName を持たせて IndividualRoom へ + userNickName.value=resp.userName + const userId=resp.userId + userNickName.value=resp.userName + // stores/user に userId と userName を記録して、 /rooms/:id に移動させる router.push( {path: `/rooms/${thisRoomId}`} ) @@ -32,16 +34,32 @@ const submit = async () => { console.error(e) } } + +onMounted( + ()=>{ + const roomId=router.currentRoute.value.params.id + if(typeof roomId == 'string'){ + thisRoomId.value=roomId + }else{ + console.error("Invalid RoomId type") + } + const queryPassword=router.currentRoute.value.query['password'] + if(typeof queryPassword == 'string'){ + roomPassword.value=queryPassword + } + } + +) \ No newline at end of file From 40447f7a8074eb9fdf8dc585e1c4362c5f27173f Mon Sep 17 00:00:00 2001 From: Nzt3 Date: Sun, 16 Jun 2024 10:11:45 +0900 Subject: [PATCH 04/18] test pinia --- src/pages/EnterRoom.vue | 36 +++++++++++++++++++++++++----------- src/stores/room.ts | 13 +++++++++++++ 2 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 src/stores/room.ts diff --git a/src/pages/EnterRoom.vue b/src/pages/EnterRoom.vue index c6de145..278ace5 100644 --- a/src/pages/EnterRoom.vue +++ b/src/pages/EnterRoom.vue @@ -3,6 +3,8 @@ import { ref,onMounted } from 'vue' import api,{EnterRoom} from '@/lib/apis' import router from '@/router'; +import {useRoomStore} from '@/stores/room' +const store=useRoomStore() // 部屋に入る前のページ // 必須: 名前 // private -> 合言葉の入力欄 @@ -12,7 +14,8 @@ import router from '@/router'; const thisRoomId=ref('') const userNickName=ref('') const roomPassword=ref('') -const errMsg=ref('') +const submitError=ref(false) +const userSettingError=ref(false) const submit = async () => { const enterInfo:EnterRoom={ "userName": userNickName.value, @@ -20,18 +23,25 @@ const submit = async () => { } try{ // enterRoom を送る - const resp = (await api.apiRoomRoomIdEnterPost(thisRoomId.value,enterInfo)).data + const resp = (await api.apiRoomRoomIdEnterPost(thisRoomId.value,enterInfo)) // ここで resp から userId と userName を持たせて IndividualRoom へ - userNickName.value=resp.userName - const userId=resp.userId - userNickName.value=resp.userName - // stores/user に userId と userName を記録して、 /rooms/:id に移動させる - router.push( - {path: `/rooms/${thisRoomId}`} - ) + if(resp.status==200){ + userNickName.value=resp.data.userName + const userId=resp.data.userId + userNickName.value=resp.userName + store.setName(userNickName.value) + submitError.value=false + // stores/user に userId と userName を記録して、 /rooms/:id に移動させる + router.push( + {path: `/rooms/${thisRoomId.value}`} + ) + }else{ + userSettingError.value=true + } }catch (e){ // 通信エラー or userNameエラー or password エラー console.error(e) + submitError.value=true } } @@ -71,6 +81,10 @@ onMounted(

- -

{{ errMsg }}

+
+

ニックネームが使用不可能。もしくは間違った合言葉です。

+
+
+

エラーが発生しました。操作をやり直してください。

+
\ No newline at end of file diff --git a/src/stores/room.ts b/src/stores/room.ts new file mode 100644 index 0000000..2818d8b --- /dev/null +++ b/src/stores/room.ts @@ -0,0 +1,13 @@ +import {defineStore} from 'pinia' +import { ref } from 'vue' + +export const useRoomStore= defineStore('room', + ()=>{ + const count=ref(0) + const name=ref('') + function setName(newName :string){ + name.value=newName + } + return {count,name,setName} + } +) \ No newline at end of file From 0336681817a1c9ef3faababb0a9e099a04b8c287 Mon Sep 17 00:00:00 2001 From: Nzt3 Date: Sun, 16 Jun 2024 10:13:30 +0900 Subject: [PATCH 05/18] lint --- src/pages/EnterRoom.vue | 52 ++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/src/pages/EnterRoom.vue b/src/pages/EnterRoom.vue index 278ace5..37a70b9 100644 --- a/src/pages/EnterRoom.vue +++ b/src/pages/EnterRoom.vue @@ -62,29 +62,33 @@ onMounted( ) \ No newline at end of file From 7a375680ea3f5959eff53b2a163ca71325850ac2 Mon Sep 17 00:00:00 2001 From: Nzt3 Date: Sun, 16 Jun 2024 10:16:46 +0900 Subject: [PATCH 06/18] fix unused value --- src/pages/EnterRoom.vue | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/pages/EnterRoom.vue b/src/pages/EnterRoom.vue index 37a70b9..36d86e3 100644 --- a/src/pages/EnterRoom.vue +++ b/src/pages/EnterRoom.vue @@ -27,8 +27,6 @@ const submit = async () => { // ここで resp から userId と userName を持たせて IndividualRoom へ if(resp.status==200){ userNickName.value=resp.data.userName - const userId=resp.data.userId - userNickName.value=resp.userName store.setName(userNickName.value) submitError.value=false // stores/user に userId と userName を記録して、 /rooms/:id に移動させる From 7ec1cfbb1fb8ef1eaaa798747cd708efca6a0a20 Mon Sep 17 00:00:00 2001 From: Nzt3 Date: Sun, 16 Jun 2024 10:36:41 +0900 Subject: [PATCH 07/18] add User Store --- src/pages/EnterRoom.vue | 9 +++++---- src/stores/room.ts | 13 ------------- src/stores/user.ts | 12 ++++++++++++ 3 files changed, 17 insertions(+), 17 deletions(-) delete mode 100644 src/stores/room.ts create mode 100644 src/stores/user.ts diff --git a/src/pages/EnterRoom.vue b/src/pages/EnterRoom.vue index 36d86e3..9c13605 100644 --- a/src/pages/EnterRoom.vue +++ b/src/pages/EnterRoom.vue @@ -3,8 +3,8 @@ import { ref,onMounted } from 'vue' import api,{EnterRoom} from '@/lib/apis' import router from '@/router'; -import {useRoomStore} from '@/stores/room' -const store=useRoomStore() +import {userUserStore} from '@/stores/user' +const store=userUserStore() // 部屋に入る前のページ // 必須: 名前 // private -> 合言葉の入力欄 @@ -26,10 +26,11 @@ const submit = async () => { const resp = (await api.apiRoomRoomIdEnterPost(thisRoomId.value,enterInfo)) // ここで resp から userId と userName を持たせて IndividualRoom へ if(resp.status==200){ - userNickName.value=resp.data.userName - store.setName(userNickName.value) submitError.value=false // stores/user に userId と userName を記録して、 /rooms/:id に移動させる + userNickName.value=resp.data.userName + const userId=resp.data.userId + store.setUser(userNickName.value,userId) router.push( {path: `/rooms/${thisRoomId.value}`} ) diff --git a/src/stores/room.ts b/src/stores/room.ts deleted file mode 100644 index 2818d8b..0000000 --- a/src/stores/room.ts +++ /dev/null @@ -1,13 +0,0 @@ -import {defineStore} from 'pinia' -import { ref } from 'vue' - -export const useRoomStore= defineStore('room', - ()=>{ - const count=ref(0) - const name=ref('') - function setName(newName :string){ - name.value=newName - } - return {count,name,setName} - } -) \ No newline at end of file diff --git a/src/stores/user.ts b/src/stores/user.ts new file mode 100644 index 0000000..3c7126c --- /dev/null +++ b/src/stores/user.ts @@ -0,0 +1,12 @@ +import {defineStore} from 'pinia' +import { ref } from 'vue' + +export const userUserStore = defineStore('userInfo',() => { + const userId=ref('') + const userName=ref('') + function setUser(newName: string,newId: string){ + userName.value=newName + userId.value=newId + } + return {userId,userName,setUser} +}) \ No newline at end of file From 123ed65ebe5787788007b37c85c02d543989123a Mon Sep 17 00:00:00 2001 From: Nzt3 Date: Sun, 16 Jun 2024 10:43:25 +0900 Subject: [PATCH 08/18] format --- src/pages/EnterRoom.vue | 60 ++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/pages/EnterRoom.vue b/src/pages/EnterRoom.vue index 9c13605..9f650aa 100644 --- a/src/pages/EnterRoom.vue +++ b/src/pages/EnterRoom.vue @@ -1,60 +1,60 @@ \ No newline at end of file + From fd4e10a792d4257d3687a74d10291c90171e1b3a Mon Sep 17 00:00:00 2001 From: Nzt3 Date: Sun, 16 Jun 2024 11:22:33 +0900 Subject: [PATCH 14/18] =?UTF-8?q?fix=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E3=83=BC=E5=90=8D=E3=81=AE=E8=A8=AD=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/EnterRoom.vue | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pages/EnterRoom.vue b/src/pages/EnterRoom.vue index a6c1563..0f332d2 100644 --- a/src/pages/EnterRoom.vue +++ b/src/pages/EnterRoom.vue @@ -28,9 +28,8 @@ const submit = async () => { if (resp.status == 200) { submitError.value = false // stores/user に userId と userName を記録して、 /rooms/:id に移動させる - userNickName.value = resp.data.userName const userId = resp.data.userId - store.setUser(userNickName.value, userId) + store.setUser(resp.data.userName, userId) router.push({ path: `/rooms/${thisRoomId.value}` }) } else { userSettingError.value = true From 2378adc0b191c759955b421b23e32102e33c1d97 Mon Sep 17 00:00:00 2001 From: Rozelin Date: Sun, 16 Jun 2024 11:55:28 +0900 Subject: [PATCH 15/18] =?UTF-8?q?=E8=87=AA=E5=88=86=E3=81=AE=E6=8A=95?= =?UTF-8?q?=E7=A8=BF=E3=81=AB=E3=81=84=E3=81=84=E3=81=AD=E3=81=A8=E9=80=9A?= =?UTF-8?q?=E5=A0=B1=E3=81=8C=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=84=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc.cjs | 11 ++++++++ src/icons/ReportIcon.vue | 8 +++++- src/icons/ThumbUpIcon.vue | 8 +++++- src/pages/IndividualRoom.vue | 32 ++++++++++++++++------ src/stores/individualRoom.ts | 51 +++++++++++++++++++++++++++++------- 5 files changed, 91 insertions(+), 19 deletions(-) diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 3a65063..955540c 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -33,6 +33,17 @@ module.exports = { }, ], 'no-case-declarations': 'off', + '@typescript-eslint/ban-types': [ + 'error', + { + types: { + '{}': false, + Object: false, + Function: false, + }, + extendDefaults: true, + }, + ], }, parser: 'vue-eslint-parser', parserOptions: { diff --git a/src/icons/ReportIcon.vue b/src/icons/ReportIcon.vue index 0e8052f..85e78f9 100644 --- a/src/icons/ReportIcon.vue +++ b/src/icons/ReportIcon.vue @@ -1,3 +1,9 @@ + +