RIT-Dining/RIT Dining/Views/DonationView.swift
NinjaCheetah 2c607553ac
Added donation view
It seems reasonable to ask for some money here or there, since my Apple Developer Program membership was quite expensive just for this app
2025-09-17 22:38:09 -04:00

110 lines
4.3 KiB
Swift

//
// DonationView.swift
// RIT Dining
//
// Created by Campbell on 9/17/25.
//
import SwiftUI
struct DonationView: View {
@Environment(\.dismiss) var dismiss
@Environment(\.openURL) private var openURL
@State private var symbolDrawn: Bool = true
var body: some View {
NavigationView {
VStack(alignment: .center, spacing: 12) {
HStack {
if #available(iOS 26.0, *) {
Image(systemName: "heart.fill")
.foregroundStyle(.red)
.symbolEffect(.drawOn, isActive: symbolDrawn)
.onAppear {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.75) {
symbolDrawn = false
}
}
} else {
Image(systemName: "heart.fill")
.foregroundStyle(.red)
}
Text("Donate")
.fontWeight(.bold)
}
.font(.title)
Text("The RIT Dining app is free and open source software!")
.fontWeight(.bold)
.multilineTextAlignment(.center)
Text("However, the Apple Developer Program is expensive, and I paid $106.19 pretty much just to distribute this app and nothing else. If you can, I'd appreciate it if you wouldn't mind tossing a coin or two my way to help and make that expense a little less painful.")
.multilineTextAlignment(.center)
Text("No pressure though.")
.foregroundStyle(.secondary)
Button(action: {
openURL(URL(string: "https://ko-fi.com/ninjacheetah")!)
}) {
HStack(alignment: .center) {
Image("kofiLogo")
.resizable()
.frame(width: 50, height: 50)
.clipShape(RoundedRectangle(cornerRadius: 10))
VStack(alignment: .leading) {
Text("Tip Me on Ko-fi")
.fontWeight(.bold)
Text("Chip in as much or as little as you'd like!")
.foregroundStyle(.secondary)
.multilineTextAlignment(.leading)
}
Spacer()
Image(systemName: "chevron.forward")
}
.padding(.all, 6)
.background (
RoundedRectangle(cornerRadius: 8)
.fill(Color.secondary.opacity(0.1))
)
}
.buttonStyle(.plain)
Button(action: {
openURL(URL(string: "paypal.me/NinjaCheetahX")!)
}) {
HStack(alignment: .center) {
Image("paypalLogo")
.resizable()
.frame(width: 50, height: 50)
.clipShape(RoundedRectangle(cornerRadius: 10))
VStack(alignment: .leading) {
Text("Send Me Money Directly")
.fontWeight(.bold)
Text("I have nothing specific to say here!")
.foregroundStyle(.secondary)
.multilineTextAlignment(.leading)
}
Spacer()
Image(systemName: "chevron.forward")
}
.padding(.all, 6)
.background (
RoundedRectangle(cornerRadius: 8)
.fill(Color.secondary.opacity(0.1))
)
}
.buttonStyle(.plain)
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.toolbar {
Button(action: {
dismiss()
}) {
Image(systemName: "xmark")
}
}
}
.padding(.horizontal, 10)
}
}
#Preview {
DonationView()
}