Skip to content

Commit

Permalink
6 synchronization of lessons with the system calendar (#33)
Browse files Browse the repository at this point in the history
* Add base views for calendar export

* Add first working concept version of the export

* Begin rework of navigation structure

* Remove about section from settings

* Remove TabView for main navigation

* Add calendar export to onboarding

* Fix multiple UI bugs

* Add multiple improvements

* Add multiple improvements to error handling

* Add confirmation alert for calendar export

* Add error dialog for calendar export

* Fix Localization bug

* Add InfoPlist local

* Fix localiaztion

* Fix visual bug
  • Loading branch information
jonasrichardrichter authored Sep 27, 2022
1 parent 754b41d commit 991ee57
Show file tree
Hide file tree
Showing 18 changed files with 577 additions and 233 deletions.
48 changes: 39 additions & 9 deletions BA-Schedule.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,11 @@
objects = {

/* Begin PBXBuildFile section */
4100A29228E244DD0076CFC5 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4100A29428E244DD0076CFC5 /* InfoPlist.strings */; };
4108E52228B614960037BA44 /* NoCalendarPermissionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4108E52128B614960037BA44 /* NoCalendarPermissionView.swift */; };
4111ED0427B4451A00C7FF8D /* Binding+not.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4111ED0327B4451900C7FF8D /* Binding+not.swift */; };
4129F38C2798B81100A46155 /* Logger+CustomInit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4129F38B2798B81100A46155 /* Logger+CustomInit.swift */; };
4135B66628B414110008D573 /* ExportToCalendarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4135B66528B414110008D573 /* ExportToCalendarView.swift */; };
41407EED27A9BC9E00DBB55A /* ServiceWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41407EEC27A9BC9E00DBB55A /* ServiceWrapper.swift */; };
41407EEF27A9C31600DBB55A /* StudyDay+AppReviewDemoData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41407EEE27A9C31600DBB55A /* StudyDay+AppReviewDemoData.swift */; };
4153B45C28290495001E28E6 /* AdaptiveStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4153B45B28290495001E28E6 /* AdaptiveStack.swift */; };
Expand All @@ -18,7 +21,6 @@
416306B327A6A11800A92714 /* Lesson.swift in Sources */ = {isa = PBXBuildFile; fileRef = 416306B227A6A11800A92714 /* Lesson.swift */; };
416306B927A6BC3000A92714 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 416306BB27A6BC3000A92714 /* Localizable.strings */; };
416306BE27A6BCBE00A92714 /* ScheduleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 416306BD27A6BCBE00A92714 /* ScheduleView.swift */; };
416306C227A6BE0100A92714 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 416306C127A6BE0100A92714 /* SettingsView.swift */; };
416306C427A6BE4800A92714 /* OnboardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 416306C327A6BE4800A92714 /* OnboardingView.swift */; };
416306C627A6C25500A92714 /* Feature.swift in Sources */ = {isa = PBXBuildFile; fileRef = 416306C527A6C25500A92714 /* Feature.swift */; };
416306C827A6D67800A92714 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 416306C727A6D67700A92714 /* Settings.swift */; };
Expand All @@ -32,13 +34,18 @@
41A8BC3D2798B1FB0042DBB9 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 41A8BC3C2798B1FB0042DBB9 /* Assets.xcassets */; };
41A8BC402798B1FB0042DBB9 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 41A8BC3F2798B1FB0042DBB9 /* Preview Assets.xcassets */; };
41A8BC4B2798B7210042DBB9 /* Logging in Frameworks */ = {isa = PBXBuildFile; productRef = 41A8BC4A2798B7210042DBB9 /* Logging */; };
41C1556428B3D63F00977721 /* GrantCalendarPermissionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41C1556328B3D63F00977721 /* GrantCalendarPermissionView.swift */; };
41F1A5F928202ED50039F6D6 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 41F1A5F828202ED50039F6D6 /* Settings.bundle */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
4100A29328E244DD0076CFC5 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = "<group>"; };
4100A29528E244E10076CFC5 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
4108E52128B614960037BA44 /* NoCalendarPermissionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoCalendarPermissionView.swift; sourceTree = "<group>"; };
4111ED0327B4451900C7FF8D /* Binding+not.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Binding+not.swift"; sourceTree = "<group>"; };
4129F38B2798B81100A46155 /* Logger+CustomInit.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Logger+CustomInit.swift"; sourceTree = "<group>"; };
412FB47C27B57D8900660427 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
4135B66528B414110008D573 /* ExportToCalendarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportToCalendarView.swift; sourceTree = "<group>"; };
41407EEC27A9BC9E00DBB55A /* ServiceWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServiceWrapper.swift; sourceTree = "<group>"; };
41407EEE27A9C31600DBB55A /* StudyDay+AppReviewDemoData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StudyDay+AppReviewDemoData.swift"; sourceTree = "<group>"; };
4153B45B28290495001E28E6 /* AdaptiveStack.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveStack.swift; sourceTree = "<group>"; };
Expand All @@ -48,7 +55,6 @@
416306B227A6A11800A92714 /* Lesson.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Lesson.swift; sourceTree = "<group>"; };
416306BA27A6BC3000A92714 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
416306BD27A6BCBE00A92714 /* ScheduleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScheduleView.swift; sourceTree = "<group>"; };
416306C127A6BE0100A92714 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
416306C327A6BE4800A92714 /* OnboardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingView.swift; sourceTree = "<group>"; };
416306C527A6C25500A92714 /* Feature.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Feature.swift; sourceTree = "<group>"; };
416306C727A6D67700A92714 /* Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = "<group>"; };
Expand All @@ -62,6 +68,7 @@
41A8BC3A2798B1FA0042DBB9 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
41A8BC3C2798B1FB0042DBB9 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
41A8BC3F2798B1FB0042DBB9 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
41C1556328B3D63F00977721 /* GrantCalendarPermissionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GrantCalendarPermissionView.swift; sourceTree = "<group>"; };
41ED2F11281FB8A900FA12C8 /* CampusDualKit */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = CampusDualKit; path = Packages/CampusDualKit; sourceTree = "<group>"; };
41F1A5F828202ED50039F6D6 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = Settings.bundle; path = "BA-Schedule/Settings.bundle"; sourceTree = "<group>"; };
/* End PBXFileReference section */
Expand Down Expand Up @@ -93,12 +100,12 @@
41407EE727A9B8E400DBB55A /* Sources */ = {
isa = PBXGroup;
children = (
41407EEB27A9BC8E00DBB55A /* Services */,
41A8BC382798B1FA0042DBB9 /* BA_ScheduleApp.swift */,
41A8BC3A2798B1FA0042DBB9 /* ContentView.swift */,
41A8BC482798B6EE0042DBB9 /* Extensions */,
41407EEB27A9BC8E00DBB55A /* Services */,
41A8BC472798B6D60042DBB9 /* UI Elements */,
41A8BC462798B6CD0042DBB9 /* Views */,
41A8BC382798B1FA0042DBB9 /* BA_ScheduleApp.swift */,
41A8BC3A2798B1FA0042DBB9 /* ContentView.swift */,
);
path = Sources;
sourceTree = "<group>";
Expand Down Expand Up @@ -134,7 +141,6 @@
isa = PBXGroup;
children = (
41A437F227A6FEE700D0D43B /* AboutView.swift */,
416306C127A6BE0100A92714 /* SettingsView.swift */,
416306C727A6D67700A92714 /* Settings.swift */,
);
path = Settings;
Expand Down Expand Up @@ -179,9 +185,10 @@
isa = PBXGroup;
children = (
419408C3281FD32100C60B9F /* BA-Schedule.entitlements */,
4100A29428E244DD0076CFC5 /* InfoPlist.strings */,
412FB47C27B57D8900660427 /* Info.plist */,
41407EE727A9B8E400DBB55A /* Sources */,
41407EE627A9B8DA00DBB55A /* Resources */,
41407EE727A9B8E400DBB55A /* Sources */,
);
path = "BA-Schedule";
sourceTree = "<group>";
Expand All @@ -197,10 +204,11 @@
41A8BC462798B6CD0042DBB9 /* Views */ = {
isa = PBXGroup;
children = (
41C1556228B3D62A00977721 /* CalendarExport */,
4153B45A28290485001E28E6 /* General */,
416306C027A6BDF300A92714 /* Onboarding */,
416306BF27A6BDEE00A92714 /* Settings */,
416306BC27A6BCAA00A92714 /* Schedule */,
416306BF27A6BDEE00A92714 /* Settings */,
);
path = Views;
sourceTree = "<group>";
Expand All @@ -225,6 +233,16 @@
path = Extensions;
sourceTree = "<group>";
};
41C1556228B3D62A00977721 /* CalendarExport */ = {
isa = PBXGroup;
children = (
41C1556328B3D63F00977721 /* GrantCalendarPermissionView.swift */,
4135B66528B414110008D573 /* ExportToCalendarView.swift */,
4108E52128B614960037BA44 /* NoCalendarPermissionView.swift */,
);
path = CalendarExport;
sourceTree = "<group>";
};
41ED2F10281FB8A900FA12C8 /* Packages */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -306,6 +324,7 @@
41A8BC402798B1FB0042DBB9 /* Preview Assets.xcassets in Resources */,
416306B927A6BC3000A92714 /* Localizable.strings in Resources */,
41A8BC3D2798B1FB0042DBB9 /* Assets.xcassets in Resources */,
4100A29228E244DD0076CFC5 /* InfoPlist.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -340,17 +359,19 @@
416306BE27A6BCBE00A92714 /* ScheduleView.swift in Sources */,
41A8BC3B2798B1FA0042DBB9 /* ContentView.swift in Sources */,
41A8BC392798B1FA0042DBB9 /* BA_ScheduleApp.swift in Sources */,
416306C227A6BE0100A92714 /* SettingsView.swift in Sources */,
4135B66628B414110008D573 /* ExportToCalendarView.swift in Sources */,
41407EEF27A9C31600DBB55A /* StudyDay+AppReviewDemoData.swift in Sources */,
4154BA26281969CA00907AD5 /* ScheduleListView.swift in Sources */,
41A437F327A6FEE700D0D43B /* AboutView.swift in Sources */,
415FEC0B281FE62000D74DE9 /* ErrorView.swift in Sources */,
416306C627A6C25500A92714 /* Feature.swift in Sources */,
416306CD27A6DC7100A92714 /* URL+BA-Schedule.swift in Sources */,
41C1556428B3D63F00977721 /* GrantCalendarPermissionView.swift in Sources */,
4129F38C2798B81100A46155 /* Logger+CustomInit.swift in Sources */,
41407EED27A9BC9E00DBB55A /* ServiceWrapper.swift in Sources */,
416306C827A6D67800A92714 /* Settings.swift in Sources */,
4111ED0427B4451A00C7FF8D /* Binding+not.swift in Sources */,
4108E52228B614960037BA44 /* NoCalendarPermissionView.swift in Sources */,
4153B45C28290495001E28E6 /* AdaptiveStack.swift in Sources */,
4154BA2A2819786600907AD5 /* ScheduleAppError.swift in Sources */,
416306CF27A6DD9600A92714 /* LoginView.swift in Sources */,
Expand All @@ -362,6 +383,15 @@
/* End PBXSourcesBuildPhase section */

/* Begin PBXVariantGroup section */
4100A29428E244DD0076CFC5 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
4100A29328E244DD0076CFC5 /* de */,
4100A29528E244E10076CFC5 /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
416306BB27A6BC3000A92714 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
Expand Down
2 changes: 2 additions & 0 deletions BA-Schedule/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSCalendarsUsageDescription</key>
<string>BA-Schedule benötigt Kalenderzugriff um deinen Stundenplan zu exportieren.</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>UIApplicationSceneManifest</key>
Expand Down
24 changes: 23 additions & 1 deletion BA-Schedule/Resources/de.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
"FEATURE_1_DESCR" = "Dein Stundenplan ganz einfach, ordentlich und mobil verfügbar.";
"FEATURE_2_TITLE" = "Auslegung auf Datenschutz";
"FEATURE_2_DESCR" = "Die App wurde mit einem Fokus auf Datenschutz entwickelt.";
"FEATURE_CALENDAR_EXPORT" = "Einfacher Export des Stundenplan";
"FEATURE_CALENDAR_EXPORT_DESCR" = "Exportiere deinen Studenplan mit einem Klick in deinen eigenen Kalender.";

// MARK: - Settings
"SETTINGS.GITHUB-LINK" = "Zum Quelltext auf GitHub";
Expand All @@ -39,10 +41,14 @@
"SETTINGS.MOREFUNCTIONS.SHOWINSTRUCTUR" = "Lehrer:in anzeigen";
"SETTINGS.MOREFUNCTIONS.SHOWREMARKS" = "Bemerkungen anzeigen";
"SETTINGS.IDEAS" = "Ideen für weitere Funktionen?";
"SETTINGS.IDEAS.BUTTON" = "Vorschlag per E-Mail senden";
"SETTINGS.IDEAS.BUTTON" = "Funktionsvorschlag per E-Mail senden";

// MARK: - About
"ABOUT.THANKSTO" = "Danke für die Mithilfe an";

// MARK: - Errors
"ALERT_BUTTON_CANCEL" = "Abbrechen";
"ERROR_ALERT" = "Es ist ein Fehler aufgetreten.";

// MARK: - General
"GENERAL.UNKNOWN" = "Unbekannt";
Expand All @@ -52,3 +58,19 @@
"GENERAL.TRYAGAIN" = "Erneut versuchen";
"GENERAL.NOCONNECTION.TITLE" = "Keine Netzwerkverbindung";
"GENERAL.NOCONNECTION.MESSAGE" = "Bitte überprüfe deine Netzwerkverbindung und versuche es später erneut.";
"GENERAL_MENU_MORE" = "Weitere Inhalte";
"GENERAL_CLOSE" = "Schließen";
"GENERAL_FINISH" = "Fertig";



// MARK: - Calendar Export
"PERMISSON.CALENDAR.TITLE" = "Kalendarzugriff benötigt";
"PERMISSON.CALENDAR.DESCR" = "Um deinen Stundenplan in deinen Kalendar zu übertragen ist deine Zustimmung erforderlich. Der Stundenplan wird in einem neuen Kalendar angelegt. Es werden **keine** anderen Termine ausgelesen.";
"ERROR_NO_CALENDAR_ACCESS" = "Kalendarzugriff nicht möglich";
"ERROR_NO_CALENDAR_ACCESS_DESCR" = "Anscheinend wurden der App nicht die ausreichenden Berechtigungen gestattet. Um den Zugriff auf den Kalendar zu erlauben, wechsle bitte in die Einstellungen.";
"ERROR_NO_CALENDAR_ACCESS_TO_SETTINGS" = "Zu den Einstellungen";
"CALENDAR_EXPORT_SUCCESS" = "Der Kalendar wurde erfolgreich exportiert";
"CALENDAR_EXPORT_TITLE" = "Studenplan in den Kalendar exportieren";
"CALENDAR_EXPORT_BUTTON" = "Exportieren";
"CALENDAR_EXPORT_MENU" = "Stundenplan exportieren";
22 changes: 21 additions & 1 deletion BA-Schedule/Resources/en.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
"FEATURE_1_DESCR" = "Your schedule is easy, neat and available on the go.";
"FEATURE_2_TITLE" = "Focused on privacy";
"FEATURE_2_DESCR" = "The app was developed with privacy in mind.";
"FEATURE_CALENDAR_EXPORT" = "Easy schedule export";
"FEATURE_CALENDAR_EXPORT_DESCR" = "Export your schedule to your personal calendar.";

// MARK: - Settings
"SETTINGS.GITHUB-LINK" = "See the source code on GitHub";
Expand All @@ -39,10 +41,14 @@
"SETTINGS.MOREFUNCTIONS.SHOWINSTRUCTUR" = "Show instructor";
"SETTINGS.MOREFUNCTIONS.SHOWREMARKS" = "Show remarks";
"SETTINGS.IDEAS" = "Ideas for more features?";
"SETTINGS.IDEAS.BUTTON" = "Send proposal via email";
"SETTINGS.IDEAS.BUTTON" = "Send feature proposal via email";

// MARK: - About
"ABOUT.THANKSTO" = "Thanks for helping out";

// MARK: - Errors
"ALERT_BUTTON_CANCEL" = "Cancel";
"ERROR_ALERT" = "An error happend";

// MARK: - General
"GENERAL.UNKNOWN" = "Unknown";
Expand All @@ -52,3 +58,17 @@
"GENERAL.CONTINUE" = "Continue";
"GENERAL.NOCONNECTION.TITLE" = "No network connection";
"GENERAL.NOCONNECTION.MESSAGE" = "Please check your network connection and try again later.";
"GENERAL_MENU_MORE" = "More content";
"GENERAL_CLOSE" = "Close";
"GENERAL_FINISH" = "Finish";

// MARK: - Calendar export
"PERMISSON.CALENDAR.TITLE" = "Calendar access required";
"PERMISSON.CALENDAR.DESCR" = "In order to transfer your timetable to your calendar, your consent is required. The timetable is created in a new calendar. **No** other dates will be read out.";
"ERROR_NO_CALENDAR_ACCESS" = "Calendar access not possible";
"ERROR_NO_CALENDAR_ACCESS_DESCR" = "Apparently, the app was not allowed sufficient permissions. To allow access to the calendar, please switch to the settings.";
"ERROR_NO_CALENDAR_ACCESS_TO_SETTINGS" = "To the settings";
"CALENDAR_EXPORT_SUCCESS" = "The calendar export was successfull";
"CALENDAR_EXPORT_TITLE" = "Export schedule into your calendar";
"CALENDAR_EXPORT_BUTTON" = "Export";
"CALENDAR_EXPORT_MENU" = "Export schedule";
17 changes: 1 addition & 16 deletions BA-Schedule/Sources/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,8 @@ struct ContentView: View {

// MARK: - View
var body: some View {
TabView {
// MARK: - Schedule
ScheduleView()
.tabItem {
Image(systemName: "calendar.day.timeline.leading")
Text("SCHEDULE")
}
.navigationViewStyle(.stack)

// MARK: - Settings
SettingsView()
.tabItem {
Image(systemName: "gear")
Text("SETTINGS")
}
.navigationViewStyle(.stack)
}
ScheduleView()
// MARK: - Onboarding Sheet
.sheet(isPresented: self.$settings.isOnboarded.not, content: {
OnboardingView()
Expand Down
2 changes: 1 addition & 1 deletion BA-Schedule/Sources/Extensions/URL+BA-Schedule.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import Foundation

internal extension URL {
enum BaSchedule {
static let github = URL(string: "https://github.com/jns-rchtr/BA-Schedule/")!
static let github = URL(string: "https://github.com/jonasrichardrichter/BA-Schedule/")!
static let informationHash = URL(string: "blob/main/LOGIN_INFORMATION.md", relativeTo: Self.github)!
}
}
2 changes: 2 additions & 0 deletions BA-Schedule/Sources/UI Elements/ErrorView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import SwiftUI

struct ErrorView: View {
public var systemName: String
public var color: Color? = .primary
public var title: LocalizedStringKey
public var message: LocalizedStringKey

Expand All @@ -17,6 +18,7 @@ struct ErrorView: View {
Image(systemName: systemName)
.font(.system(size: 46))
.symbolRenderingMode(.hierarchical)
.foregroundColor(color)
.padding()
Text(title)
.font(.headline)
Expand Down
5 changes: 4 additions & 1 deletion BA-Schedule/Sources/UI Elements/Lesson.swift
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,10 @@ struct Lesson: View {
Text(lesson.instructor)
}
}
if (!self.lesson.remarks.isEmpty && self.settings.showRemarks) {
if (!self.lesson.remarks.isEmpty) {
if self.sizeClass == .regular {
Text("")
}
HStack {
Image(systemName: "info.circle")
Text(lesson.remarks)
Expand Down
Loading

0 comments on commit 991ee57

Please sign in to comment.