@@ -14,24 +14,35 @@ import type {
1414} from "common/types" ;
1515import { prisma } from "./client" ;
1616import { getRelation } from "./matches" ;
17- import { getMatchedUser } from "./requests" ;
17+ import {
18+ getMatchedUser ,
19+ getPendingRequestsFromUser ,
20+ getPendingRequestsToUser ,
21+ } from "./requests" ;
1822
19- // ユーザーの参加しているすべての Room の概要 (Overview) の取得
2023export async function getOverview (
2124 user : UserID ,
2225) : Promise < Result < RoomOverview [ ] > > {
2326 try {
2427 const matched = await getMatchedUser ( user ) ;
2528 if ( ! matched . ok ) return Err ( matched . error ) ;
2629
27- const dm = await Promise . all (
30+ const senders = await getPendingRequestsToUser ( user ) ;
31+ if ( ! senders . ok ) return Err ( senders . error ) ;
32+
33+ const receivers = await getPendingRequestsFromUser ( user ) ;
34+ if ( ! receivers . ok ) return Err ( receivers . error ) ;
35+
36+ //マッチングしている人のオーバービュー
37+ const matchingOverview = await Promise . all (
2838 matched . value . map ( async ( friend ) => {
2939 const lastMessageResult = await getLastMessage ( user , friend . id ) ;
3040 const lastMessage = lastMessageResult . ok
3141 ? lastMessageResult . value
3242 : undefined ;
3343 const overview : DMOverview = {
3444 isDM : true ,
45+ matchingStatus : "matched" ,
3546 friendId : friend . id ,
3647 name : friend . name ,
3748 thumbnail : friend . pictureUrl ,
@@ -41,6 +52,44 @@ export async function getOverview(
4152 } ) ,
4253 ) ;
4354
55+ //自分にリクエストを送ってきた人のオーバービュー
56+ const senderOverview = await Promise . all (
57+ senders . value . map ( async ( sender ) => {
58+ const lastMessageResult = await getLastMessage ( user , sender . id ) ;
59+ const lastMessage = lastMessageResult . ok
60+ ? lastMessageResult . value
61+ : undefined ;
62+ const overview : DMOverview = {
63+ isDM : true ,
64+ matchingStatus : "otherRequest" ,
65+ friendId : sender . id ,
66+ name : sender . name ,
67+ thumbnail : sender . pictureUrl ,
68+ lastMsg : lastMessage ,
69+ } ;
70+ return overview ;
71+ } ) ,
72+ ) ;
73+
74+ //自分がリクエストを送った人のオーバービュー
75+ const receiverOverview = await Promise . all (
76+ receivers . value . map ( async ( receiver ) => {
77+ const lastMessageResult = await getLastMessage ( user , receiver . id ) ;
78+ const lastMessage = lastMessageResult . ok
79+ ? lastMessageResult . value
80+ : undefined ;
81+ const overview : DMOverview = {
82+ isDM : true ,
83+ matchingStatus : "myRequest" ,
84+ friendId : receiver . id ,
85+ name : receiver . name ,
86+ thumbnail : receiver . pictureUrl ,
87+ lastMsg : lastMessage ,
88+ } ;
89+ return overview ;
90+ } ) ,
91+ ) ;
92+
4493 const sharedRooms : {
4594 id : number ;
4695 name : string ;
@@ -61,7 +110,13 @@ export async function getOverview(
61110 } ;
62111 return overview ;
63112 } ) ;
64- return Ok ( [ ...shared , ...dm ] ) ;
113+
114+ return Ok ( [
115+ ...matchingOverview ,
116+ ...senderOverview ,
117+ ...receiverOverview ,
118+ ...shared ,
119+ ] ) ;
65120 } catch ( e ) {
66121 return Err ( e ) ;
67122 }
0 commit comments