diff --git a/Project SF.xcodeproj/project.pbxproj b/Project SF.xcodeproj/project.pbxproj index 631f192..d3a4a94 100644 --- a/Project SF.xcodeproj/project.pbxproj +++ b/Project SF.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ 30132FF024CA78E000CB6683 /* CompetitionStruct.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30132FEF24CA78E000CB6683 /* CompetitionStruct.swift */; }; - 30132FF224CAB48700CB6683 /* CompetitionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30132FF124CAB48700CB6683 /* CompetitionsController.swift */; }; 3019CD9924BC9792002564AD /* PlaceBadgeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3019CD9824BC9792002564AD /* PlaceBadgeView.swift */; }; 30251C1924BFC1A50058D6D2 /* CompetitorDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30251C1824BFC1A50058D6D2 /* CompetitorDetail.swift */; }; 30251C1B24BFC1B10058D6D2 /* CompetitorCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30251C1A24BFC1B10058D6D2 /* CompetitorCell.swift */; }; @@ -91,6 +90,8 @@ 9CCFDD2624B9753F00162B0F /* Main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CCFDD2524B9753F00162B0F /* Main.swift */; }; 9CCFDD2824B9758A00162B0F /* TestApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CCFDD2724B9758A00162B0F /* TestApp.swift */; }; 9CD7F11E24B89C5000DDAD8C /* ProjectSFTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CD7F11D24B89C5000DDAD8C /* ProjectSFTests.swift */; }; + 9CD90D9724C99C4A00020288 /* FriendsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CD90D9624C99C4A00020288 /* FriendsManager.swift */; }; + 9CD90D9F24CACF7300020288 /* CompetitionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CD90D9E24CACF7300020288 /* CompetitionsController.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -105,7 +106,6 @@ /* Begin PBXFileReference section */ 30132FEF24CA78E000CB6683 /* CompetitionStruct.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompetitionStruct.swift; sourceTree = ""; }; - 30132FF124CAB48700CB6683 /* CompetitionsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompetitionsController.swift; sourceTree = ""; }; 3019CD9824BC9792002564AD /* PlaceBadgeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaceBadgeView.swift; sourceTree = ""; }; 30251C1824BFC1A50058D6D2 /* CompetitorDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompetitorDetail.swift; sourceTree = ""; }; 30251C1A24BFC1B10058D6D2 /* CompetitorCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompetitorCell.swift; sourceTree = ""; }; @@ -196,6 +196,8 @@ 9CD7F11B24B89C5000DDAD8C /* Project SFTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Project SFTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 9CD7F11D24B89C5000DDAD8C /* ProjectSFTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProjectSFTests.swift; sourceTree = ""; }; 9CD7F11F24B89C5000DDAD8C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9CD90D9624C99C4A00020288 /* FriendsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendsManager.swift; sourceTree = ""; }; + 9CD90D9E24CACF7300020288 /* CompetitionsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompetitionsController.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -297,7 +299,7 @@ 30132FEF24CA78E000CB6683 /* CompetitionStruct.swift */, 9C338BD824BAD0D3003E5048 /* CompetitionRecord.swift */, 9C338BD424BAC4F4003E5048 /* CompetitionsManager.swift */, - 30132FF124CAB48700CB6683 /* CompetitionsController.swift */, + 9CD90D9E24CACF7300020288 /* CompetitionsController.swift */, ); path = Competitions; sourceTree = ""; @@ -522,6 +524,7 @@ 30ABC14324C5684B0060825B /* User */, 304F752D24CAB8D1005D46BA /* Friends */, 30ABC14124C567DF0060825B /* Competitions */, + 9CD90D9524C99C3C00020288 /* Friends */, 30ABC14424C568A10060825B /* Scoring */, 30ABC14224C568210060825B /* Invitations */, 9C6C74B424BBE56800C657B0 /* HealthKit */, @@ -564,6 +567,14 @@ path = "Project SFTests"; sourceTree = ""; }; + 9CD90D9524C99C3C00020288 /* Friends */ = { + isa = PBXGroup; + children = ( + 9CD90D9624C99C4A00020288 /* FriendsManager.swift */, + ); + path = Friends; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -711,6 +722,7 @@ 30EAB9F924C29B9D005326C8 /* AccentSettings.swift in Sources */, 30BFC8DF24B7637F00DAC6D9 /* VisualEffectView.swift in Sources */, 9CCFDD1D24B971D600162B0F /* UserRecord.swift in Sources */, + 9CD90D9F24CACF7300020288 /* CompetitionsController.swift in Sources */, 9C6C74B624BBE57B00C657B0 /* FriendStruct.swift in Sources */, 9CCFDD1D24B971D600162B0F /* UserRecord.swift in Sources */, 9C2445D824BC009F00D8F4FC /* RoundedNavigationButton.swift in Sources */, @@ -743,6 +755,7 @@ 30251C1B24BFC1B10058D6D2 /* CompetitorCell.swift in Sources */, 30CCF30724BED9EA00103C1E /* ActivityOverview.swift in Sources */, 30D321BA24BB65D5009CD9D0 /* NotificationSettings.swift in Sources */, + 9CD90D9724C99C4A00020288 /* FriendsManager.swift in Sources */, 30251C1E24BFE1D50058D6D2 /* PointsGraph.swift in Sources */, 30BFC8E724B8041C00DAC6D9 /* ActivityRingsView.swift in Sources */, 9C2445DC24BC714100D8F4FC /* Invitation.swift in Sources */, @@ -760,7 +773,6 @@ 3067713124BDE3950085F152 /* FriendDetailView.swift in Sources */, 30D321BB24BB65D5009CD9D0 /* PermissionSettings.swift in Sources */, 304F753124CAC9BF005D46BA /* FriendsManager.swift in Sources */, - 30132FF224CAB48700CB6683 /* CompetitionsController.swift in Sources */, 3050123624C0887D00E39019 /* Int+ConvertFromRangeToRange copy.swift in Sources */, 30278E9324BC553A00E87E80 /* CompetitionDetail.swift in Sources */, 30D321B824BB65D5009CD9D0 /* SettingsView.swift in Sources */, diff --git a/Project SF/Logic/Friends/FriendsManager.swift b/Project SF/Logic/Friends/FriendsManager.swift index f450ee5..ba6a302 100644 --- a/Project SF/Logic/Friends/FriendsManager.swift +++ b/Project SF/Logic/Friends/FriendsManager.swift @@ -13,11 +13,13 @@ class FriendsManager { private let container: CKContainer + // MARK: Init + init(container: CKContainer = .appDefault) { self.container = container } - // MARK: Friend Discovery (should be moved out of this class) + // MARK: Methods /// Requests permission from the user to discover their contacts. /// - Parameter handler: The result handler. Not guaranteed to be executed on the main thread.