Skip to content

Commit 7079e06

Browse files
committed
move release date view to ReleaseDateView.swift
- I moved outside 2 lines of `.frame(maxWidth: .infinity, alignment: .leading)` because this layout job should belong to `InfoPane` - I added preview blocks for testing
1 parent 5b18a90 commit 7079e06

3 files changed

Lines changed: 63 additions & 17 deletions

File tree

Xcodes.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
536CFDD4263C9A8000026CE0 /* XcodesSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 536CFDD3263C9A8000026CE0 /* XcodesSheet.swift */; };
1414
53CBAB2C263DCC9100410495 /* XcodesAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53CBAB2B263DCC9100410495 /* XcodesAlert.swift */; };
1515
63EAA4EB259944450046AB8F /* ProgressButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63EAA4EA259944450046AB8F /* ProgressButton.swift */; };
16+
B0C6AD042AD6E65700E64698 /* ReleaseDateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0C6AD032AD6E65700E64698 /* ReleaseDateView.swift */; };
1617
CA11E7BA2598476C00D2EE1C /* XcodeCommands.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA11E7B92598476C00D2EE1C /* XcodeCommands.swift */; };
1718
CA2518EC25A7FF2B00F08414 /* AppStateUpdateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA2518EB25A7FF2B00F08414 /* AppStateUpdateTests.swift */; };
1819
CA25192A25A9644800F08414 /* XcodeInstallState.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA25192925A9644800F08414 /* XcodeInstallState.swift */; };
@@ -192,6 +193,7 @@
192193
A0187D39285792D1002F46F9 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
193194
AAB037D32839BD4700017680 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = "<group>"; };
194195
AB4EB0DE28541FA000FF3B1D /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = "<group>"; };
196+
B0C6AD032AD6E65700E64698 /* ReleaseDateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReleaseDateView.swift; sourceTree = "<group>"; };
195197
B648F22B2810C1130096781B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = "<group>"; };
196198
C0AE7FA4283002DC00DA63D2 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = "<group>"; };
197199
CA11E7B92598476C00D2EE1C /* XcodeCommands.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XcodeCommands.swift; sourceTree = "<group>"; };
@@ -617,6 +619,7 @@
617619
children = (
618620
CAFBDC67259A308B003DCC5A /* InfoPane.swift */,
619621
E8E98A9525D863D700EC89A0 /* InstallationStepDetailView.swift */,
622+
B0C6AD032AD6E65700E64698 /* ReleaseDateView.swift */,
620623
);
621624
path = InfoPane;
622625
sourceTree = "<group>";
@@ -842,6 +845,7 @@
842845
CA9FF8662595130600E47BAF /* View+IsHidden.swift in Sources */,
843846
CAE4248C259A68B800B8B246 /* Optional+IsNotNil.swift in Sources */,
844847
CA9FF9362595B44700E47BAF /* HelperClient.swift in Sources */,
848+
B0C6AD042AD6E65700E64698 /* ReleaseDateView.swift in Sources */,
845849
CAA8587C25A2B37900ACF8C0 /* IsTesting.swift in Sources */,
846850
CABFA9CA2592EEEA00380FEE /* AppState+Update.swift in Sources */,
847851
CA44901F2463AD34003D8213 /* Tag.swift in Sources */,

Xcodes/Frontend/InfoPane/InfoPane.swift

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ struct InfoPane: View {
5555

5656
Group{
5757
releaseNotes(for: xcode)
58-
releaseDate(for: xcode)
58+
ReleaseDateView(date: xcode.releaseDate)
59+
.frame(maxWidth: .infinity, alignment: .leading)
5960
identicalBuilds(for: xcode)
6061
compatibility(for: xcode)
6162
sdks(for: xcode)
@@ -113,22 +114,6 @@ struct InfoPane: View {
113114
}
114115
}
115116

116-
@ViewBuilder
117-
private func releaseDate(for xcode: Xcode) -> some View {
118-
if let releaseDate = xcode.releaseDate {
119-
VStack(alignment: .leading) {
120-
Text("ReleaseDate")
121-
.font(.headline)
122-
.frame(maxWidth: .infinity, alignment: .leading)
123-
Text("\(releaseDate, style: .date)")
124-
.font(.subheadline)
125-
.frame(maxWidth: .infinity, alignment: .leading)
126-
}
127-
} else {
128-
EmptyView()
129-
}
130-
}
131-
132117
@ViewBuilder
133118
private func releaseNotes(for xcode: Xcode) -> some View {
134119
if let releaseNotesURL = xcode.releaseNotesURL {
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
//
2+
// ReleaseDateView.swift
3+
// Xcodes
4+
//
5+
// Created by Duong Thai on 11/10/2023.
6+
// Copyright © 2023 Robots and Pencils. All rights reserved.
7+
//
8+
9+
import SwiftUI
10+
11+
struct ReleaseDateView: View {
12+
let date: Date?
13+
14+
var body: some View {
15+
if let date = date {
16+
VStack(alignment: .leading) {
17+
Text("ReleaseDate (old version)")
18+
.font(.headline)
19+
Text("\(date, style: .date)")
20+
.font(.subheadline)
21+
}
22+
} else {
23+
EmptyView()
24+
}
25+
}
26+
27+
init(date: Date? = nil) {
28+
self.date = date
29+
}
30+
}
31+
32+
struct ReleaseDateView_Preview: PreviewProvider {
33+
static var previews: some View {
34+
WrapperView()
35+
}
36+
}
37+
38+
private struct WrapperView: View {
39+
@State var isNil = false
40+
var date: Date? { isNil ? nil : Date() }
41+
42+
var body: some View {
43+
VStack {
44+
HStack {
45+
ReleaseDateView(date: date)
46+
.border(.red)
47+
}
48+
Spacer()
49+
Toggle(isOn: $isNil) {
50+
Text("Is Nil?")
51+
}
52+
}
53+
.animation(.default)
54+
.frame(width: 300, height: 100)
55+
.padding()
56+
}
57+
}

0 commit comments

Comments
 (0)