diff --git a/Xcodes/Frontend/About/AboutView.swift b/Xcodes/Frontend/About/AboutView.swift index 4967e2ea..fb048daa 100644 --- a/Xcodes/Frontend/About/AboutView.swift +++ b/Xcodes/Frontend/About/AboutView.swift @@ -45,9 +45,18 @@ struct AboutView: View { } .buttonStyle(LinkButtonStyle()) } - - Text(Bundle.main.humanReadableCopyright!) - .font(.footnote) + HStack { + Text(Bundle.main.humanReadableCopyright!) + .font(.footnote) + Button(action: { + openURL(URL(string: "https://opencollective.com/xcodesapp")!) + }) { + HStack { + Image(systemName: "heart.circle") + Text("SponsorXcodes") + } + } + } } } .padding() diff --git a/Xcodes/Frontend/XcodeList/BottomStatusBar.swift b/Xcodes/Frontend/XcodeList/BottomStatusBar.swift index cd38c3b6..062b0dce 100644 --- a/Xcodes/Frontend/XcodeList/BottomStatusBar.swift +++ b/Xcodes/Frontend/XcodeList/BottomStatusBar.swift @@ -11,6 +11,7 @@ import SwiftUI struct BottomStatusModifier: ViewModifier { @EnvironmentObject var appState: AppState + @SwiftUI.Environment(\.openURL) var openURL: OpenURLAction func body(content: Content) -> some View { VStack(spacing: 0) { @@ -21,6 +22,14 @@ struct BottomStatusModifier: ViewModifier { Text(appState.bottomStatusBarMessage) .font(.subheadline) Spacer() + Button(action: { + openURL(URL(string: "https://opencollective.com/xcodesapp")!) + }) { + HStack { + Image(systemName: "heart.circle") + Text("SponsorXcodes") + } + } Text(Bundle.main.shortVersion!) .font(.subheadline) } diff --git a/Xcodes/Resources/Localizable.xcstrings b/Xcodes/Resources/Localizable.xcstrings index 1b0fa25b..599d694c 100644 --- a/Xcodes/Resources/Localizable.xcstrings +++ b/Xcodes/Resources/Localizable.xcstrings @@ -17251,6 +17251,9 @@ } } }, + "SponsorXcodes" : { + "extractionState" : "manual" + }, "StopInstallation" : { "localizations" : { "ca" : {