Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat [#50] Alert 부분 처리 #52

Merged
merged 9 commits into from
Jun 12, 2024
Merged

Feat [#50] Alert 부분 처리 #52

merged 9 commits into from
Jun 12, 2024

Conversation

kim-seonwoo
Copy link
Member

👾 작업 내용

일단 MainApp 파일이 너무 커지기도 했고 다들, contentView를 쓰는 것 같아서
MainApp의 Body부분의 요소들을 ContentView로 이전하였습니다!

푸시 앱으로 들어오면 보이는 Alert에 대한 연결을 처리했습니다!

  • 포인트 사용과 포인트 부족에 따른 Alert 분기 처리가 꽤 있어서 이부분을 AppStateViewModel에 구현하였습니다.
    func nextAlert() {
        switch currentAlertType {
        case .usePoints:
            currentAlertType = .unlock
        case .unlock:
            patchPointUse()
            getUsagePoint()
        case .unlockComplete:
            showCustomAlert = false
        case .insufficientPoints:
            showCustomAlert = false
            UserManager.shared.appStateString = "servicePrepare"
        default:
            break
        }
    }

포인트를 처리하는 Alert부분에 현재 내가 가지고 있는 포인트나 사용할 포인트 정보를 연결했어요!

  • 내가 받아야 할 포인트가 얼마나 남아있는 API가 추가됨에 따라 해당 API를 추가하고,
    이 API가 쓰이는 부분을 구현하였어요!
  • Point 로고의 붉은 점과, 챌린지 생성 시 받아야할 포인트가 있으면 Toast가 표현되게 하였어요!

그리고 상점 뷰에 서비스 준비중 페이지를 구현하였어요!

  • 이 뷰로 이동하는 경우가 두 가지가 있는데,
    첫 번째는 포인트 부족 Alert에서 상점으로 가는 부분이 있고,
    두 번째는 마이페이지에 상점 버튼을 눌렀을 때 가야해요!
  • 두 번째의 경우는 당연히 네비게이션 스택으로 처리하는 것이 좋을 것 같아서 그렇게 구현하였고,
    첫 번째의 경우 바로 마이페이지뷰 네비게이션 스택 안에 있는 서비스 준비 뷰를 보여주는 방법이 생각나지 않아, 일단 AppState 자체를 교체해서 rootView 자체를 바꾸는 방식으로 처리했어요!
    따라서 뒤로 가기 버튼도 분기 처리를 해줬어요!
                if presentationMode.wrappedValue.isPresented {
                    dismiss()
                } else {
                    UserManager.shared.appStateString = "home"
                    // TabBar에 있는 마이페이지로 바로 돌아가는 방법을 생각해 봐야 겠어요!
                }

🚀 PR Point

  • 현재 AppStateViewModel이 NotificationManager파일 안에 있는데, 분리해도 좋겠다는 생각은 들어요!

✅ CheckList

  • 오류 없이 빌드되는지 확인
  • 로그용 print문 제거
  • 불필요한 주석 제거
  • 코드 컨벤션 확인

🔗 Issue

Resolved #50

@kim-seonwoo kim-seonwoo added 😎선우 선우의 issue ✨FEAT 기능 구현 📡NETWORK API 작업 labels Jun 11, 2024
@kim-seonwoo kim-seonwoo added this to the 🔭2차 스프린트🪐 milestone Jun 11, 2024
@kim-seonwoo kim-seonwoo requested a review from Zoe0929 June 11, 2024 02:37
@kim-seonwoo kim-seonwoo self-assigned this Jun 11, 2024
@kim-seonwoo kim-seonwoo linked an issue Jun 11, 2024 that may be closed by this pull request
Copy link
Member

@Zoe0929 Zoe0929 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 좋습니다!

@@ -35,47 +31,7 @@ struct HMH_iOSApp: App {

var body: some Scene {
WindowGroup {
ZStack {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

정리 감사합니다! 아주 좋아요

@@ -8,6 +8,7 @@
import Foundation
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아래 UIKit이나 SwiftUI 를 import할거면 이건 필요없을 것 같아요 ~ 정리 부탁드립니다!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오오,,, 맞네요!!

Comment on lines +34 to +41
DispatchQueue.main.async {
if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
let rootViewController = windowScene.windows.first?.rootViewController as? UIHostingController<ContentView> {
AppStateViewModel.shared.onAppear()
AppStateViewModel.shared.currentAlertType = .usePoints
AppStateViewModel.shared.showCustomAlert = true
}
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

쓰레드를 main으로 지정해둔 이유가 궁금합니다!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alert을 띄우는 UI 동작으로 변하는 부분을 처리하는 동작에서,
Main 쓰레드를 보장하지 않으면, 비정상 종료가 될 수도 있다고 들어서요!
여기는 불필요 할 까요?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

단순 궁금증이었습니당 ㅎㅎ 좋아요~

@kim-seonwoo kim-seonwoo merged commit f0cac5c into develop Jun 12, 2024
@Zoe0929 Zoe0929 deleted the feat/#50-Alert branch June 19, 2024 02:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨FEAT 기능 구현 📡NETWORK API 작업 😎선우 선우의 issue
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

[Feat] Alert 띄우기 구현
2 participants