Skip to content

Commit

Permalink
Merge pull request #394 from wakmusic/feature/special_logo
Browse files Browse the repository at this point in the history
๐Ÿ”€ :: 12์›” ์ŠคํŽ˜์…œ ๋กœ๊ณ  ์ ์šฉ
  • Loading branch information
KangTaeHoon authored Nov 28, 2023
2 parents 44d692d + 7623985 commit b8d7a7b
Show file tree
Hide file tree
Showing 14 changed files with 57 additions and 33 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "AppIcon_1024x1024.png",
"filename" : "AppIcon.png",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import Utility
import DesignSystem
import SnapKit
import Then
import MarqueeLabel

final class MiniPlayerView: UIView {
private lazy var blurEffectView = UIVisualEffectView().then {
Expand All @@ -37,9 +38,7 @@ final class MiniPlayerView: UIView {
$0.axis = .vertical
$0.distribution = .fill
}

lazy var titleLabel = WMFlow


internal lazy var titleLabel = MarqueeLabel().then {
$0.font = .init(font: DesignSystemFontFamily.Pretendard.medium, size: 14)
$0.textColor = DesignSystemAsset.GrayColor.gray900.color
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,16 @@ extension IntroViewController {
private func inputBind() {
input.fetchPermissionCheck.onNext(())
}
}

extension IntroViewController {
private func outputBind() {
permissionResult()
appInfoResult()
userInfoAndLottieEnded()
}

private func permissionResult() {
output.permissionResult
.do(onNext: { [weak self] (permission) in
guard let self = self else { return }
Expand All @@ -55,24 +63,23 @@ extension IntroViewController {
self.present(permission, animated: true)
})
.filter { return ($0 ?? false) == true }
.do(onNext: { [weak self] (_) in
guard let self = self else { return }
self.lottiePlay()
self.input.startLottieAnimation.onNext(())
})
.map{ _ in () }
.bind(to: input.fetchAppCheck)
.disposed(by: disposeBag)

}

private func appInfoResult(){
output.appInfoResult
.withUnretained(self)
.subscribe(onNext: { owner, result in
switch result {
case let .success(entity):
owner.lottiePlay(specialLogo: entity.specialLogo)

var textPopupVc: TextPopupViewController
let updateTitle: String = "์™ํƒ€๋ฒ„์Šค ๋ฎค์ง์ด ์—…๋ฐ์ดํŠธ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."
let updateMessage: String = "์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ›„ ์ด์šฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.\n๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค."

switch entity.flag {
case .normal:
owner.input.fetchUserInfoCheck.onNext(())
Expand Down Expand Up @@ -131,6 +138,7 @@ extension IntroViewController {
owner.showPanModal(content: textPopupVc)

case let .failure(error):
owner.lottiePlay(specialLogo: false)
owner.showPanModal(
content: TextPopupViewController.viewController(
text: error.asWMError.errorDescription ?? "",
Expand All @@ -141,17 +149,20 @@ extension IntroViewController {
}
})
.disposed(by: disposeBag)

}

private func userInfoAndLottieEnded() {
Observable.zip(
output.userInfoResult,
output.endLottieAnimation
output.endedLottieAnimation
) { (result, _) -> Result<String, Error> in
return result
}
.withUnretained(self)
.subscribe(onNext: { (owner, result) in
switch result{
case .success(_):
case let .success(suc):
DEBUG_LOG("success: \(suc)โœ…โœ…")
owner.showTabBar()

case .failure(let error):
Expand All @@ -177,13 +188,17 @@ extension IntroViewController {
self.navigationController?.pushViewController(viewController, animated: false)
}

private func lottiePlay() {
let animationView = LottieAnimationView(name: "Splash_Logo_Main", bundle: DesignSystemResources.bundle)
private func lottiePlay(specialLogo: Bool) {
let animationView = LottieAnimationView(
name: specialLogo ? "Splash_Logo_Special" : "Splash_Logo_Main",
bundle: DesignSystemResources.bundle
)
animationView.frame = self.logoContentView.bounds
animationView.backgroundColor = .clear
animationView.contentMode = .scaleAspectFill
animationView.loopMode = .playOnce

animationView.clipsToBounds = false

self.logoContentView.addSubview(animationView)

let originWidth: CGFloat = 156.0
Expand All @@ -199,6 +214,9 @@ extension IntroViewController {
$0.centerX.equalTo(self.logoContentView.snp.centerX)
$0.centerY.equalTo(self.logoContentView.snp.centerY)
}
animationView.play()

animationView.play { _ in
self.input.endedLottieAnimation.onNext(())
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,14 @@ final public class IntroViewModel: ViewModelType {
var fetchPermissionCheck: PublishSubject<Void> = PublishSubject()
var fetchAppCheck: PublishSubject<Void> = PublishSubject()
var fetchUserInfoCheck: PublishSubject<Void> = PublishSubject()
var startLottieAnimation: PublishSubject<Void> = PublishSubject()
var endedLottieAnimation: PublishSubject<Void> = PublishSubject()
}

public struct Output {
var permissionResult: PublishSubject<Bool?> = PublishSubject()
var appInfoResult: PublishSubject<Result<AppInfoEntity, Error>> = PublishSubject()
var userInfoResult: PublishSubject<Result<String, Error>> = PublishSubject()
var endLottieAnimation: PublishSubject<Void> = PublishSubject()
var endedLottieAnimation: PublishSubject<Void> = PublishSubject()
}

public init(
Expand All @@ -57,9 +57,8 @@ final public class IntroViewModel: ViewModelType {
.bind(to: output.permissionResult)
.disposed(by: disposeBag)

input.startLottieAnimation
.delay(RxTimeInterval.milliseconds(1200), scheduler: MainScheduler.instance)
.bind(to: output.endLottieAnimation)
input.endedLottieAnimation
.bind(to: output.endedLottieAnimation)
.disposed(by: disposeBag)

input.fetchAppCheck
Expand All @@ -71,10 +70,12 @@ final public class IntroViewModel: ViewModelType {
if wmError == .offline {
return Single<AppInfoEntity>.create { single in
single(.success(AppInfoEntity(
flag: .offline,
title: "",
description: wmError.errorDescription ?? "",
version: ""))
flag: .offline,
title: "",
description: wmError.errorDescription ?? "",
version: "",
specialLogo: false)
)
)
return Disposables.create()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@ import Foundation
public struct AppInfoDTO: Codable {
public let flag: AppInfoFlagType
public let title, description, version: String?
public let specialLogo: Bool?
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,18 @@ public struct AppInfoEntity: Equatable {
flag: AppInfoFlagType,
title: String,
description: String,
version: String
version: String,
specialLogo: Bool
)
{
self.flag = flag
self.title = title
self.description = description
self.version = version
self.specialLogo = specialLogo
}

public let flag: AppInfoFlagType
public let title, description, version: String
public let specialLogo: Bool
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ public extension AppInfoDTO {
flag: flag,
title: title ?? "",
description: description ?? "",
version: version ?? ""
version: version ?? "",
specialLogo: specialLogo ?? false
)
}
}

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Tuist/Signing/WaktaverseMusic.Debug.cer.encrypted
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Rd0yIgfF2SEOK+dXqkwmGA==-+TSQ+Zcs4QYGR9uc/42s/DGbqiwp18+SLXqc1A02oKIxWymqUW+psMfRiyT6HadHKrLlE4JXIYWIktHSO3EY1c3EJcdqcRylVz7eATkqEM/i3IGF9GUZNjP1DFDSb5NfKQSbFe9LmIU6miuYertCQB7xMraBG6RKPovGV0PvX/jt/R1cjHs0TG6t1T9gjMD2Ki6kepmIYe32m9QjbmL4hly8/ITU9MuuDT/rXvVl1/M5l6nUCdGj/2nmeP7Q2FQP4/QtgwQSJVEhV7cuJUPhqT0GAnKazyXlxXnPmKuAliE35/yX4bT9WwyryTMvoRcsWiqpezTZWXpNUGxWsWh0w+1HuIZXXVt4779lQWMFubOda3Pjz46zX8kJ+1ZVFeCLUr0bZJXot/5rn54xqR/JxivYcY1mnQjVpm1LzUc2wQGAeWnxxYR76VFz/CA+ezKYsph6/wSGHALXS/wr+H6Pi9yrGJ5HzQxVwKXfxwrwi3Ob3vDyN0hov5EL8k17TMx9bJwNkcmpfH6IZ2e79Z7wWsoRLwUQVq8zX13VIFMDuFyfcQzwkYL5oyeKA78HEil9VzYV4Bg0E6P1M2ia3ZSsW/6F/ZlWeRihYn6YcjZEYX6yMcA/j89MSfAIly1p8MkeLtR9Ao+54PLJyPQnzwOsBMmQntKwFRjB4abub1k8ScHgk1WKW45kNIFWbijriGL0ZBRmx2vz0+81dmCQu+vaP70UtrRYt6vYvOQ3fWkGc69A/xRqX5s5Z+/GdRje4Bh7hAFtzE1FTjHl95nYQcP+GV9pdbFbly1B3ifVAMu3N4YtlVjEhbtEzG+SmV2Hj0BDujtgVWaX4WsLToSHh9TQlB+u3VPlwtB0Br4IUJMwm8Vhum/XnlsJugrt+mm0n0srUfukvsYSkk16boUb13PcgwRvtx9RhMAfqWYNO4w7+sYJ8QOeFkq2BRSeeJBOV87SO9fMnlp66TfZW0ozfNjl1uj7JA9ngVal6/Iwurz3mYfiEnKxy5aEkL7fk/2HRlWF43xlpOrOIfBdzyGya7HGebZ7MJsNsmDHAdy/nhgnQj9T0FbOdWKhnXfPEuv4XCtInfY2Lwg0Fj5HaXT18OLsQZwuaplKT2c40b8QEnmt6lAFwdgGsxvvZbRaiNdJjEtIe8CaZwTtWa+lCOlBgjcR3OmXeGa4x7EehfvzbEmXqIzexYj3sGU4o4bEq6yCPNM7xIUdOxbQsWnbBtimmZXbaZOfPJQuyCVY0jOaym43K4jZuBUm6fNhOL6dQhK8MEvpvlVemzNxxq8/bkbF+lrq6ZDK7hql6M2tDVg2mSAGca6DwueWXHjrSe8N+abBckPna47UlrX6k8PWIpgVmm34eubC3GgNb87syQen1u13syj6a9iAprlJzACoIDKes7GyR9+QF+4QygUj4NhS8piDDZ+1cYkSNc6iJ5Z/TLFdI4hlG/UJMf9H2NkCt1xUOHEun5yaGIlBp7Z1ag3EKrB+XCy62TVTaLQr6+2nfX7AsWtMu/QPa6HPa3uW0bmN4w1j8VDyGhU3gMln7APWI2dq4r94b3wl6TCmWt/rD9eDkJ3E7gzGkgwgGI4Lw53BKP8oC0+OWY7PvIKiGPfeImS/cLPSQ9jfANqM6q1qKH3+tYA5+SNtGOM09PLiUMw06x0b8t5k9lrvXXIh9LqgjN+1zIYh2ukf3QL2PH1TxKcsfx8OMTaqQKxTi+BWczvTjF1WUW0FqoiQJ07PtBk6UA13SmN5u2Cgvr3YgXQKstvoZYFJ2naUSQLp3qmLmlnkA7HXg83I8aGsQ+dNJINE3Gt4lRB4hoU2gvBRQ3WCzheXlI7CHdfFioQxIgACK4DvicnzuTTM6WfIWHOtn7vHFDapCz3zkCHx9L6gAXeuFOjMcoV7MG6UJA9yBVtnCiZffUnJIy4FIVXP5G6LpuTvS30YdFlSXoNWVin2g+1DDa9fiPTLaGtlypjIhcmq1iU=
Fl4nwJKCBazx3DL8xzU56w==-T+kG/m0iP7xrs0Zyj9AW3W9WaKpn7Uv2npPpllC2pj0zpE3D2DtQS1ZVodWXZaUpqiYX0qRooP5E74x0hdi0tltfN5KrzIEeJdLv5Lq8DRjN3Fe4geVe/AvM3seAs3JyN/wFGvDzJzCro+pF/kVrYoV3oN8qRKyfSZnP/RndjwM7xMb5oi+goVOoXHiMI4tpMFoQ9Tbg0HKod/RGlZI5e5SzMJEMbJoQS7HM/ougWpG+C4qif9AFRSVrWtF9ePXNeIxni1PModWZY2xfsh01UUNrFLHAz4+ZqCu9jmpVKTDHPwZ3srmZNKNUqftssYezsKwZyrM6fnE7kEpNbt3gD6DRV0NwM1zAJgx52us6biQcsLBQyUyU6wmIWEGGsHIcE92I5Ug/55VrgThq3cq7QMGMb3UUHq9XwgrtimrbeJ8ptF/xPPPRlZmCC1o6DcOcrKW+2kjl502kjR5k9Ou6B+8LkIHgdotLVV8CyOwAEjZQBsJIM8zUjuIByY9wcUWBhPuiPGvcZZxpLu0M53RSWdgUQUZZlpc/pOt3Dclic8jIWdct4pfpbM/JRnalKLXofTEsiQhkkkneUCxdsxVNpWYb5ZAyVzpVLa1+5iIl3dvn5Fcd2w8WxGg6S4x9DP78CreWYvq/c7Sk8Zc4qqu4U9cVsUJv/1qgHfcdwWD5ZbmlEHx30RAWMbD/3pEU50AZlqUxIp1S5jp43Gy4zlqByQFIAC/nmiw+c/MKfzGQT/a1uSVBeE3LMvWDjtO4DFLTAY6gPppWs5F5co4d/5LoYPqfK/zkMR9cZeEXLSHguvkKJWx9lUTFxkCTGKTb2qddk8d52RfQ2GWQbiHFwjgMhKgvDWXPLoQfwyBS71c06X9i728/i49FFCdn2jpPB4SxIT4yJZYvxy0MWib02jCIs399+DaFfhRp4BGjhX2Lk2GebE3O78OpuLtQDWr7yV46gJFj/4UYZtjQXQxV0gMF8rZgpa4mXy8xeEWC1lzLdA/dopiX9HfqwBl/mnJTs4lHNHzsmoz5Az5yT+C9guS4Bh4+f8KI5eUtnb8qPjqdqb/i3UBp8PwHL4uY/X6urN0/NLHV149yuPjkiT62aXnKErNIInnVXPsROdzWyczZlCyBW0He0aSjcwqnvDJYN95v8IZHlxN6KhGRtPfB0YhBXbkHbVNfshU8zRJyArvjtSRFJk1irAyHqQdBTFUGC+TFOc/NVGEXQvlc65HVBhhI4lkOWdon/tUBS+OEIj5Un3ekPyH0VJPz05MAR6AJlYw7ZB+cLSdKgZs6u68TXQ36YESzT2vERquD7M8Ae4JRHUt05/3i/HnpxUJat2lwwVcWtUVM9VXDxGB7QeZT0/KG5tWZimNw9fqnsuJD9MxYoqsixveZDG+Z0xMdvjbbr2py4KlagPA4ms3wQWzhG1sHKN+e/KnFDVAxMNHVFJ/1JAClPTEXZwYx/trBXB8f1Ad8kPFYrlJ0tk4i9n16RiFBebGC/1fH8HBS7jSVF9FzNwG4U82PJGj8r07DXVLzrgzwu6QIh2rVTm+0fob8BII/lekrnGz9ZOIA1DW4ev8q3ieEFbJTwsZxssfXkfN3zwy3OUHwj3wMGiFzqfWMT5OXPvRhDkImvtxMB6+/6lN7quGoi/RTXtAcASHx0YhldDGXe+Kod1pNgODPM/J75RxCjY2lG0zWsTGuKeYTAp9wcffefCbi5a8zUCqgerc3lRZHlr2SZMf2sP0iE12Ruq6Q81BrQGgaitG3FOpTDv69gQxysVyVQgbU1IE6fcEPU46SvfscLydENCDNzZmDfPdra70oY53E6pU+MZL7wYG2P7V2k+jC9+Jn6/cFebZcR2MSdGqUogb0uXwi0uCZj5lgN8t+z94ihbr0stEtAaCjVa5zrswWFqHjoBjZ+q2qW+yTw4CHlCWPyCz3ajpnYIsb/kYk1fIWTz8nB2ScJJ56Pnrg9WXrLm6psEKHw1U=
Loading

0 comments on commit b8d7a7b

Please sign in to comment.