channel-io / BezierSwift

MIT License
12 stars 10 forks source link

[Feature] window 컨테이너 도입 #22

Closed heoblitz closed 9 months ago

heoblitz commented 10 months ago

어떤 PR 인가요?

베지어 토스트와 다이얼로그가 전역에서 잘 보일 수 있도록 합니다.

작업 내용

  1. 베지어 토스트와 다이얼로그를 포함하는 UIWindow 컨테이너를 도입합니다.
  2. dismiss 와 데이터 플로우, 라우팅 로직을 정리합니다.
  3. 불필요한 public 접근 제어자를 제거합니다.

베지어 컨테이너 설정

as-is

View().initBezierToast()

to-be

SwiftUI 프로젝트이거나 SceneDelegate 를 사용하는 경우

var bezierWindow: UIWindow?

func scene(_ scene: UIScene, willConnectTo //...) {
  guard let windowScene = (scene as? UIWindowScene) else { return }

  self.bezierWindow = BezierSwift.initializeWindow(windowScene: windowScene)
}

SceneDelegate 를 사용하지 않는 경우

var bezierWindow: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions //...) {
  self.bezierWindow = BezierSwift.initializeWindow()
}

베지어 토스트 및 다이얼로그 사용법

as-is

BezierDialogManager.show(item: ~~)
BezierDialogManager.show(param: ~~)

BezierToastManager.show(~~)

to-be

BezierSwift.showDialog(item: ~~)
BezierSwift.showDialog(param: ~~)

BezierSwift.showToast(item: ~~)
BezierSwift.showToast(param: ~~)

스크린샷 혹은 동영상

다이얼로그 및 토스트

https://github.com/channel-io/BezierSwift/assets/25315898/4c621a92-cf7e-4771-aac7-92827b706128

다이얼로그 및 토스트 ( 화면 회전 )

https://github.com/channel-io/BezierSwift/assets/25315898/abb4c48e-7788-4a56-a851-cf5162895234

UIKit 프로젝트에서 테스트

https://github.com/channel-io/BezierSwift/assets/25315898/c777cf85-f222-48b1-9c4b-3fd3203361c5

Reference

Issue-number

Checklist