Skip to content

Commit a36d8d5

Browse files
authored
팝업에 링크 추가 (#336)
* Add linkUrl to Popups * Apply SwiftFormat changes --------- Co-authored-by: chaemin2001 <chaemin2001@users.noreply.github.com>
1 parent 2796c3b commit a36d8d5

File tree

4 files changed

+28
-6
lines changed

4 files changed

+28
-6
lines changed

SNUTT-2022/SNUTT/Models/Popup.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ import Foundation
1010
struct Popup: Identifiable {
1111
let id: String
1212
let imageURL: String
13+
let linkURL: String?
1314
let hiddenDays: Int?
15+
1416
private(set) var dismissedAt: Date?
1517
private(set) var dontShowForWhile: Bool
1618

@@ -48,14 +50,16 @@ extension Popup {
4850
init(from dto: PopupDto) {
4951
id = dto.key
5052
imageURL = dto.imageUri
53+
linkURL = dto.linkUrl
5154
hiddenDays = dto.hiddenDays
5255
dismissedAt = nil
5356
dontShowForWhile = false
5457
}
5558

56-
init(from metadata: PopupMetadata, imageUri: String) {
59+
init(from metadata: PopupMetadata, imageUri: String, linkUrl: String?) {
5760
id = metadata.key
5861
imageURL = imageUri
62+
linkURL = linkUrl
5963
hiddenDays = metadata.hiddenDays
6064
dismissedAt = metadata.dismissedAt
6165
dontShowForWhile = metadata.dontShowForWhile ?? false

SNUTT-2022/SNUTT/Repositories/Dto/PopupDto.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ struct PopupResponseDto: Decodable {
1414
struct PopupDto: Decodable {
1515
let key: String
1616
let imageUri: String
17+
let linkUrl: String?
1718
let hiddenDays: Int?
1819
}
1920

SNUTT-2022/SNUTT/Services/PopupService.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ extension PopupService {
5555
if popupDto.hiddenDays != localPopup.hiddenDays {
5656
return .init(from: popupDto)
5757
}
58-
return .init(from: localPopup, imageUri: popupDto.imageUri)
58+
return .init(from: localPopup, imageUri: popupDto.imageUri, linkUrl: popupDto.linkUrl)
5959
}
6060
}
6161
}

SNUTT-2022/SNUTT/Views/Components/PopupView.swift

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,19 @@ struct PopupView: View {
1616
switch phase {
1717
case let .success(popupImage):
1818
VStack(spacing: 0) {
19-
popupImage
20-
.resizable()
21-
.scaledToFit()
19+
if let linkURL = popup.linkURL, let url = URL(string: linkURL) {
20+
Button {
21+
UIApplication.shared.open(url)
22+
} label: {
23+
popupImage
24+
.resizable()
25+
.scaledToFit()
26+
}
27+
} else {
28+
popupImage
29+
.resizable()
30+
.scaledToFit()
31+
}
2232

2333
HStack {
2434
Spacer()
@@ -60,7 +70,14 @@ struct PopupView: View {
6070
struct PopupView_Previews: PreviewProvider {
6171
static var previews: some View {
6272
PopupView(
63-
popup: .init(id: "", imageURL: "https://avatars.githubusercontent.com/u/70614553?v=4", hiddenDays: 0, dismissedAt: nil, dontShowForWhile: false),
73+
popup: .init(
74+
id: "",
75+
imageURL: "https://avatars.githubusercontent.com/u/70614553?v=4",
76+
linkURL: nil,
77+
hiddenDays: 0,
78+
dismissedAt: nil,
79+
dontShowForWhile: false
80+
),
6481
dismiss: { _, _ in
6582
}
6683
)

0 commit comments

Comments
 (0)