mirror of
https://github.com/NinjaCheetah/RIT-Dining.git
synced 2026-03-03 12:45:28 -05:00
Also fixed a bug where locations with overlapping close and open times would show "Closing Soon" for 30 minutes just to then switch to "Open" when it rolled over.
171 lines
7.7 KiB
Swift
171 lines
7.7 KiB
Swift
//
|
|
// FeedbackView.swift
|
|
// TigerDine
|
|
//
|
|
// Created by Campbell on 2/16/26.
|
|
//
|
|
|
|
import SwiftUI
|
|
import MessageUI
|
|
|
|
struct FeedbackView: View {
|
|
@Environment(\.dismiss) var dismiss
|
|
@Environment(\.openURL) private var openURL
|
|
|
|
@State private var showingMailView = false
|
|
@State private var mailResult: Result<MFMailComposeResult, Error>? = nil
|
|
|
|
var body: some View {
|
|
NavigationView {
|
|
ScrollView {
|
|
VStack(alignment: .leading, spacing: 12) {
|
|
HStack {
|
|
Image(systemName: "paperplane")
|
|
.resizable()
|
|
.scaledToFit()
|
|
.frame(width: 50, height: 50)
|
|
.foregroundStyle(Color.accentColor)
|
|
Text("Submit Feedback")
|
|
.fontWeight(.bold)
|
|
.font(.title)
|
|
}
|
|
Text("Did I break something? Oops.")
|
|
Text("Or maybe you just have a suggestion to make TigerDine even cooler. Either way, I'd love to hear your feedback! (Or maybe the hours for a location are off, in which case that feedback is RIT's to handle.)")
|
|
.foregroundStyle(.secondary)
|
|
Text("Incorrect Location Hours")
|
|
.padding(.top, 12)
|
|
Button(action: {
|
|
openURL(URL(string: "https://www.rit.edu/dining/locations")!)
|
|
}) {
|
|
HStack(alignment: .center) {
|
|
Image(systemName: "clock.badge.questionmark")
|
|
.resizable()
|
|
.scaledToFit()
|
|
.frame(width: 50, height: 50)
|
|
.foregroundStyle(Color.accentColor)
|
|
VStack(alignment: .leading) {
|
|
Text("Confirm Against the RIT Website")
|
|
.fontWeight(.bold)
|
|
Text("Check that the hours displayed in TigerDine match RIT's website.")
|
|
.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: "https://www.rit.edu/its/support")!)
|
|
}) {
|
|
HStack(alignment: .center) {
|
|
Image(systemName: "clock.badge.exclamationmark")
|
|
.resizable()
|
|
.scaledToFit()
|
|
.frame(width: 50, height: 50)
|
|
.foregroundStyle(Color.accentColor)
|
|
VStack(alignment: .leading) {
|
|
Text("Submit an ITS Ticket")
|
|
.fontWeight(.bold)
|
|
Text("If hours are also incorrect on RIT's website, submit a ticket to ITS.")
|
|
.foregroundStyle(.secondary)
|
|
.multilineTextAlignment(.leading)
|
|
}
|
|
Spacer()
|
|
Image(systemName: "chevron.forward")
|
|
}
|
|
.padding(.all, 6)
|
|
.background (
|
|
RoundedRectangle(cornerRadius: 8)
|
|
.fill(Color.secondary.opacity(0.1))
|
|
)
|
|
}
|
|
.buttonStyle(.plain)
|
|
Text("If the hours do not match between TigerDine and RIT's website, please contact me instead and I'll look into it.")
|
|
.foregroundStyle(.secondary)
|
|
.font(.caption)
|
|
Text("TigerDine Issues and Feedback")
|
|
.padding(.top, 12)
|
|
Button(action: {
|
|
openURL(URL(string: "https://github.com/NinjaCheetah/TigerDine/issues")!)
|
|
}) {
|
|
HStack(alignment: .center) {
|
|
Image(systemName: "ant.circle")
|
|
.resizable()
|
|
.scaledToFit()
|
|
.frame(width: 50, height: 50)
|
|
.foregroundStyle(Color.accentColor)
|
|
VStack(alignment: .leading) {
|
|
Text("Submit a GitHub Issue")
|
|
.fontWeight(.bold)
|
|
Text("Report a bug or suggest a feature on TigerDine's GitHub repository.")
|
|
.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: {
|
|
showingMailView = true
|
|
}) {
|
|
HStack(alignment: .center) {
|
|
Image(systemName: "envelope.circle")
|
|
.resizable()
|
|
.scaledToFit()
|
|
.frame(width: 50, height: 50)
|
|
.foregroundStyle(Color.accentColor)
|
|
VStack(alignment: .leading) {
|
|
Text("Send Me an Email")
|
|
.fontWeight(.bold)
|
|
Text("Not a GitHub user? Feel free to submit feedback via email.")
|
|
.foregroundStyle(.secondary)
|
|
.multilineTextAlignment(.leading)
|
|
}
|
|
Spacer()
|
|
Image(systemName: "chevron.forward")
|
|
}
|
|
.padding(.all, 6)
|
|
.background (
|
|
RoundedRectangle(cornerRadius: 8)
|
|
.fill(Color.secondary.opacity(0.1))
|
|
)
|
|
}
|
|
.buttonStyle(.plain)
|
|
.disabled(!MailView.canSendMail())
|
|
.sheet(isPresented: $showingMailView) {
|
|
MailView(result: $mailResult)
|
|
}
|
|
Text("Just don't spam my inbox, please and thank you.")
|
|
.foregroundStyle(.secondary)
|
|
.font(.caption)
|
|
}
|
|
.frame(maxWidth: .infinity)
|
|
.toolbar {
|
|
Button(action: {
|
|
dismiss()
|
|
}) {
|
|
Image(systemName: "xmark")
|
|
}
|
|
}
|
|
}
|
|
.padding(.horizontal, 16)
|
|
}
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
FeedbackView()
|
|
}
|