From 42af1fdc50224131e43205658a56584c31d39441 Mon Sep 17 00:00:00 2001 From: Rahul Narayanan Date: Fri, 20 Dec 2024 19:57:46 +0530 Subject: [PATCH] Move bridge to separate file --- .../project.pbxproj | 6 ++- .../CourseGradeCalculator.swift | 32 +--------------- .../CourseGradeCalculatorBridge.swift | 38 +++++++++++++++++++ 3 files changed, 44 insertions(+), 32 deletions(-) create mode 100644 CanvasPlusPlayground/Features/Grades/GradeCalculator/CourseGradeCalculatorBridge.swift diff --git a/CanvasPlusPlayground.xcodeproj/project.pbxproj b/CanvasPlusPlayground.xcodeproj/project.pbxproj index b144c3d..8071d25 100644 --- a/CanvasPlusPlayground.xcodeproj/project.pbxproj +++ b/CanvasPlusPlayground.xcodeproj/project.pbxproj @@ -91,6 +91,7 @@ B7AD54F52CD41D7900FB09BB /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7AD54EF2CD41D7900FB09BB /* Data.swift */; }; B7AD54F62CD41D7900FB09BB /* DeviceStat.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7AD54F02CD41D7900FB09BB /* DeviceStat.swift */; }; B7AD550C2CD4257B00FB09BB /* IntelligenceOnboardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7AD550B2CD4257400FB09BB /* IntelligenceOnboardingView.swift */; }; + B7D1365E2D15B63E0044A9E4 /* CourseGradeCalculatorBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7D1365D2D15B63E0044A9E4 /* CourseGradeCalculatorBridge.swift */; }; B7D95D772D07C3D3002AD955 /* ICSParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7D95D762D07C3D3002AD955 /* ICSParser.swift */; }; B7D95DB72D0A8D78002AD955 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7D95DB62D0A8D75002AD955 /* SettingsView.swift */; }; B7E59A0B2D1CFF8C001836FE /* GetAssignmentGroupsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7E59A0A2D1CFF8C001836FE /* GetAssignmentGroupsRequest.swift */; }; @@ -190,6 +191,7 @@ B7AD54F12CD41D7900FB09BB /* LLMEvaluator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LLMEvaluator.swift; sourceTree = ""; }; B7AD54F22CD41D7900FB09BB /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Models.swift; sourceTree = ""; }; B7AD550B2CD4257400FB09BB /* IntelligenceOnboardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntelligenceOnboardingView.swift; sourceTree = ""; }; + B7D1365D2D15B63E0044A9E4 /* CourseGradeCalculatorBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CourseGradeCalculatorBridge.swift; sourceTree = ""; }; B7D95D762D07C3D3002AD955 /* ICSParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ICSParser.swift; sourceTree = ""; }; B7D95DB62D0A8D75002AD955 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; B7E59A0A2D1CFF8C001836FE /* GetAssignmentGroupsRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GetAssignmentGroupsRequest.swift; sourceTree = ""; }; @@ -544,8 +546,9 @@ B7F950442D149C6E004BB470 /* GradeCalculator */ = { isa = PBXGroup; children = ( - B7F950422D149C5E004BB470 /* GradeCalculatorView.swift */, B7F950402D14928C004BB470 /* CourseGradeCalculator.swift */, + B7D1365D2D15B63E0044A9E4 /* CourseGradeCalculatorBridge.swift */, + B7F950422D149C5E004BB470 /* GradeCalculatorView.swift */, ); path = GradeCalculator; sourceTree = ""; @@ -714,6 +717,7 @@ 9B9C2E062C93F94C00E4B16B /* CourseAnnouncementDetailView.swift in Sources */, A3D161512D178615004055FB /* GetUserProfileRequest.swift in Sources */, A3D161492D169C23004055FB /* APIRequest+Storage.swift in Sources */, + B7D1365E2D15B63E0044A9E4 /* CourseGradeCalculatorBridge.swift in Sources */, 9B6663E32C9853BC0060990E /* HTMLTextView.swift in Sources */, B7AD550C2CD4257B00FB09BB /* IntelligenceOnboardingView.swift in Sources */, A3049B792D15E162002F3166 /* GetCourseRootFolder.swift in Sources */, diff --git a/CanvasPlusPlayground/Features/Grades/GradeCalculator/CourseGradeCalculator.swift b/CanvasPlusPlayground/Features/Grades/GradeCalculator/CourseGradeCalculator.swift index 434b444..3fede9e 100644 --- a/CanvasPlusPlayground/Features/Grades/GradeCalculator/CourseGradeCalculator.swift +++ b/CanvasPlusPlayground/Features/Grades/GradeCalculator/CourseGradeCalculator.swift @@ -5,37 +5,7 @@ // Created by Rahul on 12/19/24. // -import SwiftUI - -@Observable -class CourseGradeCalculatorBridge { - typealias GradeCalculatorAssignmentGroup = CourseGradeCalculator.GradeCalculatorAssignmentGroup - - private(set) var _calculator: CourseGradeCalculator - - var assignmentGroups: [GradeCalculatorAssignmentGroup] { - get { - _calculator.assignmentGroups - } - - set { - _calculator.assignmentGroups = newValue - } - } - - var finalGrade: String { - _calculator.finalGrade - } - - var expandedAssignmentGroups: [GradeCalculatorAssignmentGroup: Bool] = [:] - - init(from assignmentGroups: [AssignmentGroup]) { - _calculator = CourseGradeCalculator(from: assignmentGroups) - expandedAssignmentGroups = Dictionary( - uniqueKeysWithValues: _calculator.assignmentGroups.lazy.map { ($0, true) } - ) - } -} +import Foundation struct CourseGradeCalculator { struct GradeCalculatorAssignmentGroup: Identifiable, Hashable { diff --git a/CanvasPlusPlayground/Features/Grades/GradeCalculator/CourseGradeCalculatorBridge.swift b/CanvasPlusPlayground/Features/Grades/GradeCalculator/CourseGradeCalculatorBridge.swift new file mode 100644 index 0000000..353479f --- /dev/null +++ b/CanvasPlusPlayground/Features/Grades/GradeCalculator/CourseGradeCalculatorBridge.swift @@ -0,0 +1,38 @@ +// +// CourseGradeCalculatorBridge.swift +// CanvasPlusPlayground +// +// Created by Rahul on 12/20/24. +// + +import SwiftUI + +@Observable +class CourseGradeCalculatorBridge { + typealias GradeCalculatorAssignmentGroup = CourseGradeCalculator.GradeCalculatorAssignmentGroup + + private(set) var _calculator: CourseGradeCalculator + + var assignmentGroups: [GradeCalculatorAssignmentGroup] { + get { + _calculator.assignmentGroups + } + + set { + _calculator.assignmentGroups = newValue + } + } + + var finalGrade: String { + _calculator.finalGrade + } + + var expandedAssignmentGroups: [GradeCalculatorAssignmentGroup: Bool] = [:] + + init(from assignmentGroups: [AssignmentGroup]) { + _calculator = CourseGradeCalculator(from: assignmentGroups) + expandedAssignmentGroups = Dictionary( + uniqueKeysWithValues: _calculator.assignmentGroups.lazy.map { ($0, true) } + ) + } +}