From 93d7dee21986c9d3e588ab57f55762c7191e938c Mon Sep 17 00:00:00 2001 From: godeka Date: Wed, 29 May 2024 13:41:03 +0900 Subject: [PATCH 1/6] =?UTF-8?q?[style]=20=EC=BB=A4=ED=94=BC=EC=B1=97=20?= =?UTF-8?q?=EC=9A=94=EC=B2=AD=20=EC=9E=90=EB=8F=99=20=EC=B7=A8=EC=86=8C=20?= =?UTF-8?q?=EC=95=8C=EB=A6=BC=20=EB=B3=80=EA=B2=BD=20#378?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/lib/screen/coffeechat_req_list.dart | 21 ++++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/frontend/lib/screen/coffeechat_req_list.dart b/frontend/lib/screen/coffeechat_req_list.dart index baefb426d4..decd84703f 100644 --- a/frontend/lib/screen/coffeechat_req_list.dart +++ b/frontend/lib/screen/coffeechat_req_list.dart @@ -228,20 +228,15 @@ class _SentReqState extends State { showDialog( context: context, builder: (context) { - return AlertDialog( + return OneButtonDialog( content: - const Text('제한 시간이 완료되었습니다.\n다시 매칭 요청을 진행해주세요.'), - actions: [ - TextButton( - onPressed: () { - Navigator.of(context).pop(); - setState(() { - _sendinfoFuture = sendinfo(); - }); - }, - child: const Text('확인'), - ), - ], + '10분이 지나 요청이 자동으로 취소되었어요!\n다시 커피챗 요청을 진행해주세요.', + onFirstButtonClick: () { + Navigator.of(context).pop(); + setState(() { + _sendinfoFuture = sendinfo(); + }); + }, ); }, ); From 2ee23b371452cf0b6428736a8d05a0e011bda6d8 Mon Sep 17 00:00:00 2001 From: godeka Date: Wed, 29 May 2024 13:48:06 +0900 Subject: [PATCH 2/6] =?UTF-8?q?[style]=20YesOrNoDialog=20=EC=8A=A4?= =?UTF-8?q?=ED=83=80=EC=9D=BC=20=EC=88=98=EC=A0=95=20#378?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/lib/widgets/dialog/yn_dialog.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/lib/widgets/dialog/yn_dialog.dart b/frontend/lib/widgets/dialog/yn_dialog.dart index f83a1eef0d..e83951dafb 100644 --- a/frontend/lib/widgets/dialog/yn_dialog.dart +++ b/frontend/lib/widgets/dialog/yn_dialog.dart @@ -10,6 +10,7 @@ class YesOrNoDialog extends StatelessWidget { final Function()? handleSecondClick; const YesOrNoDialog({ + super.key, this.content = '', this.firstButton, this.secondButton, @@ -25,9 +26,11 @@ class YesOrNoDialog extends StatelessWidget { borderRadius: BorderRadius.circular(20), ), child: Container( + constraints: const BoxConstraints(minHeight: 200), padding: const EdgeInsets.all(20), child: Column( mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ const SizedBox( height: 15, From d3c7caa76d3d1cf7c8c7c7d65ae3496f0d876c6e Mon Sep 17 00:00:00 2001 From: godeka Date: Wed, 29 May 2024 13:58:52 +0900 Subject: [PATCH 3/6] =?UTF-8?q?[style]=20=EC=B9=B4=ED=8E=98=20=EC=A7=80?= =?UTF-8?q?=EC=A0=95=20=EB=B2=84=ED=8A=BC=20=ED=81=B4=EB=A6=AD=20=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=EC=B0=BD=20=ED=85=8D=EC=8A=A4=ED=8A=B8=20=EC=A4=84?= =?UTF-8?q?=EB=B0=94=EA=BF=88=20#378?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/lib/screen/cafe_details.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/lib/screen/cafe_details.dart b/frontend/lib/screen/cafe_details.dart index fff9a3ba85..1dac77745d 100644 --- a/frontend/lib/screen/cafe_details.dart +++ b/frontend/lib/screen/cafe_details.dart @@ -272,8 +272,8 @@ class _CafeDetailsState extends State builder: (context) { bool setOrChange = myCafe.cafeId == null ? true : false; String content = setOrChange - ? "${widget.cafeName}을(를) 내 위치로 표시하겠습니까?" - : "${widget.cafeName}을(를) 내 위치로 표시하도록 변경하겠습니까?"; + ? "${widget.cafeName}을(를) \n내 위치로 표시하시겠습니까?" + : "${widget.cafeName}을(를) 내 위치로 \n표시하도록 변경하시겠습니까?"; return YesOrNoDialog( content: content, From 11616e17b271160b23de01afca40f3978c2f79c0 Mon Sep 17 00:00:00 2001 From: godeka Date: Wed, 29 May 2024 15:12:11 +0900 Subject: [PATCH 4/6] =?UTF-8?q?[fix]=20=EC=B9=B4=ED=8E=98=20add=20sub=20?= =?UTF-8?q?=EC=97=AC=EB=9F=AC=EB=B2=88=20=EB=B0=9B=EB=8A=94=20=EC=83=81?= =?UTF-8?q?=ED=99=A9=20-=20=EC=A4=91=EB=B3=B5=20=EC=B2=B4=ED=81=AC=20?= =?UTF-8?q?=ED=9B=84=20allUsers=EC=97=90=20=EB=8B=B4=EA=B8=B0=20#378?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/lib/model/all_users_model.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/lib/model/all_users_model.dart b/frontend/lib/model/all_users_model.dart index 50f9c3c12f..e9aaab7a16 100644 --- a/frontend/lib/model/all_users_model.dart +++ b/frontend/lib/model/all_users_model.dart @@ -16,7 +16,10 @@ class AllUsersModel extends ChangeNotifier { } void addUser(String cafeId, UserModel user) { - allUsers[cafeId]!.add(user); + // 중복 체크 후 추가 + if (allUsers[cafeId]!.contains(user) == false) { + allUsers[cafeId]!.add(user); + } notifyListeners(); } From f9d7f52ca7a0c1b55700998146d1aa215087065a Mon Sep 17 00:00:00 2001 From: godeka Date: Wed, 29 May 2024 21:51:23 +0900 Subject: [PATCH 5/6] =?UTF-8?q?[fix]=20=EC=82=AC=EC=9A=A9=EC=9E=90?= =?UTF-8?q?=EC=88=98=EC=97=90=EC=84=9C=20=EC=9E=90=EA=B8=B0=EC=9E=90?= =?UTF-8?q?=EC=8B=A0=20=EC=A0=9C=EC=99=B8=20-=20allUsers=EC=97=90=20?= =?UTF-8?q?=EC=9E=90=EC=8B=A0=EC=9D=98=20=EC=A0=95=EB=B3=B4=EB=8A=94=20?= =?UTF-8?q?=EC=95=84=EC=98=88=20=EC=B6=94=EA=B0=80=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8F=84=EB=A1=9D=20getAllUsers,=20subCafeList=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20#378?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/lib/main.dart | 9 +++++++-- frontend/lib/service/api_service.dart | 8 +++++--- frontend/lib/service/stomp_service.dart | 13 +++++++++++-- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/frontend/lib/main.dart b/frontend/lib/main.dart index d6db56c40c..d0575deb17 100644 --- a/frontend/lib/main.dart +++ b/frontend/lib/main.dart @@ -146,11 +146,16 @@ class _MyHomePageState extends State { // 로그인된 상태이면 - 유저 목록 post, sub 요청 if (userToken != null) { // http post 요청 - getAllUsers(userToken!, cafeList).then((value) { + getAllUsers(userToken!, cafeList, userProfile.userId!).then((value) { allUsers.setAllUsers(value); // 주변 모든 카페에 sub 요청 - subCafeList(stompClient, cafeList, allUsers); + subCafeList( + stompClient: stompClient, + cafeList: cafeList, + allUsers: allUsers, + userId: userProfile.userId!, + ); }); } } diff --git a/frontend/lib/service/api_service.dart b/frontend/lib/service/api_service.dart index a4de640faa..b21c84ad82 100644 --- a/frontend/lib/service/api_service.dart +++ b/frontend/lib/service/api_service.dart @@ -11,7 +11,7 @@ const storage = FlutterSecureStorage(); // 주변 카페에 있는 모든 유저 목록 받아오기 - http post 요청 Future>> getAllUsers( - String userToken, List cafeList) async { + String userToken, List cafeList, int userId) async { try { final url = Uri.parse("$baseUrl/cafe/get-users"); final response = await http.post( @@ -32,8 +32,10 @@ Future>> getAllUsers( jsonResult.forEach((cafe, userList) { List> userMapList = userList.cast>(); - allUsers[cafe] = - userMapList.map((user) => UserModel.fromJson(user)).toList(); + allUsers[cafe] = userMapList + .where((user) => user["userId"] != userId) + .map((user) => UserModel.fromJson(user)) + .toList(); }); return allUsers; diff --git a/frontend/lib/service/stomp_service.dart b/frontend/lib/service/stomp_service.dart index 0014b9bf3a..b116fcbcb0 100644 --- a/frontend/lib/service/stomp_service.dart +++ b/frontend/lib/service/stomp_service.dart @@ -7,8 +7,12 @@ import 'package:frontend/widgets/dialog/one_button_dialog.dart'; import 'package:stomp_dart_client/stomp.dart'; // cafe list의 각 cafe에 sub 요청 -void subCafeList( - StompClient stompClient, List cafeList, AllUsersModel allUsers) { +void subCafeList({ + required StompClient stompClient, + required List cafeList, + required AllUsersModel allUsers, + required int userId, +}) { if (!stompClient.connected) { throw Exception("stompClient is not connected !!"); } @@ -20,6 +24,11 @@ void subCafeList( // sub 응답 처리 Map result = jsonDecode(frame.body!); + // 자기 자신에 대한 sub은 무시 + if (result["userId"] == userId) { + return; + } + // 카페에 사용자 add if (result["type"] == "add") { print("add user in cafe $cafeId"); From 7aaa76298db565f04f0104216be39a41bcabdc52 Mon Sep 17 00:00:00 2001 From: godeka Date: Wed, 29 May 2024 21:54:30 +0900 Subject: [PATCH 6/6] =?UTF-8?q?[remove]=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=B4=EC=A7=84=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0=20?= =?UTF-8?q?-=20=EC=9C=A0=EC=A0=80=EC=95=84=EC=9D=B4=EB=94=94=EB=A1=9C=20?= =?UTF-8?q?=EC=B9=B4=ED=8E=98=20=EC=9C=A0=EC=A0=80=EB=AA=A9=EB=A1=9D?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=9E=90=EA=B8=B0=EC=9E=90=EC=8B=A0=20?= =?UTF-8?q?=ED=95=84=ED=84=B0=EB=A7=81=ED=95=98=EB=8A=94=20#378?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/lib/screen/cafe_details.dart | 28 ++++++++++++--------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/frontend/lib/screen/cafe_details.dart b/frontend/lib/screen/cafe_details.dart index 1dac77745d..0e222dc111 100644 --- a/frontend/lib/screen/cafe_details.dart +++ b/frontend/lib/screen/cafe_details.dart @@ -83,7 +83,6 @@ class _CafeDetailsState extends State String photoUrl = ''; late AutoOfflineService autoOfflineService; - late UserProfileModel userProfile; late List userList; late MyCafeModel myCafe; late MatchingInfoModel matchingInfo; @@ -153,7 +152,6 @@ class _CafeDetailsState extends State autoOfflineService = Provider.of(context, listen: false); stompClient = Provider.of(context); - userProfile = Provider.of(context); userList = Provider.of(context).getUserList(widget.cafeId); myCafe = Provider.of(context); matchingInfo = Provider.of(context); @@ -230,20 +228,18 @@ class _CafeDetailsState extends State ListView.builder( itemCount: userList.length, itemBuilder: (context, index) { - return (userList[index].userId == userProfile.userId) - ? Container() - : UserItem( - type: "cafeUser", - userId: userList[index].userId, - nickname: userList[index].nickname, - company: userList[index].company, - position: userList[index].position, - introduction: userList[index].introduction, - rating: userList[index].rating, - matchId: '', // 안 쓰는 값이기에 초기값 넣어줌 - logoUrl: '', - requestTypeId: 0, // 안 쓰는 값이기에 초기값 넣어줌 - ); + return UserItem( + type: "cafeUser", + userId: userList[index].userId, + nickname: userList[index].nickname, + company: userList[index].company, + position: userList[index].position, + introduction: userList[index].introduction, + rating: userList[index].rating, + matchId: '', // 안 쓰는 값이기에 초기값 넣어줌 + logoUrl: '', + requestTypeId: 0, // 안 쓰는 값이기에 초기값 넣어줌 + ); }, ), (myCafe.cafeId != null)