Skip to content
Open
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
e470405
[#275] Localizing 파일 추가
wjdalswl May 3, 2026
bd3471d
[#275] 마이페이지 테이블 cell UI 변경 & configure 메서드 추가
wjdalswl May 3, 2026
9c474aa
[#275] 공통 컴포넌트 CustomRadioButton 추가 & 마이페이지 RadioSelectionTableViewCe…
wjdalswl May 3, 2026
d78dccc
[#275] AppLanguage enum과 Manager 추가 및 TextLiteral 동적 로컬라이징 적용
wjdalswl May 3, 2026
111a302
[#275] MyPage cell 관련 모델 MyPageSectionData로 통합
wjdalswl May 3, 2026
18a893c
[#275] 언어 변경 뷰 컨트롤러 & 이용약간 뷰 컨트롤러 구현
wjdalswl May 3, 2026
252ec8f
[#275] 마이페이지 UI 리뉴얼
wjdalswl May 3, 2026
100ba78
[#275] 잘못들어간 코드 삭제
wjdalswl May 3, 2026
5fe5f24
[#275] 코드 리뷰 반영
wjdalswl May 3, 2026
9c3dd44
[#275] Project.swift가 리소스로 포함하도록 설정한 위치로 Localizable.strings 파일 이동
wjdalswl May 3, 2026
cd04509
[#275] Project.swift 파일 프로젝트 known region에 영어 추가
wjdalswl May 3, 2026
bafb18a
[#275] 언어 변경 뷰 스와이프로 뒤로 가기 활성화
wjdalswl May 3, 2026
8e51d1f
[#275] 알림 권한 관련 로컬라이징 추가
wjdalswl May 3, 2026
1ac3467
[#275] 소셜 로그인 버튼 로컬라이징 위해 이미지에서 직접 구현으로 변경
wjdalswl May 3, 2026
96ab609
[#275] 로그인 뷰 로컬라이징
wjdalswl May 3, 2026
c5852ed
[#275] LookAroundButton 이미지 삭제
wjdalswl May 3, 2026
8cff1a6
[#275] 식장 정보 이름 매칭을 위해 다시 한국어로 변형하는 로직 추가
wjdalswl May 5, 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
461 changes: 461 additions & 0 deletions EATSSU/App/Resources/en.lproj/Localizable.strings

Large diffs are not rendered by default.

462 changes: 462 additions & 0 deletions EATSSU/App/Resources/ko.lproj/Localizable.strings

Large diffs are not rendered by default.

13 changes: 7 additions & 6 deletions EATSSU/App/Sources/Notification/NotificationManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -119,25 +119,26 @@ class NotificationManager {
}

// MARK: - Error Types

enum NotificationError: Error {
case permissionDenied
case unknown

var message: String {
switch self {
case .permissionDenied:
return "알림 권한 필요"
return TextLiteral.Notification.permissionDeniedMessage
case .unknown:
return "알 수 없는 오류"
return TextLiteral.Notification.unknownErrorMessage
}
}

var description: String {
switch self {
case .permissionDenied:
return "알림을 받으려면 설정에서 알림 권한을 허용해주세요."
return TextLiteral.Notification.permissionDeniedDescription
case .unknown:
return "다시 시도해주세요."
return TextLiteral.Notification.unknownErrorDescription
}
}
}
Expand Down
43 changes: 22 additions & 21 deletions EATSSU/App/Sources/Presentation/Auth/View/LoginView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,31 +19,30 @@ final class LoginView: BaseUIView {
imageView.image = EATSSUDesignAsset.Images.authLogo.image
return imageView
}()

private let logoSubTitle: UIImageView = {
let imageView = UIImageView()
imageView.image = EATSSUDesignAsset.Images.authSubTitle.image
return imageView
}()

let appleLoginButton: UIButton = {
let button = UIButton()
button.setImage(EATSSUDesignAsset.Images.appleLoginButton.image, for: .normal)
return button
}()

let kakaoLoginButton: UIButton = {
let button = UIButton()
button.setImage(EATSSUDesignAsset.Images.kakaoLoginButton.image, for: .normal)
return button

private let logoSubTitle: UILabel = {
let label = UILabel()
label.font = .header2
label.attributedText = TextLiteral.Common.logoSubTitle.logoHighlightedLastWord(
baseColor: .black,
highlightColor: .primary
)
return label
}()


let appleLoginButton = SocialLoginButton(type: .apple)

let kakaoLoginButton = SocialLoginButton(type: .kakao)

let lookingWithNoSignInButton: UIButton = {
let button = UIButton()
button.setImage(EATSSUDesignAsset.Images.lookAroundButton.image, for: .normal)
let button = UIButton(type: .system)
button.setTitle(TextLiteral.Auth.lookingWithNoSignIn, for: .normal)
button.setTitleColor(.gray400, for: .normal)
button.titleLabel?.font = .body2
button.backgroundColor = .clear
return button
}()

private var lastLoginTooltipView: LastLoginTooltipView?

override func configureUI() {
Expand All @@ -69,11 +68,13 @@ final class LoginView: BaseUIView {

appleLoginButton.snp.makeConstraints {
$0.centerX.equalToSuperview()
$0.horizontalEdges.equalToSuperview().inset(45)
$0.bottom.equalTo(self.safeAreaLayoutGuide).inset(151)
}

kakaoLoginButton.snp.makeConstraints {
$0.centerX.equalToSuperview()
$0.horizontalEdges.equalToSuperview().inset(45)
$0.bottom.equalTo(self.safeAreaLayoutGuide).inset(90)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -360,9 +360,10 @@ extension HomeRestaurantViewController: UITableViewDataSource {
}

let restaurantName = sectionHeaderRestaurant[section]
let koreanName = koreanRestaurantName(from: restaurantName)
header.titleLabel.text = restaurantName

if let info = RestaurantInfoData.restaurantInfoData.first(where: { $0.name == restaurantName }) {
if let info = RestaurantInfoData.restaurantInfoData.first(where: { $0.name == koreanName }) {
var container = AttributeContainer()
container.font = EATSSUDesignFontFamily.Pretendard.medium.font(size: 10)
header.infoButton.configuration?.attributedTitle = AttributedString(info.location, attributes: container)
Expand Down Expand Up @@ -390,6 +391,25 @@ extension HomeRestaurantViewController: UITableViewDataSource {

return header
}

// TODO: - 추후 삭제 필요: RestaurantInfoData 관련 Firebase 반환 값에서 id 추가로 받아서 이름 말고 id로 매칭하는 방식으로 변경 필요

private func koreanRestaurantName(from name: String) -> String {
switch name {
case TextLiteral.Restaurant.dodamRestaurant:
return "도담 식당"
case TextLiteral.Restaurant.studentRestaurant:
return "학생 식당"
case TextLiteral.Restaurant.snackCorner:
return "스낵 코너"
case TextLiteral.Restaurant.dormitoryRestaurant:
return "기숙사 식당"
case TextLiteral.Restaurant.facultyRestaurant:
return "FACULTY (교직원 전용)"
default:
return name
}
}
}

// MARK: - UITableViewDelegate
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,26 @@ final class RestaurantInfoViewController: BaseViewController {
extension RestaurantInfoViewController: RestaurantInfoDelegate {
func didTappedRestaurantInfo(restaurantName: String) {
restaurantInfoView.restaurantNameLabel.text = restaurantName
if let restaurantInfo = RestaurantInfoData.restaurantInfoData.first(where: { $0.name == restaurantName }) {
let koreanName = koreanRestaurantName(from: restaurantName)
if let restaurantInfo = RestaurantInfoData.restaurantInfoData.first(where: { $0.name == koreanName }) {
restaurantInfoView.bind(data: restaurantInfo)
}
}

private func koreanRestaurantName(from name: String) -> String {
switch name {
case TextLiteral.Restaurant.dodamRestaurant:
return "도담 식당"
case TextLiteral.Restaurant.studentRestaurant:
return "학생 식당"
case TextLiteral.Restaurant.snackCorner:
return "스낵 코너"
case TextLiteral.Restaurant.dormitoryRestaurant:
return "기숙사 식당"
case TextLiteral.Restaurant.facultyRestaurant:
return "FACULTY (교직원 전용)"
default:
return name
}
}
}
84 changes: 60 additions & 24 deletions EATSSU/App/Sources/Presentation/MyPage/Enum/MyPageLabels.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,65 @@

import Foundation

/// "마이파이지"에서 확인할 수 있는 서비스 리스트
enum MyPageLabels: Int {
/// 푸시 알림 설정
case NotificationSetting = 0

/// 내 정보
case MyInfo
/// "마이페이지"에서 확인할 수 있는 서비스 리스트
enum MyPageLabels {
case notificationSetting
case myInfo
case myReview
case inquiry
case creators
case instagram
case languageSetting
case termsAndPolicy
case logout

/// 내 리뷰
case MyReview

/// 문의하기
case Inquiry

/// 서비스 이용약관
case TermsOfUse

/// 개인정보 이용약관
case PrivacyTermsOfUse

/// 만든사람들
case Creator

/// 로그아웃
case Logout
var title: String {
switch self {
case .notificationSetting:
return TextLiteral.MyPage.pushNotificationSetting
case .myInfo:
return TextLiteral.MyPage.myInfo
case .myReview:
return TextLiteral.MyPage.myReview
case .inquiry:
return TextLiteral.MyPage.inquiry
case .creators:
return TextLiteral.MyPage.creators
case .instagram:
return TextLiteral.MyPage.instagram
case .languageSetting:
return TextLiteral.MyPage.languageSetting
case .termsAndPolicy:
return TextLiteral.MyPage.termsAndPolicy
case .logout:
return TextLiteral.MyPage.logout
}
}

var subtitle: String? {
switch self {
case .notificationSetting:
return TextLiteral.MyPage.pushNotificationDescription
default:
return nil
}
}

var rightText: String? {
switch self {
case .languageSetting:
return TextLiteral.MyPage.currentLanguage
default:
return nil
}
}

var showsDisclosure: Bool {
switch self {
case .notificationSetting, .logout:
return false
default:
return true
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//
// MyPageTableMetric.swift
// EATSSU
//
// Created by jeongminji on 5/3/26.
//

import Foundation

enum MyPageTableMetric {
static let normalRowHeight: CGFloat = 48
static let notificationRowHeight: CGFloat = 74
static let headerHeight: CGFloat = 18
static let footerHeight: CGFloat = 16

static func rowHeight(for item: MyPageLabels) -> CGFloat {
switch item {
case .notificationSetting:
return notificationRowHeight

default:
return normalRowHeight
}
}
}
42 changes: 0 additions & 42 deletions EATSSU/App/Sources/Presentation/MyPage/Model/MyPageLocalData.swift

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
//
// MyPageSectionData.swift
// EATSSU
//
// Created by jeongminji on 5/3/26.
//

import Foundation

struct MyPageSectionData {
let headerTitle: String
let items: [MyPageLabels]
}

extension MyPageSectionData {
static var sections: [MyPageSectionData] {
[
MyPageSectionData(
headerTitle: TextLiteral.MyPage.activitySection,
items: [
.notificationSetting,
.myInfo,
.myReview
]
),
MyPageSectionData(
headerTitle: TextLiteral.MyPage.serviceInfoSection,
items: [
.inquiry,
.creators,
.instagram
]
),
MyPageSectionData(
headerTitle: TextLiteral.MyPage.etcSection,
items: [
.languageSetting,
.termsAndPolicy,
.logout
]
)
]
}
}
Loading