diff --git a/components/chatmain.tsx b/components/chatmain.tsx
index e9421623..f396be57 100644
--- a/components/chatmain.tsx
+++ b/components/chatmain.tsx
@@ -7,11 +7,11 @@ function chatmain({ state }: { state: AppStateType }) {
return (
<>
-
+
diff --git a/fresh.gen.ts b/fresh.gen.ts
index f97474b8..1d46e13c 100644
--- a/fresh.gen.ts
+++ b/fresh.gen.ts
@@ -2,82 +2,92 @@
// This file SHOULD be checked into source version control.
// This file is automatically updated during development when running `dev.ts`.
-import * as $_404 from "./routes/_404.tsx"
-import * as $_app from "./routes/_app.tsx"
-import * as $_middleware from "./routes/_middleware.ts"
-import * as $api_v2_client_block_server from "./routes/api/v2/client/block/server.ts"
-import * as $api_v2_client_block_user from "./routes/api/v2/client/block/user.ts"
-import * as $api_v2_client_create_community from "./routes/api/v2/client/create/community.ts"
-import * as $api_v2_client_create_group from "./routes/api/v2/client/create/group.ts"
-import * as $api_v2_client_csrftoken from "./routes/api/v2/client/csrftoken.ts"
-import * as $api_v2_client_friends_info_ID_icon_friend from "./routes/api/v2/client/friends/info/[ID]/icon/friend.ts"
-import * as $api_v2_client_friends_info_ID_icon_friendcode from "./routes/api/v2/client/friends/info/[ID]/icon/friendcode.ts"
-import * as $api_v2_client_friends_info_ID_icon_group from "./routes/api/v2/client/friends/info/[ID]/icon/group.ts"
-import * as $api_v2_client_friends_info_ID_profile_friend from "./routes/api/v2/client/friends/info/[ID]/profile/friend.ts"
-import * as $api_v2_client_friends_info_ID_profile_friendcode from "./routes/api/v2/client/friends/info/[ID]/profile/friendcode.ts"
-import * as $api_v2_client_friends_info_ID_profile_group from "./routes/api/v2/client/friends/info/[ID]/profile/group.ts"
-import * as $api_v2_client_friends_list from "./routes/api/v2/client/friends/list.ts"
-import * as $api_v2_client_main from "./routes/api/v2/client/main.ts"
-import * as $api_v2_client_sessions_login from "./routes/api/v2/client/sessions/login.ts"
-import * as $api_v2_client_sessions_logout from "./routes/api/v2/client/sessions/logout.ts"
-import * as $api_v2_client_sessions_registers_auth from "./routes/api/v2/client/sessions/registers/auth.ts"
-import * as $api_v2_client_sessions_registers_check from "./routes/api/v2/client/sessions/registers/check.ts"
-import * as $api_v2_client_sessions_registers_temp from "./routes/api/v2/client/sessions/registers/temp.ts"
-import * as $api_v2_client_settings_icon from "./routes/api/v2/client/settings/icon.ts"
-import * as $api_v2_client_settings_nickname from "./routes/api/v2/client/settings/nickname.ts"
-import * as $api_v2_client_settings_privacy from "./routes/api/v2/client/settings/privacy.ts"
-import * as $api_v2_client_talks_delete from "./routes/api/v2/client/talks/delete.ts"
-import * as $api_v2_client_talks_read from "./routes/api/v2/client/talks/read.ts"
-import * as $api_v2_client_talks_sending_audio from "./routes/api/v2/client/talks/sending/audio.ts"
-import * as $api_v2_client_talks_sending_image from "./routes/api/v2/client/talks/sending/image.ts"
-import * as $api_v2_client_talks_sending_text from "./routes/api/v2/client/talks/sending/text.ts"
-import * as $api_v2_client_talks_sending_update from "./routes/api/v2/client/talks/sending/update.ts"
-import * as $api_v2_client_talks_sending_video from "./routes/api/v2/client/talks/sending/video.ts"
-import * as $api_v2_client_unblock_server from "./routes/api/v2/client/unblock/server.ts"
-import * as $api_v2_client_unblock_user from "./routes/api/v2/client/unblock/user.ts"
-import * as $api_v2_client_users_uuid_icon from "./routes/api/v2/client/users/[uuid]/icon.ts"
-import * as $api_v2_client_users_icon from "./routes/api/v2/client/users/icon.ts"
-import * as $api_v2_client_users_profile from "./routes/api/v2/client/users/profile.ts"
-import * as $api_v2_client_users_settings from "./routes/api/v2/client/users/settings.ts"
-import * as $api_v2_client_welcome from "./routes/api/v2/client/welcome.ts"
-import * as $api_v2_server_activity_accept_community from "./routes/api/v2/server/activity/accept/community.ts"
-import * as $api_v2_server_activity_accept_friend from "./routes/api/v2/server/activity/accept/friend.ts"
-import * as $api_v2_server_activity_accept_group from "./routes/api/v2/server/activity/accept/group.ts"
-import * as $api_v2_server_activity_block_user from "./routes/api/v2/server/activity/block/user.ts"
-import * as $api_v2_server_activity_delete_message from "./routes/api/v2/server/activity/delete/message.ts"
-import * as $api_v2_server_activity_flag_community from "./routes/api/v2/server/activity/flag/community.ts"
-import * as $api_v2_server_activity_flag_group from "./routes/api/v2/server/activity/flag/group.ts"
-import * as $api_v2_server_activity_flag_user from "./routes/api/v2/server/activity/flag/user.ts"
-import * as $api_v2_server_activity_ignore_friend from "./routes/api/v2/server/activity/ignore/friend.ts"
-import * as $api_v2_server_activity_ignore_group from "./routes/api/v2/server/activity/ignore/group.ts"
-import * as $api_v2_server_activity_invite_group from "./routes/api/v2/server/activity/invite/group.ts"
-import * as $api_v2_server_activity_join_community from "./routes/api/v2/server/activity/join/community.ts"
-import * as $api_v2_server_activity_read_message from "./routes/api/v2/server/activity/read/message.ts"
-import * as $api_v2_server_activity_request_community from "./routes/api/v2/server/activity/request/community.ts"
-import * as $api_v2_server_activity_request_friend from "./routes/api/v2/server/activity/request/friend.ts"
-import * as $api_v2_server_activity_talk_audio from "./routes/api/v2/server/activity/talk/audio.ts"
-import * as $api_v2_server_activity_talk_image from "./routes/api/v2/server/activity/talk/image.ts"
-import * as $api_v2_server_activity_talk_text from "./routes/api/v2/server/activity/talk/text.ts"
-import * as $api_v2_server_activity_talk_video from "./routes/api/v2/server/activity/talk/video.ts"
-import * as $api_v2_server_activity_update_profile from "./routes/api/v2/server/activity/update/profile.ts"
-import * as $api_v2_server_activity_update_text from "./routes/api/v2/server/activity/update/text.ts"
-import * as $api_v2_server_blocked from "./routes/api/v2/server/blocked.ts"
-import * as $api_v2_server_info from "./routes/api/v2/server/info.ts"
-import * as $api_v2_server_information_talk_ID_image from "./routes/api/v2/server/information/talk/[ID]/image.ts"
-import * as $api_v2_server_information_talk_ID_index from "./routes/api/v2/server/information/talk/[ID]/index.ts"
-import * as $api_v2_server_information_users_icon from "./routes/api/v2/server/information/users/icon.ts"
-import * as $api_v2_server_information_users_profile from "./routes/api/v2/server/information/users/profile.ts"
-import * as $api_v2_server_pubkey from "./routes/api/v2/server/pubkey.ts"
-import * as $index from "./routes/index.tsx"
-import * as $ChatSend from "./islands/ChatSend.tsx"
-import * as $ChatTalkContent from "./islands/ChatTalkContent.tsx"
-import * as $ChatTalkTitle from "./islands/ChatTalkTitle.tsx"
-import * as $ChatTalkTitleContent from "./islands/ChatTalkTitleContent.tsx"
-import * as $TalkListContent from "./islands/TalkListContent.tsx"
-import * as $headerButton from "./islands/headerButton.tsx"
-import * as $setDefaultState from "./islands/setDefaultState.tsx"
-import * as $talkListHeader from "./islands/talkListHeader.tsx"
-import { type Manifest } from "$fresh/server.ts"
+import * as $_404 from "./routes/_404.tsx";
+import * as $_app from "./routes/_app.tsx";
+import * as $_middleware from "./routes/_middleware.ts";
+import * as $api_v2_client_block_server from "./routes/api/v2/client/block/server.ts";
+import * as $api_v2_client_block_user from "./routes/api/v2/client/block/user.ts";
+import * as $api_v2_client_create_community from "./routes/api/v2/client/create/community.ts";
+import * as $api_v2_client_create_group from "./routes/api/v2/client/create/group.ts";
+import * as $api_v2_client_csrftoken from "./routes/api/v2/client/csrftoken.ts";
+import * as $api_v2_client_friends_info_ID_icon_friend from "./routes/api/v2/client/friends/info/[ID]/icon/friend.ts";
+import * as $api_v2_client_friends_info_ID_icon_friendcode from "./routes/api/v2/client/friends/info/[ID]/icon/friendcode.ts";
+import * as $api_v2_client_friends_info_ID_icon_group from "./routes/api/v2/client/friends/info/[ID]/icon/group.ts";
+import * as $api_v2_client_friends_info_ID_profile_friend from "./routes/api/v2/client/friends/info/[ID]/profile/friend.ts";
+import * as $api_v2_client_friends_info_ID_profile_friendcode from "./routes/api/v2/client/friends/info/[ID]/profile/friendcode.ts";
+import * as $api_v2_client_friends_info_ID_profile_group from "./routes/api/v2/client/friends/info/[ID]/profile/group.ts";
+import * as $api_v2_client_friends_list from "./routes/api/v2/client/friends/list.ts";
+import * as $api_v2_client_main from "./routes/api/v2/client/main.ts";
+import * as $api_v2_client_sessions_login from "./routes/api/v2/client/sessions/login.ts";
+import * as $api_v2_client_sessions_logout from "./routes/api/v2/client/sessions/logout.ts";
+import * as $api_v2_client_sessions_registers_auth from "./routes/api/v2/client/sessions/registers/auth.ts";
+import * as $api_v2_client_sessions_registers_check from "./routes/api/v2/client/sessions/registers/check.ts";
+import * as $api_v2_client_sessions_registers_temp from "./routes/api/v2/client/sessions/registers/temp.ts";
+import * as $api_v2_client_settings_icon from "./routes/api/v2/client/settings/icon.ts";
+import * as $api_v2_client_settings_nickname from "./routes/api/v2/client/settings/nickname.ts";
+import * as $api_v2_client_settings_privacy from "./routes/api/v2/client/settings/privacy.ts";
+import * as $api_v2_client_talks_community_audio from "./routes/api/v2/client/talks/community/audio.ts";
+import * as $api_v2_client_talks_community_image from "./routes/api/v2/client/talks/community/image.ts";
+import * as $api_v2_client_talks_community_text from "./routes/api/v2/client/talks/community/text.ts";
+import * as $api_v2_client_talks_community_update from "./routes/api/v2/client/talks/community/update.ts";
+import * as $api_v2_client_talks_community_video from "./routes/api/v2/client/talks/community/video.ts";
+import * as $api_v2_client_talks_delete from "./routes/api/v2/client/talks/delete.ts";
+import * as $api_v2_client_talks_friend_audio from "./routes/api/v2/client/talks/friend/audio.ts";
+import * as $api_v2_client_talks_friend_image from "./routes/api/v2/client/talks/friend/image.ts";
+import * as $api_v2_client_talks_friend_text from "./routes/api/v2/client/talks/friend/text.ts";
+import * as $api_v2_client_talks_friend_update from "./routes/api/v2/client/talks/friend/update.ts";
+import * as $api_v2_client_talks_friend_video from "./routes/api/v2/client/talks/friend/video.ts";
+import * as $api_v2_client_talks_group_audio from "./routes/api/v2/client/talks/group/audio.ts";
+import * as $api_v2_client_talks_group_image from "./routes/api/v2/client/talks/group/image.ts";
+import * as $api_v2_client_talks_group_text from "./routes/api/v2/client/talks/group/text.ts";
+import * as $api_v2_client_talks_group_update from "./routes/api/v2/client/talks/group/update.ts";
+import * as $api_v2_client_talks_group_video from "./routes/api/v2/client/talks/group/video.ts";
+import * as $api_v2_client_talks_read from "./routes/api/v2/client/talks/read.ts";
+import * as $api_v2_client_unblock_server from "./routes/api/v2/client/unblock/server.ts";
+import * as $api_v2_client_unblock_user from "./routes/api/v2/client/unblock/user.ts";
+import * as $api_v2_client_users_uuid_icon from "./routes/api/v2/client/users/[uuid]/icon.ts";
+import * as $api_v2_client_users_icon from "./routes/api/v2/client/users/icon.ts";
+import * as $api_v2_client_users_profile from "./routes/api/v2/client/users/profile.ts";
+import * as $api_v2_client_users_settings from "./routes/api/v2/client/users/settings.ts";
+import * as $api_v2_client_welcome from "./routes/api/v2/client/welcome.ts";
+import * as $api_v2_server_activity_accept_community from "./routes/api/v2/server/activity/accept/community.ts";
+import * as $api_v2_server_activity_accept_friend from "./routes/api/v2/server/activity/accept/friend.ts";
+import * as $api_v2_server_activity_accept_group from "./routes/api/v2/server/activity/accept/group.ts";
+import * as $api_v2_server_activity_block_user from "./routes/api/v2/server/activity/block/user.ts";
+import * as $api_v2_server_activity_delete_message from "./routes/api/v2/server/activity/delete/message.ts";
+import * as $api_v2_server_activity_flag_community from "./routes/api/v2/server/activity/flag/community.ts";
+import * as $api_v2_server_activity_flag_group from "./routes/api/v2/server/activity/flag/group.ts";
+import * as $api_v2_server_activity_flag_user from "./routes/api/v2/server/activity/flag/user.ts";
+import * as $api_v2_server_activity_ignore_friend from "./routes/api/v2/server/activity/ignore/friend.ts";
+import * as $api_v2_server_activity_ignore_group from "./routes/api/v2/server/activity/ignore/group.ts";
+import * as $api_v2_server_activity_invite_group from "./routes/api/v2/server/activity/invite/group.ts";
+import * as $api_v2_server_activity_join_community from "./routes/api/v2/server/activity/join/community.ts";
+import * as $api_v2_server_activity_read_message from "./routes/api/v2/server/activity/read/message.ts";
+import * as $api_v2_server_activity_request_community from "./routes/api/v2/server/activity/request/community.ts";
+import * as $api_v2_server_activity_request_friend from "./routes/api/v2/server/activity/request/friend.ts";
+import * as $api_v2_server_activity_talk_audio from "./routes/api/v2/server/activity/talk/audio.ts";
+import * as $api_v2_server_activity_talk_image from "./routes/api/v2/server/activity/talk/image.ts";
+import * as $api_v2_server_activity_talk_text from "./routes/api/v2/server/activity/talk/text.ts";
+import * as $api_v2_server_activity_talk_video from "./routes/api/v2/server/activity/talk/video.ts";
+import * as $api_v2_server_activity_update_profile from "./routes/api/v2/server/activity/update/profile.ts";
+import * as $api_v2_server_activity_update_text from "./routes/api/v2/server/activity/update/text.ts";
+import * as $api_v2_server_blocked from "./routes/api/v2/server/blocked.ts";
+import * as $api_v2_server_info from "./routes/api/v2/server/info.ts";
+import * as $api_v2_server_information_talk_ID_image from "./routes/api/v2/server/information/talk/[ID]/image.ts";
+import * as $api_v2_server_information_talk_ID_index from "./routes/api/v2/server/information/talk/[ID]/index.ts";
+import * as $api_v2_server_information_users_icon from "./routes/api/v2/server/information/users/icon.ts";
+import * as $api_v2_server_information_users_profile from "./routes/api/v2/server/information/users/profile.ts";
+import * as $api_v2_server_pubkey from "./routes/api/v2/server/pubkey.ts";
+import * as $index from "./routes/index.tsx";
+import * as $ChatSend from "./islands/ChatSend.tsx";
+import * as $ChatTalkContent from "./islands/ChatTalkContent.tsx";
+import * as $ChatTalkTitle from "./islands/ChatTalkTitle.tsx";
+import * as $ChatTalkTitleContent from "./islands/ChatTalkTitleContent.tsx";
+import * as $TalkListContent from "./islands/TalkListContent.tsx";
+import * as $headerButton from "./islands/headerButton.tsx";
+import * as $setDefaultState from "./islands/setDefaultState.tsx";
+import * as $talkListHeader from "./islands/talkListHeader.tsx";
+import { type Manifest } from "$fresh/server.ts";
const manifest = {
routes: {
@@ -105,13 +115,23 @@ const manifest = {
"./routes/api/v2/client/settings/icon.ts": $api_v2_client_settings_icon,
"./routes/api/v2/client/settings/nickname.ts": $api_v2_client_settings_nickname,
"./routes/api/v2/client/settings/privacy.ts": $api_v2_client_settings_privacy,
+ "./routes/api/v2/client/talks/community/audio.ts": $api_v2_client_talks_community_audio,
+ "./routes/api/v2/client/talks/community/image.ts": $api_v2_client_talks_community_image,
+ "./routes/api/v2/client/talks/community/text.ts": $api_v2_client_talks_community_text,
+ "./routes/api/v2/client/talks/community/update.ts": $api_v2_client_talks_community_update,
+ "./routes/api/v2/client/talks/community/video.ts": $api_v2_client_talks_community_video,
"./routes/api/v2/client/talks/delete.ts": $api_v2_client_talks_delete,
+ "./routes/api/v2/client/talks/friend/audio.ts": $api_v2_client_talks_friend_audio,
+ "./routes/api/v2/client/talks/friend/image.ts": $api_v2_client_talks_friend_image,
+ "./routes/api/v2/client/talks/friend/text.ts": $api_v2_client_talks_friend_text,
+ "./routes/api/v2/client/talks/friend/update.ts": $api_v2_client_talks_friend_update,
+ "./routes/api/v2/client/talks/friend/video.ts": $api_v2_client_talks_friend_video,
+ "./routes/api/v2/client/talks/group/audio.ts": $api_v2_client_talks_group_audio,
+ "./routes/api/v2/client/talks/group/image.ts": $api_v2_client_talks_group_image,
+ "./routes/api/v2/client/talks/group/text.ts": $api_v2_client_talks_group_text,
+ "./routes/api/v2/client/talks/group/update.ts": $api_v2_client_talks_group_update,
+ "./routes/api/v2/client/talks/group/video.ts": $api_v2_client_talks_group_video,
"./routes/api/v2/client/talks/read.ts": $api_v2_client_talks_read,
- "./routes/api/v2/client/talks/sending/audio.ts": $api_v2_client_talks_sending_audio,
- "./routes/api/v2/client/talks/sending/image.ts": $api_v2_client_talks_sending_image,
- "./routes/api/v2/client/talks/sending/text.ts": $api_v2_client_talks_sending_text,
- "./routes/api/v2/client/talks/sending/update.ts": $api_v2_client_talks_sending_update,
- "./routes/api/v2/client/talks/sending/video.ts": $api_v2_client_talks_sending_video,
"./routes/api/v2/client/unblock/server.ts": $api_v2_client_unblock_server,
"./routes/api/v2/client/unblock/user.ts": $api_v2_client_unblock_user,
"./routes/api/v2/client/users/[uuid]/icon.ts": $api_v2_client_users_uuid_icon,
@@ -160,6 +180,6 @@ const manifest = {
"./islands/talkListHeader.tsx": $talkListHeader,
},
baseUrl: import.meta.url,
-} satisfies Manifest
+} satisfies Manifest;
-export default manifest
+export default manifest;
diff --git a/islands/ChatTalkContent.tsx b/islands/ChatTalkContent.tsx
index ad1311f6..e9794c12 100644
--- a/islands/ChatTalkContent.tsx
+++ b/islands/ChatTalkContent.tsx
@@ -139,5 +139,19 @@ function ChatTalkMain({ state }: { state: AppStateType }) {
>
);
}
-
-export default ChatTalkMain;
+function ChatTalk({ state }: { state: AppStateType }) {
+ if (state.isChoiceUser.value === true) {
+ return (
+
+ );
+ } else {
+ return (
+
+ );
+ }
+}
+export default ChatTalk;
diff --git a/islands/ChatTalkTitleContent.tsx b/islands/ChatTalkTitleContent.tsx
index 16c0c7b7..369fc48a 100644
--- a/islands/ChatTalkTitleContent.tsx
+++ b/islands/ChatTalkTitleContent.tsx
@@ -1,3 +1,4 @@
-export default function ChatTalkTitleContent(props: { children: string }) {
- return
{props.children}
;
+import { AppStateType } from "../util/types.ts";
+export default function ChatTalkTitleContent(props: { state: AppStateType }) {
+ return
{props.state.roomName.value}
;
}
diff --git a/islands/TalkListContent.tsx b/islands/TalkListContent.tsx
index 046eff88..3deaa59b 100644
--- a/islands/TalkListContent.tsx
+++ b/islands/TalkListContent.tsx
@@ -1,4 +1,5 @@
import User from "../components/User.tsx";
+import { setIschoiseUser } from "../util/takosClient.ts";
import { AppStateType } from "../util/types.ts";
function TalkListContent({ state }: { state: AppStateType }) {
if (state.page.value === 0) {
@@ -15,6 +16,29 @@ function TalkListContent({ state }: { state: AppStateType }) {
userName2={talk.userName}
isNewMessage={talk.isNewMessage}
isSelected={talk.isSelect}
+ onClick={() => {
+ setIschoiseUser(true, state.isChoiceUser);
+ state.roomid.value = talk.roomID;
+ state.roomName.value = talk.roomName;
+ console.log(talk.roomName);
+ state.friendList.value.map((data: any) => {
+ if (data.roomID == talk.roomID) {
+ data.isNewMessage = false;
+ }
+ });
+ //urlの一番最後にroomidを追加
+ //どのようなurlにも対応できるようにする
+ const url = new URL(window.location.href);
+ url.searchParams.set("roomid", talk.roomID);
+ window.history.pushState({}, "", url.toString());
+ state.ws.value?.send(
+ JSON.stringify({
+ type: "join",
+ sessionid: state.sessionid.value,
+ roomid: talk.roomID,
+ }),
+ );
+ }}
/>
);
})}
diff --git a/islands/setDefaultState.tsx b/islands/setDefaultState.tsx
index 3296a3ed..1e97719c 100644
--- a/islands/setDefaultState.tsx
+++ b/islands/setDefaultState.tsx
@@ -28,5 +28,15 @@ export default function setDefaultState({ state }: { state: AppStateType }) {
state.isValidInput.value = false;
}
}, [state.inputMessage.value]);
+ useEffect(() => {
+ state.ws.value = new WebSocket("/api/v2/client/main");
+ state.ws.value.onmessage = (event: any) => {
+ const data = JSON.parse(event.data);
+ console.log(data);
+ };
+ state.ws.value.onopen = () => {
+ console.log("connected");
+ };
+ }, []);
return <>>;
}
diff --git a/routes/api/v2/client/main.ts b/routes/api/v2/client/main.ts
index 91cbd30d..9f86add3 100644
--- a/routes/api/v2/client/main.ts
+++ b/routes/api/v2/client/main.ts
@@ -1,10 +1,13 @@
import { getCookies } from "$std/http/cookie.ts";
import ssessionID from "../../../../models/sessionid.ts";
import users from "../../../../models/users.ts";
+import rooms from "../../../../models/rooms.ts";
import redis from "redis";
import pubClient from "../../../../util/redisClient.ts";
-import { WebSocketSessionObject } from "../../../../util/types.ts";
+import { WebSocketJoiningFriend, WebSocketJoiningRoom, WebSocketSessionObject } from "../../../../util/types.ts";
import { load } from "$std/dotenv/mod.ts";
+import friends from "../../../../models/friends.ts";
+import takos from "../../../../util/takos.ts";
const env = await load();
const redisURL = env["REDIS_URL"];
const redisch = env["REDIS_CH"];
@@ -37,13 +40,15 @@ export const handler = {
//sessionidを取得
const cookies = getCookies(req.headers);
const sessionid = cookies.sessionid;
- const isTrueSessionid = await ssessionID.findOne({ sessionid: sessionid });
+ const isTrueSessionid = await ssessionID.findOne({ sessionID: sessionid });
if (!isTrueSessionid) {
+ console.log("Invalid SessionID", sessionid);
socket.close(1000, "Invalid SessionID");
return;
}
const user = await users.findOne({ uuid: isTrueSessionid.userid });
if (!user) {
+ console.log("Invalid User");
socket.close(1000, "Invalid User");
return;
}
@@ -59,13 +64,73 @@ export const handler = {
const data = JSON.parse(event.data);
if (data.type === "ping") {
socket.send(JSON.stringify({ type: "pong" }));
+ UpdateLastActivityTime(value.sessionid);
+ return;
+ }
+ if (data.type === "joinFriend") {
+ const value = data as WebSocketJoiningFriend;
+ const session = sessions.get(value.sessionid);
+ if (!session) {
+ socket.close(1000, "Invalid SessionID");
+ return;
+ }
+ const friendId = value.friendid;
+ const friendList = await friends.findOne({ user: ctx.state.data.user.uuid});
+ if (!friendList) {
+ socket.close(1000, "you have no friends");
+ return;
+ }
+ const friend = friendList.friends.find((friend) => friend.userid === friendId);
+ if (!friend) {
+ socket.close(1000, "Invalid FriendID");
+ return;
+ }
+ const roomid = friend.room;
+ const room = await rooms.findOne({ uuid: roomid });
+ if (!room) {
+ socket.close(1000, "Invalid RoomID");
+ return;
+ }
+ session.roomid = room.uuid;
+ session.roomType = room.types;
+ sessions.set(value.sessionid, session);
+ //ルームに参加したことを通知
+ pubClient.publish(room.uuid, JSON.stringify({ type: "join", userid: session.userid }));
+ session.ws.send(JSON.stringify({ type: "joined", roomid: room.uuid }));
+ UpdateLastActivityTime(value.sessionid);
+ return;
}
- if (data.type === "join") {
- const session = sessions.get(data.sessionid);
+ if (data.type === "joinRoom") {
+ const value = data as WebSocketJoiningRoom;
+ const session = sessions.get(value.sessionid);
if (!session) {
socket.close(1000, "Invalid SessionID");
return;
}
+ const room = await rooms.findOne({ roomID: value.roomid });
+ if (!room) {
+ socket.close(1000, "Invalid RoomID");
+ return;
+ }
+ //個人ルームかどうかを確認
+ if (room.types === "friend" || room.types === "remotefriend") {
+ socket.close(1000, "Invalid RoomID");
+ return;
+ }
+ //ルームメンバーかどうかを確認
+ const isRoomMember = room.users.find((user) => user.userid === session.userid);
+ if (!isRoomMember) {
+ socket.close(1000, "Invalid RoomID");
+ return;
+ }
+ session.roomid = value.roomid;
+ session.roomType = room.types;
+ sessions.set(value.sessionid, session);
+ //ルームに参加したことを通知
+ pubClient.publish(value.roomid, JSON.stringify({ type: "join", userid: session.userid }));
+ session.ws.send(JSON.stringify({ type: "joined", roomid: value.roomid }));
+ UpdateLastActivityTime(value.sessionid);
+ return;
}
};
socket.onclose = () => {
@@ -78,7 +143,7 @@ export const handler = {
};
// セッションの最後の活動時間を更新する関数
-function UpdateLastActivityTime(sessionId: string, Changes: Object) {
+function UpdateLastActivityTime(sessionId: string) {
const session = sessions.get(sessionId);
if (!session) {
return;
diff --git a/routes/api/v2/client/talks/sending/audio.ts b/routes/api/v2/client/talks/community/audio.ts
similarity index 100%
rename from routes/api/v2/client/talks/sending/audio.ts
rename to routes/api/v2/client/talks/community/audio.ts
diff --git a/routes/api/v2/client/talks/sending/image.ts b/routes/api/v2/client/talks/community/image.ts
similarity index 100%
rename from routes/api/v2/client/talks/sending/image.ts
rename to routes/api/v2/client/talks/community/image.ts
diff --git a/routes/api/v2/client/talks/sending/text.ts b/routes/api/v2/client/talks/community/text.ts
similarity index 100%
rename from routes/api/v2/client/talks/sending/text.ts
rename to routes/api/v2/client/talks/community/text.ts
diff --git a/routes/api/v2/client/talks/sending/update.ts b/routes/api/v2/client/talks/community/update.ts
similarity index 100%
rename from routes/api/v2/client/talks/sending/update.ts
rename to routes/api/v2/client/talks/community/update.ts
diff --git a/routes/api/v2/client/talks/sending/video.ts b/routes/api/v2/client/talks/community/video.ts
similarity index 100%
rename from routes/api/v2/client/talks/sending/video.ts
rename to routes/api/v2/client/talks/community/video.ts
diff --git a/routes/api/v2/client/talks/friend/audio.ts b/routes/api/v2/client/talks/friend/audio.ts
new file mode 100644
index 00000000..edf47348
--- /dev/null
+++ b/routes/api/v2/client/talks/friend/audio.ts
@@ -0,0 +1,4 @@
+//音声メッセージを送信
+// POST /api/v2/client/talks/sending/audio
+// { audio: file, csrftoken: string, roomid: string, channel: string }
+// -> { status: boolean, message: string }
diff --git a/routes/api/v2/client/talks/friend/image.ts b/routes/api/v2/client/talks/friend/image.ts
new file mode 100644
index 00000000..bf9b3ae3
--- /dev/null
+++ b/routes/api/v2/client/talks/friend/image.ts
@@ -0,0 +1,4 @@
+//画像を送信
+// POST /api/v2/client/talks/sending/image
+// { image: file, csrftoken: string, roomid: string, channel: string }
+// -> { status: boolean, message: string }
diff --git a/routes/api/v2/client/talks/friend/text.ts b/routes/api/v2/client/talks/friend/text.ts
new file mode 100644
index 00000000..03ba40c7
--- /dev/null
+++ b/routes/api/v2/client/talks/friend/text.ts
@@ -0,0 +1,4 @@
+//textメッセージを送信する
+// POST /api/v2/client/talks/sending/text
+// { text: string, csrftoken: string, roomid: string, channel: string }
+// -> { status: boolean, message: string }
diff --git a/routes/api/v2/client/talks/friend/update.ts b/routes/api/v2/client/talks/friend/update.ts
new file mode 100644
index 00000000..451baea4
--- /dev/null
+++ b/routes/api/v2/client/talks/friend/update.ts
@@ -0,0 +1,4 @@
+//textメッセージを編集する
+// POST /api/v2/client/talks/sending/update
+// { text: string, csrftoken: string, roomid: string, channel: string, messageid: string }
+// -> { status: boolean, message: string }
diff --git a/routes/api/v2/client/talks/friend/video.ts b/routes/api/v2/client/talks/friend/video.ts
new file mode 100644
index 00000000..824d8b90
--- /dev/null
+++ b/routes/api/v2/client/talks/friend/video.ts
@@ -0,0 +1,4 @@
+//動画を送信するapi
+// POST /api/v2/client/talks/sending/video
+// { video: file, csrftoken: string, roomid: string, channel: string }
+// -> { status: boolean, message: string }
diff --git a/routes/api/v2/client/talks/group/audio.ts b/routes/api/v2/client/talks/group/audio.ts
new file mode 100644
index 00000000..edf47348
--- /dev/null
+++ b/routes/api/v2/client/talks/group/audio.ts
@@ -0,0 +1,4 @@
+//音声メッセージを送信
+// POST /api/v2/client/talks/sending/audio
+// { audio: file, csrftoken: string, roomid: string, channel: string }
+// -> { status: boolean, message: string }
diff --git a/routes/api/v2/client/talks/group/image.ts b/routes/api/v2/client/talks/group/image.ts
new file mode 100644
index 00000000..bf9b3ae3
--- /dev/null
+++ b/routes/api/v2/client/talks/group/image.ts
@@ -0,0 +1,4 @@
+//画像を送信
+// POST /api/v2/client/talks/sending/image
+// { image: file, csrftoken: string, roomid: string, channel: string }
+// -> { status: boolean, message: string }
diff --git a/routes/api/v2/client/talks/group/text.ts b/routes/api/v2/client/talks/group/text.ts
new file mode 100644
index 00000000..03ba40c7
--- /dev/null
+++ b/routes/api/v2/client/talks/group/text.ts
@@ -0,0 +1,4 @@
+//textメッセージを送信する
+// POST /api/v2/client/talks/sending/text
+// { text: string, csrftoken: string, roomid: string, channel: string }
+// -> { status: boolean, message: string }
diff --git a/routes/api/v2/client/talks/group/update.ts b/routes/api/v2/client/talks/group/update.ts
new file mode 100644
index 00000000..451baea4
--- /dev/null
+++ b/routes/api/v2/client/talks/group/update.ts
@@ -0,0 +1,4 @@
+//textメッセージを編集する
+// POST /api/v2/client/talks/sending/update
+// { text: string, csrftoken: string, roomid: string, channel: string, messageid: string }
+// -> { status: boolean, message: string }
diff --git a/routes/api/v2/client/talks/group/video.ts b/routes/api/v2/client/talks/group/video.ts
new file mode 100644
index 00000000..824d8b90
--- /dev/null
+++ b/routes/api/v2/client/talks/group/video.ts
@@ -0,0 +1,4 @@
+//動画を送信するapi
+// POST /api/v2/client/talks/sending/video
+// { video: file, csrftoken: string, roomid: string, channel: string }
+// -> { status: boolean, message: string }
diff --git a/util/takos.ts b/util/takos.ts
index 6294d4df..d65e1536 100644
--- a/util/takos.ts
+++ b/util/takos.ts
@@ -137,23 +137,6 @@ const takos = {
}
return true;
},
- setIschoiseUser: (ischoiseUser: boolean, obj: any) => {
- const headerElement = document.getElementById("header");
- const chatmainElement = document.getElementById("chatmain");
- if (chatmainElement === null || headerElement === null) {
- return;
- }
- if (ischoiseUser) {
- //"l-header is-inview" : "l-header"
- //isChoiceUser ? "p-talk is-inview" : "p-talk"
- headerElement.className = "l-header is-inview";
- chatmainElement.className = "p-talk is-inview";
- } else {
- headerElement.className = "l-header";
- chatmainElement.className = "p-talk";
- }
- obj.value = ischoiseUser;
- },
};
export default takos;
async function importCryptoKey(keyData: string | undefined): Promise
{
diff --git a/util/takosClient.ts b/util/takosClient.ts
new file mode 100644
index 00000000..4229a7b9
--- /dev/null
+++ b/util/takosClient.ts
@@ -0,0 +1,25 @@
+// Cache the elements outside the function if they are used multiple times throughout the app
+let headerElement: HTMLElement | null;
+let chatmainElement: HTMLElement | null;
+let chatHeaderElement: HTMLElement | null;
+
+export const setIschoiseUser = (ischoiseUser: boolean, obj: any) => {
+ if (!headerElement || !chatmainElement || !chatHeaderElement) {
+ headerElement = document.getElementById("header");
+ chatmainElement = document.getElementById("chatmain");
+ chatHeaderElement = document.getElementById("chatHeader");
+ }
+ if (ischoiseUser) {
+ headerElement?.classList.add("is-inview");
+ chatmainElement?.classList.add("is-inview");
+ chatHeaderElement?.classList.remove("hidden");
+ } else {
+ headerElement?.classList.remove("is-inview");
+ chatmainElement?.classList.remove("is-inview");
+ chatHeaderElement?.classList.add("hidden");
+ }
+ // Only update obj.value if necessary
+ if (obj.value !== ischoiseUser) {
+ obj.value = ischoiseUser;
+ }
+};
diff --git a/util/types.ts b/util/types.ts
index 89fede29..89c7e214 100644
--- a/util/types.ts
+++ b/util/types.ts
@@ -59,3 +59,13 @@ export interface WebSocketSessionObject {
roomType: string;
lastActivityTime: Date;
}
+export interface WebSocketJoiningRoom {
+ type: string;
+ sessionid: string;
+ roomid: string;
+}
+export interface WebSocketJoiningFriend {
+ type: string;
+ sessionid: string;
+ friendid: string;
+}