Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
901a050
Merge remote-tracking branch 'origin/develop' into feat/#435
Hrepay Aug 30, 2026
d868e3c
[#450] 제휴 찜 기능 추가: 하단 탭 나만아니면돼 → 찜 교체, 지도 시트 하트·플로팅 하트, 찜 목록·편집 모드, 공…
Hrepay Aug 30, 2026
1ff3b47
[#450] 플로팅 하트를 필터 칩 줄 오른쪽으로 이동 및 DEBUG 전용 찜 목록 목 데이터 추가
Hrepay Aug 30, 2026
9e3f42b
[#450] 찜 상세 진입 시트를 마커 탭과 동일한 내용 높이 detent로 표시
Hrepay Aug 30, 2026
66893c2
[#450] 찜 삭제 버튼·스와이프 휴지통 색을 디자인 빨강(error)으로 변경
Hrepay Aug 30, 2026
21a383b
[#450] 찜 목록 상세 진입을 지도 탭 전환 + 시트 표시로 변경, 목 데이터 모드에서 찜 개수 제한 생략
Hrepay Aug 30, 2026
0c531f2
[#450] 빈 화면 문구를 디자인 기준 회색·상단 위치로 조정
Hrepay Aug 30, 2026
300dc25
[#450] 찜 화면 여백·크기·색을 디자인 SVG 수치에 맞춰 조정 (탭·칩·셀·편집·스와이프·플로팅 하트)
Hrepay Aug 30, 2026
50e21df
[#450] 지도 시트 하트가 찜 목록 조회 전에도 서버 찜 상태를 반영하도록 보정
Hrepay Aug 30, 2026
f39137e
[#450] 코드리뷰 반영: 찜 토글 전 목록 확보, 업체 전체 항목 기준 찜, 로그아웃 시 찜 상태 초기화, 취소하기 1회…
Hrepay Aug 30, 2026
0f08fa4
[#450] 찜 최대 개수 제한 제거
Hrepay Aug 30, 2026
6eb2d88
[#450] 학교 제휴 탭 학과 필수 적용: 축제 포함 전 필터에 학과 시트, 지도 블러, 학과 없으면 찜 불가
Hrepay Aug 30, 2026
6bc4762
[#450] 학교 제휴 = 학과 제휴 확정에 따라 도달 불가한 click_map_all 분기 제거
Hrepay Aug 30, 2026
976718d
[#450] 테스트용 찜 목 데이터 제거
Hrepay Aug 30, 2026
84b3093
[#450] 코드리뷰 반영: 토글 결과 우선 판정, 조회 중 토글 보호, 학과 조회 실패 시 기존값 유지, 내 제휴 캐시, …
Hrepay Aug 30, 2026
f39a841
Merge remote-tracking branch 'origin/develop' into feat/#450
Hrepay Aug 30, 2026
74814f2
[#450] CodeRabbit 리뷰 반영: 토글 시작 시 목록 응답 무효화, 학과 확인 후 찜 상세 표시, 하트 접근성, …
Hrepay Aug 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 37 additions & 14 deletions EATSSU/App/Resources/en.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@
"tabBar.meal" = "Cafeteria";
/// "지도"
"tabBar.map" = "Map";
/// "나만아니면돼~"
"tabBar.coffee" = "Lucky Game";
/// ""
"tabBar.like" = "Likes";
/// "마이"
"tabBar.my" = "My Page";

Expand Down Expand Up @@ -426,18 +426,6 @@
"review.characterCount" = "%d / %d";


// MARK: - Coffee

/// "나가시겠어요?"
"coffee.askLeave" = "Leave this page?";
/// "지금 나가면 진행 상황이\n저장되지 않습니다."
"coffee.leaveWarning" = "Your progress will not be saved\nif you leave now.";
/// "나가기"
"coffee.leave" = "Leave";
/// "계속하기"
"coffee.continueEvent" = "Continue";


// MARK: - Splash

/// NoticeSplashVC - "긴급 서버 점검 안내"
Expand Down Expand Up @@ -681,3 +669,38 @@
"restaurantInfo.snackCorner.time" = "11:00~15:30(Lunch)";
/// "분식류, 옛날도시락, 컵밥 등\n주말 휴무"
"restaurantInfo.snackCorner.etc" = "Bunsik(Korean Snacks), Old-school Lunch Box, Cup Rice, etc.\nClosed on weekends";

// MARK: - Like

/// "찜"
"like.title" = "Likes";
/// "메뉴 찜"
"like.menuTab" = "Liked Menus";
/// "제휴 찜"
"like.partnershipTab" = "Liked Partners";
/// "편집"
"like.edit" = "Edit";
/// "전체 선택"
"like.selectAll" = "Select All";
/// "삭제"
"like.delete" = "Delete";
/// "삭제 %d"
"like.deleteCount" = "Delete %d";
/// "취소하기"
"like.undo" = "Undo";
/// "찜한 제휴에 추가했어요."
"like.addedToast" = "Added to liked partners.";
/// "찜한 제휴에서 삭제했어요."
"like.removedToast" = "Removed from liked partners.";
/// "찜 처리에 실패했어요. 다시 시도해 주세요."
"like.updateFailed" = "Couldn't update. Please try again.";
/// "찜한 제휴를 불러오지 못했어요."
"like.loadFailed" = "Couldn't load liked partners.";
/// "아직 찜한 제휴가 없어요."
"like.emptyTitle" = "No liked partners yet.";
/// "관심 있는 제휴를 찜하고 빠르게 확인해 보세요!"
"like.emptySubtitle" = "Like the partners you're interested in for quick access!";
/// "메뉴 찜은 준비 중이에요."
"like.menuComingSoonTitle" = "Liked menus are coming soon.";
/// "곧 만나볼 수 있어요!"
"like.menuComingSoonSubtitle" = "Stay tuned!";
51 changes: 37 additions & 14 deletions EATSSU/App/Resources/ja.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@
"tabBar.meal" = "学食";
/// "지도"
"tabBar.map" = "マップ";
/// "나만아니면돼~"
"tabBar.coffee" = "ラッキーゲーム";
/// ""
"tabBar.like" = "お気に入り";
/// "마이"
"tabBar.my" = "マイページ";

Expand Down Expand Up @@ -427,18 +427,6 @@
"review.characterCount" = "%d / %d";


// MARK: - Coffee

/// "나가시겠어요?"
"coffee.askLeave" = "退出しますか?";
/// "지금 나가면 진행 상황이\n저장되지 않습니다."
"coffee.leaveWarning" = "今退出すると進行状況が\n保存されません。";
/// "나가기"
"coffee.leave" = "退出";
/// "계속하기"
"coffee.continueEvent" = "続ける";


// MARK: - Splash

/// NoticeSplashVC - "긴급 서버 점검 안내"
Expand Down Expand Up @@ -682,3 +670,38 @@
"restaurantInfo.snackCorner.time" = "11:00~15:30(昼食)";
/// "분식류, 옛날도시락, 컵밥 등\n주말 휴무"
"restaurantInfo.snackCorner.etc" = "粉食類、昔ながらのお弁当、カップご飯など\n週末休業";

// MARK: - Like

/// "찜"
"like.title" = "お気に入り";
/// "메뉴 찜"
"like.menuTab" = "メニュー";
/// "제휴 찜"
"like.partnershipTab" = "提携店";
/// "편집"
"like.edit" = "編集";
/// "전체 선택"
"like.selectAll" = "すべて選択";
/// "삭제"
"like.delete" = "削除";
/// "삭제 %d"
"like.deleteCount" = "削除 %d";
/// "취소하기"
"like.undo" = "取り消す";
/// "찜한 제휴에 추가했어요."
"like.addedToast" = "お気に入りの提携店に追加しました。";
/// "찜한 제휴에서 삭제했어요."
"like.removedToast" = "お気に入りの提携店から削除しました。";
/// "찜 처리에 실패했어요. 다시 시도해 주세요."
"like.updateFailed" = "処理に失敗しました。もう一度お試しください。";
/// "찜한 제휴를 불러오지 못했어요."
"like.loadFailed" = "お気に入りの提携店を読み込めませんでした。";
/// "아직 찜한 제휴가 없어요."
"like.emptyTitle" = "まだお気に入りの提携店がありません。";
/// "관심 있는 제휴를 찜하고 빠르게 확인해 보세요!"
"like.emptySubtitle" = "気になる提携店をお気に入りに追加して、すぐに確認しましょう!";
/// "메뉴 찜은 준비 중이에요."
"like.menuComingSoonTitle" = "メニューのお気に入りは準備中です。";
/// "곧 만나볼 수 있어요!"
"like.menuComingSoonSubtitle" = "もうすぐ利用できます!";
51 changes: 37 additions & 14 deletions EATSSU/App/Resources/ko.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@
"tabBar.meal" = "학식";
/// "지도"
"tabBar.map" = "지도";
/// "나만아니면돼~"
"tabBar.coffee" = "나만아니면돼~";
/// ""
"tabBar.like" = "";
/// "마이"
"tabBar.my" = "마이";

Expand Down Expand Up @@ -427,18 +427,6 @@
"review.characterCount" = "%d / %d";


// MARK: - Coffee

/// "나가시겠어요?"
"coffee.askLeave" = "나가시겠어요?";
/// "지금 나가면 진행 상황이\n저장되지 않습니다."
"coffee.leaveWarning" = "지금 나가면 진행 상황이\n저장되지 않습니다.";
/// "나가기"
"coffee.leave" = "나가기";
/// "계속하기"
"coffee.continueEvent" = "계속하기";


// MARK: - Splash

/// NoticeSplashVC - "긴급 서버 점검 안내"
Expand Down Expand Up @@ -682,3 +670,38 @@
"restaurantInfo.snackCorner.time" = "11:00~15:30(점심)";
/// "분식류, 옛날도시락, 컵밥 등\n주말 휴무"
"restaurantInfo.snackCorner.etc" = "분식류, 옛날도시락, 컵밥 등\n주말 휴무";

// MARK: - Like

/// "찜"
"like.title" = "찜";
/// "메뉴 찜"
"like.menuTab" = "메뉴 찜";
/// "제휴 찜"
"like.partnershipTab" = "제휴 찜";
/// "편집"
"like.edit" = "편집";
/// "전체 선택"
"like.selectAll" = "전체 선택";
/// "삭제"
"like.delete" = "삭제";
/// "삭제 %d"
"like.deleteCount" = "삭제 %d";
/// "취소하기"
"like.undo" = "취소하기";
/// "찜한 제휴에 추가했어요."
"like.addedToast" = "찜한 제휴에 추가했어요.";
/// "찜한 제휴에서 삭제했어요."
"like.removedToast" = "찜한 제휴에서 삭제했어요.";
/// "찜 처리에 실패했어요. 다시 시도해 주세요."
"like.updateFailed" = "찜 처리에 실패했어요. 다시 시도해 주세요.";
/// "찜한 제휴를 불러오지 못했어요."
"like.loadFailed" = "찜한 제휴를 불러오지 못했어요.";
/// "아직 찜한 제휴가 없어요."
"like.emptyTitle" = "아직 찜한 제휴가 없어요.";
/// "관심 있는 제휴를 찜하고 빠르게 확인해 보세요!"
"like.emptySubtitle" = "관심 있는 제휴를 찜하고 빠르게 확인해 보세요!";
/// "메뉴 찜은 준비 중이에요."
"like.menuComingSoonTitle" = "메뉴 찜은 준비 중이에요.";
/// "곧 만나볼 수 있어요!"
"like.menuComingSoonSubtitle" = "곧 만나볼 수 있어요!";
51 changes: 37 additions & 14 deletions EATSSU/App/Resources/vi.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@
"tabBar.meal" = "Nhà ăn";
/// "지도"
"tabBar.map" = "Bản đồ";
/// "나만아니면돼~"
"tabBar.coffee" = "Trò chơi may mắn";
/// ""
"tabBar.like" = "Yêu thích";
/// "마이"
"tabBar.my" = "Trang của tôi";

Expand Down Expand Up @@ -427,18 +427,6 @@
"review.characterCount" = "%d / %d";


// MARK: - Coffee

/// "나가시겠어요?"
"coffee.askLeave" = "Bạn có muốn rời đi không?";
/// "지금 나가면 진행 상황이\n저장되지 않습니다."
"coffee.leaveWarning" = "Nếu rời đi bây giờ, tiến trình sẽ\nkhông được lưu.";
/// "나가기"
"coffee.leave" = "Rời đi";
/// "계속하기"
"coffee.continueEvent" = "Tiếp tục";


// MARK: - Splash

/// NoticeSplashVC - "긴급 서버 점검 안내"
Expand Down Expand Up @@ -682,3 +670,38 @@
"restaurantInfo.snackCorner.time" = "11:00~15:30(Bữa trưa)";
/// "분식류, 옛날도시락, 컵밥 등\n주말 휴무"
"restaurantInfo.snackCorner.etc" = "Bunsik(đồ ăn vặt Hàn Quốc), cơm hộp kiểu xưa, cơm ly, v.v.\nĐóng cửa cuối tuần";

// MARK: - Like

/// "찜"
"like.title" = "Yêu thích";
/// "메뉴 찜"
"like.menuTab" = "Món ăn";
/// "제휴 찜"
"like.partnershipTab" = "Ưu đãi";
/// "편집"
"like.edit" = "Chỉnh sửa";
/// "전체 선택"
"like.selectAll" = "Chọn tất cả";
/// "삭제"
"like.delete" = "Xóa";
/// "삭제 %d"
"like.deleteCount" = "Xóa %d";
/// "취소하기"
"like.undo" = "Hoàn tác";
/// "찜한 제휴에 추가했어요."
"like.addedToast" = "Đã thêm vào ưu đãi yêu thích.";
/// "찜한 제휴에서 삭제했어요."
"like.removedToast" = "Đã xóa khỏi ưu đãi yêu thích.";
/// "찜 처리에 실패했어요. 다시 시도해 주세요."
"like.updateFailed" = "Xử lý thất bại. Vui lòng thử lại.";
/// "찜한 제휴를 불러오지 못했어요."
"like.loadFailed" = "Không thể tải ưu đãi yêu thích.";
/// "아직 찜한 제휴가 없어요."
"like.emptyTitle" = "Chưa có ưu đãi yêu thích.";
/// "관심 있는 제휴를 찜하고 빠르게 확인해 보세요!"
"like.emptySubtitle" = "Hãy thêm ưu đãi bạn quan tâm để xem nhanh!";
/// "메뉴 찜은 준비 중이에요."
"like.menuComingSoonTitle" = "Món ăn yêu thích đang được chuẩn bị.";
/// "곧 만나볼 수 있어요!"
"like.menuComingSoonSubtitle" = "Sắp ra mắt!";
3 changes: 0 additions & 3 deletions EATSSU/App/Sources/Data/Firebase/FirebaseScreenID.swift
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,6 @@ enum FirebaseScreenID {
}

/// 나만아니면돼~ (커피 이벤트)
enum AnyoneButMeActivity {
static let abm1 = "ABM_001000"
}

/// 마이페이지
enum MyPage {
Expand Down
6 changes: 3 additions & 3 deletions EATSSU/App/Sources/Data/Firebase/MapAnalyticsManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,13 @@ final class MapAnalyticsManager {
#1 하단 탭바에서 '지도'를 클릭했을 때 호출
- Parameter collegeId: 사용자의 단과대 ID (학과 미설정 시 nil)
- Parameter majorId: 사용자의 학과 ID (학과 미설정 시 nil)
- Note: 지도는 항상 학교 제휴 > 전체 필터로 진입하므로 default_type은 "general" 고정 (대시보드 호환용 파라미터 유지)
- Parameter isFestival: 진입 시 축제 필터가 선택돼 있으면 true (마지막 선택 필터가 유지되므로 실제 상태로 판단)
*/
func logClickMap(collegeId: Int?, majorId: Int?) {
func logClickMap(collegeId: Int?, majorId: Int?, isFestival: Bool) {
AnalyticsService.logEvent(
Event.clickMap,
parameters: makeParameters(collegeId: collegeId, majorId: majorId, extra: [
Parameter.defaultType: "general"
Parameter.defaultType: isFestival ? "festival" : "general"
])
)
}
Expand Down
Loading