diff --git a/Vault/Sources/VaultSettings/OpenSourceStrings.swift b/Vault/Sources/VaultSettings/OpenSourceStrings.swift index a784ebb1..44df4454 100644 --- a/Vault/Sources/VaultSettings/OpenSourceStrings.swift +++ b/Vault/Sources/VaultSettings/OpenSourceStrings.swift @@ -17,5 +17,5 @@ public enum OpenSourceStrings { localized(key: "openSource.aboutLink") } - public static let openSourceLink = URL(string: "https://github.com/bradleymackey/vault-ios")! + public static let openSourceLink = URL(string: "https://github.com/badbundle/vault-ios")! } diff --git a/Vault/Sources/VaultiOS/Views/Settings/VaultAboutView.swift b/Vault/Sources/VaultiOS/Views/Settings/VaultAboutView.swift index a7d5b02e..d59e8a1c 100644 --- a/Vault/Sources/VaultiOS/Views/Settings/VaultAboutView.swift +++ b/Vault/Sources/VaultiOS/Views/Settings/VaultAboutView.swift @@ -5,9 +5,11 @@ import VaultSettings struct VaultAboutView: View { @State private var viewModel: SettingsViewModel + private let appVersionText: String - init(viewModel: SettingsViewModel) { + init(viewModel: SettingsViewModel, appVersionText: String = Bundle.main.vaultAboutVersionText) { self.viewModel = viewModel + self.appVersionText = appVersionText } var body: some View { @@ -100,9 +102,12 @@ struct VaultAboutView: View { Image("bad-bundle-logo", bundle: VaultFeedAssets.bundle) .resizable(resizingMode: .stretch) .scaledToFit() - .frame(height: 30) + .frame(height: 21.6) Text("free and open since 2024 ✌️") - .font(.caption2.bold()) + .font(.caption2) + Text(appVersionText) + .font(.caption2) + .padding(.top, 12) } .padding(.top, 24) .containerRelativeFrame(.horizontal) @@ -111,3 +116,21 @@ struct VaultAboutView: View { } } } + +extension Bundle { + fileprivate var vaultAboutVersionText: String { + let marketingVersion = object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String + let buildNumber = object(forInfoDictionaryKey: "CFBundleVersion") as? String + + switch (marketingVersion, buildNumber) { + case let (.some(marketingVersion), .some(buildNumber)): + return "Version \(marketingVersion) (Build \(buildNumber))" + case let (.some(marketingVersion), .none): + return "Version \(marketingVersion)" + case let (.none, .some(buildNumber)): + return "Build \(buildNumber)" + case (.none, .none): + return "Version unavailable" + } + } +} diff --git a/Vault/Tests/VaultiOSTests/VaultAboutViewSnapshotTests.swift b/Vault/Tests/VaultiOSTests/VaultAboutViewSnapshotTests.swift index 8bee1bb3..d5a2dc24 100644 --- a/Vault/Tests/VaultiOSTests/VaultAboutViewSnapshotTests.swift +++ b/Vault/Tests/VaultiOSTests/VaultAboutViewSnapshotTests.swift @@ -7,8 +7,11 @@ import Testing struct VaultAboutViewSnapshotTests { @Test func layout() { - let sut = VaultAboutView(viewModel: .init()) - .framedForTest(height: 1200) + let sut = VaultAboutView( + viewModel: .init(), + appVersionText: "Version 2.0 (Build 100001)", + ) + .framedForTest(height: 1200) assertSnapshot(of: sut, as: .image) } diff --git a/Vault/Tests/VaultiOSTests/__Snapshots__/VaultAboutViewSnapshotTests/layout.1.png b/Vault/Tests/VaultiOSTests/__Snapshots__/VaultAboutViewSnapshotTests/layout.1.png index 7f95f755..b5b5c0da 100644 Binary files a/Vault/Tests/VaultiOSTests/__Snapshots__/VaultAboutViewSnapshotTests/layout.1.png and b/Vault/Tests/VaultiOSTests/__Snapshots__/VaultAboutViewSnapshotTests/layout.1.png differ