diff --git a/Kickstarter.xcodeproj/project.pbxproj b/Kickstarter.xcodeproj/project.pbxproj index c71aca86ba..b9044d0036 100644 --- a/Kickstarter.xcodeproj/project.pbxproj +++ b/Kickstarter.xcodeproj/project.pbxproj @@ -246,7 +246,6 @@ 1937A71F28C94FFC00DD732D /* SettingsFormFieldView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7790DF882200D3BD005DBB11 /* SettingsFormFieldView.xib */; }; 1937A72328C9570A00DD732D /* ErroredBackingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1937A72228C9570900DD732D /* ErroredBackingView.swift */; }; 1937A72628C959DD00DD732D /* FundingGraphViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7ED205B1E83240D00BFFA01 /* FundingGraphViewTests.swift */; }; - 193C7FB629DA74990023B95E /* GraphUserMemberStatusTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 193C7FB429DA73D90023B95E /* GraphUserMemberStatusTests.swift */; }; 194154CE28D8ED69004648C8 /* CreatePaymentSourceSetupIntentInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 194154CD28D8ED69004648C8 /* CreatePaymentSourceSetupIntentInput.swift */; }; 194154D128D8FBAA004648C8 /* CreatePaymentSourceSetupIntentClientSecret+Constructor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 194154CF28D8F2DE004648C8 /* CreatePaymentSourceSetupIntentClientSecret+Constructor.swift */; }; 194154D328D928C9004648C8 /* CreatePaymentSourceSetupIntentInputTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 194154D228D928C9004648C8 /* CreatePaymentSourceSetupIntentInputTests.swift */; }; @@ -276,9 +275,6 @@ 19BF226128D10497007F4197 /* FirebaseAnalytics in Frameworks */ = {isa = PBXBuildFile; productRef = 19BF226028D10497007F4197 /* FirebaseAnalytics */; }; 19BF226328D10497007F4197 /* FirebaseCrashlytics in Frameworks */ = {isa = PBXBuildFile; productRef = 19BF226228D10497007F4197 /* FirebaseCrashlytics */; }; 19BF226528D10497007F4197 /* FirebasePerformance in Frameworks */ = {isa = PBXBuildFile; productRef = 19BF226428D10497007F4197 /* FirebasePerformance */; }; - 19C1CE3329DA43C100899A17 /* FetchUserMemberStatus.graphql in Sources */ = {isa = PBXBuildFile; fileRef = 19C1CE3229DA43C100899A17 /* FetchUserMemberStatus.graphql */; }; - 19C1CE3529DA44C600899A17 /* GraphUserMemberStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19C1CE3429DA44C600899A17 /* GraphUserMemberStatus.swift */; }; - 19C1CE3729DA478000899A17 /* UserMemberStatusFragment.graphql in Resources */ = {isa = PBXBuildFile; fileRef = 19C1CE3629DA478000899A17 /* UserMemberStatusFragment.graphql */; }; 19C8E56929A9249D007C3504 /* TextInputFieldModifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19C8E56829A9249D007C3504 /* TextInputFieldModifiers.swift */; }; 19D988482979CA4E00A5EE61 /* BrazePushEnvelope.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19D988472979CA4E00A5EE61 /* BrazePushEnvelope.swift */; }; 19E9F01729C0F9A20002AD69 /* MockAppTrackingTransparency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6008633E29BF750700B87B39 /* MockAppTrackingTransparency.swift */; }; @@ -1858,16 +1854,12 @@ 192016C728B6731A0046919B /* PledgePaymentMethodsViewControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PledgePaymentMethodsViewControllerTests.swift; sourceTree = ""; }; 1923770928DA2AE300F68635 /* Stripe+PaymentMethod.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Stripe+PaymentMethod.swift"; sourceTree = ""; }; 1937A72228C9570900DD732D /* ErroredBackingView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ErroredBackingView.swift; sourceTree = ""; }; - 193C7FB429DA73D90023B95E /* GraphUserMemberStatusTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GraphUserMemberStatusTests.swift; sourceTree = ""; }; 194154CD28D8ED69004648C8 /* CreatePaymentSourceSetupIntentInput.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreatePaymentSourceSetupIntentInput.swift; sourceTree = ""; }; 194154CF28D8F2DE004648C8 /* CreatePaymentSourceSetupIntentClientSecret+Constructor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CreatePaymentSourceSetupIntentClientSecret+Constructor.swift"; sourceTree = ""; }; 194154D228D928C9004648C8 /* CreatePaymentSourceSetupIntentInputTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreatePaymentSourceSetupIntentInputTests.swift; sourceTree = ""; }; 194154D428D92A26004648C8 /* CreatePaymentSourceSetupIntentClientSecret+ConstructorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CreatePaymentSourceSetupIntentClientSecret+ConstructorTests.swift"; sourceTree = ""; }; 194520C4288859A600CA9B88 /* PaymentCardTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentCardTextField.swift; sourceTree = ""; }; 19A97CF128C7E2D30031B857 /* CategoryPillCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CategoryPillCell.swift; sourceTree = ""; }; - 19C1CE3229DA43C100899A17 /* FetchUserMemberStatus.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = FetchUserMemberStatus.graphql; sourceTree = ""; }; - 19C1CE3429DA44C600899A17 /* GraphUserMemberStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GraphUserMemberStatus.swift; sourceTree = ""; }; - 19C1CE3629DA478000899A17 /* UserMemberStatusFragment.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = UserMemberStatusFragment.graphql; sourceTree = ""; }; 19C8E56829A9249D007C3504 /* TextInputFieldModifiers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextInputFieldModifiers.swift; sourceTree = ""; }; 19D988472979CA4E00A5EE61 /* BrazePushEnvelope.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrazePushEnvelope.swift; sourceTree = ""; }; 19F0940028B3D75800973138 /* PledgePaymentMethodAddCellViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PledgePaymentMethodAddCellViewModel.swift; sourceTree = ""; }; @@ -5958,7 +5950,6 @@ 4778EE1E26A1E8230059EA69 /* FetchUser.graphql */, 4758484D26B31CF8005AAC1C /* FetchUserBackings.graphql */, 6008632D29B8F66F00B87B39 /* FetchUserEmail.graphql */, - 19C1CE3229DA43C100899A17 /* FetchUserMemberStatus.graphql */, 0655C7272732FDA30087281F /* FetchRootCategories.graphql */, 0655C7292732FDE00087281F /* FetchCategory.graphql */, ); @@ -6049,8 +6040,6 @@ D002CAE4218CF951009783F2 /* WatchProjectResponseEnvelope.swift */, 7798B56421750041008BC50D /* GraphUser.swift */, 6008633329B8FBD700B87B39 /* GraphUserEmail.swift */, - 19C1CE3429DA44C600899A17 /* GraphUserMemberStatus.swift */, - 193C7FB429DA73D90023B95E /* GraphUserMemberStatusTests.swift */, D63BBD30217F7212007E01F0 /* UserCreditCards.swift */, 77DB53292215D0AA0078991C /* UserCreditCardsTests.swift */, 77FA1AF22445FB810035D659 /* GraphUserTests.swift */, @@ -6076,7 +6065,6 @@ 8A1556DF269394B600017845 /* RewardFragment.graphql */, 8AC3E08D2698CE8200168BF8 /* ShippingRuleFragment.graphql */, 6008632B29B8F64700B87B39 /* UserEmailFragment.graphql */, - 19C1CE3629DA478000899A17 /* UserMemberStatusFragment.graphql */, 8A1556F1269398CB00017845 /* UserFragment.graphql */, 06DAAE5C26AA3CF500194E58 /* UserStoredCardsFragment.graphql */, ); @@ -7654,7 +7642,6 @@ 19047FBB2889A16300BDD1A8 /* CreateSetupIntent.graphql in Resources */, 062868E626B999EF00EC5052 /* DeletePaymentSource.graphql in Resources */, 06C38CB926A9D13400591CED /* UpdateUserProfile.graphql in Resources */, - 19C1CE3729DA478000899A17 /* UserMemberStatusFragment.graphql in Resources */, 47D7D09626C2EA5200D2BAB5 /* SignInWithApple.graphql in Resources */, 06DAAE5926AA3CD100194E58 /* CommentFragment.graphql in Resources */, 06261603273B0E1500389981 /* PostComment.graphql in Resources */, @@ -9035,7 +9022,6 @@ D67B6CD6221F468100B63A6B /* Location+Encode.swift in Sources */, 8AC3E105269F4D1C00168BF8 /* GraphAPI.ApplePay+ApplePayParams.swift in Sources */, D01588331EEB2ED7006E7684 /* Decodable.swift in Sources */, - 19C1CE3529DA44C600899A17 /* GraphUserMemberStatus.swift in Sources */, 06232D3E2795EC2C00A81755 /* Element+Helpers.swift in Sources */, 8ACF36E22627481C0026E74D /* ApiDateProtocol.swift in Sources */, 8A07D00C26657FCE00426B1C /* CommentRepliesEnvelopeTemplates.swift in Sources */, @@ -9065,7 +9051,6 @@ 8479CF2C2530A5D700FD13F1 /* Service+DecodeHelpers.swift in Sources */, D68F0B16243CFF3F009FC948 /* SignInWithAppleEnvelope.swift in Sources */, D6B686EB2191FEEE005F5DA7 /* UserSendEmailVerificationMutation.swift in Sources */, - 19C1CE3329DA43C100899A17 /* FetchUserMemberStatus.graphql in Sources */, D6F5C60F2437DD2A00C1A79D /* SignInWithAppleMutation.swift in Sources */, D67B6CD8221F46D700B63A6B /* Project.Country+Encode.swift in Sources */, 8AA8A38424EC6DA400085282 /* ProjectAndBackingEnvelopeTemplates.swift in Sources */, @@ -9147,7 +9132,6 @@ 06232D3C2795EC2400A81755 /* HTMLParserTests.swift in Sources */, D015899E1EEB2ED7006E7684 /* ServiceTests.swift in Sources */, 06962F8B273B32D900FB0B3D /* PostCommentEnvelope+PostCommentMutationDataTests.swift in Sources */, - 193C7FB629DA74990023B95E /* GraphUserMemberStatusTests.swift in Sources */, 8AF34C7A2342D864000B211D /* Encodable+DictionaryTests.swift in Sources */, D0D10C0C1EEB4550005EBAD0 /* FindFriendsEnvelopeTests.swift in Sources */, 47B1338F26B35AA000080048 /* GraphAPI.BackingState+BackingStateTests.swift in Sources */, diff --git a/KsApi/GraphAPI.swift b/KsApi/GraphAPI.swift index 12a5737502..f536bcc6b6 100644 --- a/KsApi/GraphAPI.swift +++ b/KsApi/GraphAPI.swift @@ -9185,112 +9185,6 @@ public enum GraphAPI { } } - public final class FetchUserMemberStatusQuery: GraphQLQuery { - /// The raw GraphQL definition of this operation. - public let operationDefinition: String = - """ - query FetchUserMemberStatus { - me { - __typename - ...UserMemberStatusFragment - } - } - """ - - public let operationName: String = "FetchUserMemberStatus" - - public var queryDocument: String { - var document: String = operationDefinition - document.append("\n" + UserMemberStatusFragment.fragmentDefinition) - return document - } - - public init() { - } - - public struct Data: GraphQLSelectionSet { - public static let possibleTypes: [String] = ["Query"] - - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("me", type: .object(Me.selections)), - ] - } - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(me: Me? = nil) { - self.init(unsafeResultMap: ["__typename": "Query", "me": me.flatMap { (value: Me) -> ResultMap in value.resultMap }]) - } - - /// You. - public var me: Me? { - get { - return (resultMap["me"] as? ResultMap).flatMap { Me(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "me") - } - } - - public struct Me: GraphQLSelectionSet { - public static let possibleTypes: [String] = ["User"] - - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLFragmentSpread(UserMemberStatusFragment.self), - ] - } - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var fragments: Fragments { - get { - return Fragments(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - - public struct Fragments { - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public var userMemberStatusFragment: UserMemberStatusFragment { - get { - return UserMemberStatusFragment(unsafeResultMap: resultMap) - } - set { - resultMap += newValue.resultMap - } - } - } - } - } - } - public final class FetchUserStoredCardsQuery: GraphQLQuery { /// The raw GraphQL definition of this operation. public let operationDefinition: String = @@ -14884,151 +14778,6 @@ public enum GraphAPI { } } - public struct UserMemberStatusFragment: GraphQLFragment { - /// The raw GraphQL definition of this fragment. - public static let fragmentDefinition: String = - """ - fragment UserMemberStatusFragment on User { - __typename - createdProjects { - __typename - totalCount - } - membershipProjects { - __typename - totalCount - } - } - """ - - public static let possibleTypes: [String] = ["User"] - - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("createdProjects", type: .object(CreatedProject.selections)), - GraphQLField("membershipProjects", type: .object(MembershipProject.selections)), - ] - } - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(createdProjects: CreatedProject? = nil, membershipProjects: MembershipProject? = nil) { - self.init(unsafeResultMap: ["__typename": "User", "createdProjects": createdProjects.flatMap { (value: CreatedProject) -> ResultMap in value.resultMap }, "membershipProjects": membershipProjects.flatMap { (value: MembershipProject) -> ResultMap in value.resultMap }]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - /// Projects a user has created. - public var createdProjects: CreatedProject? { - get { - return (resultMap["createdProjects"] as? ResultMap).flatMap { CreatedProject(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "createdProjects") - } - } - - /// Projects the user has collaborated on. - public var membershipProjects: MembershipProject? { - get { - return (resultMap["membershipProjects"] as? ResultMap).flatMap { MembershipProject(unsafeResultMap: $0) } - } - set { - resultMap.updateValue(newValue?.resultMap, forKey: "membershipProjects") - } - } - - public struct CreatedProject: GraphQLSelectionSet { - public static let possibleTypes: [String] = ["UserCreatedProjectsConnection"] - - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("totalCount", type: .nonNull(.scalar(Int.self))), - ] - } - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(totalCount: Int) { - self.init(unsafeResultMap: ["__typename": "UserCreatedProjectsConnection", "totalCount": totalCount]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var totalCount: Int { - get { - return resultMap["totalCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "totalCount") - } - } - } - - public struct MembershipProject: GraphQLSelectionSet { - public static let possibleTypes: [String] = ["MembershipProjectsConnection"] - - public static var selections: [GraphQLSelection] { - return [ - GraphQLField("__typename", type: .nonNull(.scalar(String.self))), - GraphQLField("totalCount", type: .nonNull(.scalar(Int.self))), - ] - } - - public private(set) var resultMap: ResultMap - - public init(unsafeResultMap: ResultMap) { - self.resultMap = unsafeResultMap - } - - public init(totalCount: Int) { - self.init(unsafeResultMap: ["__typename": "MembershipProjectsConnection", "totalCount": totalCount]) - } - - public var __typename: String { - get { - return resultMap["__typename"]! as! String - } - set { - resultMap.updateValue(newValue, forKey: "__typename") - } - } - - public var totalCount: Int { - get { - return resultMap["totalCount"]! as! Int - } - set { - resultMap.updateValue(newValue, forKey: "totalCount") - } - } - } - } - public struct UserStoredCardsFragment: GraphQLFragment { /// The raw GraphQL definition of this fragment. public static let fragmentDefinition: String = diff --git a/KsApi/MockService.swift b/KsApi/MockService.swift index 3c374311a7..c822665f24 100644 --- a/KsApi/MockService.swift +++ b/KsApi/MockService.swift @@ -80,10 +80,6 @@ fileprivate let fetchGraphUserResult: Result, ErrorEnvelope>? fileprivate let fetchGraphUserSelfResult: Result, ErrorEnvelope>? fileprivate let fetchGraphUserEmailResult: Result, ErrorEnvelope>? - fileprivate let fetchGraphUserMemberStatusResult: Result< - UserEnvelope, - ErrorEnvelope - >? fileprivate let fetchErroredUserBackingsResult: Result? fileprivate let addAttachmentResponse: UpdateDraft.Image? @@ -256,7 +252,6 @@ fetchGraphUserResult: Result, ErrorEnvelope>? = nil, fetchGraphUserSelfResult: Result, ErrorEnvelope>? = nil, fetchGraphUserEmailResult: Result, ErrorEnvelope>? = nil, - fetchGraphUserMemberStatusResult: Result, ErrorEnvelope>? = nil, fetchErroredUserBackingsResult: Result? = nil, addAttachmentResponse: UpdateDraft.Image? = nil, addAttachmentError: ErrorEnvelope? = nil, @@ -371,7 +366,6 @@ self.fetchGraphUserResult = fetchGraphUserResult self.fetchGraphUserSelfResult = fetchGraphUserSelfResult self.fetchGraphUserEmailResult = fetchGraphUserEmailResult - self.fetchGraphUserMemberStatusResult = fetchGraphUserMemberStatusResult self.fetchErroredUserBackingsResult = fetchErroredUserBackingsResult @@ -816,21 +810,6 @@ return client.fetchWithResult(query: fetchGraphUserEmailQuery, result: self.fetchGraphUserEmailResult) } - internal func fetchGraphUserMemberStatus() - -> SignalProducer, ErrorEnvelope> { - guard let client = self.apolloClient else { - return .empty - } - - let fetchGraphUserMemberStatusQuery = GraphAPI.FetchUserMemberStatusQuery() - - return client - .fetchWithResult( - query: fetchGraphUserMemberStatusQuery, - result: self.fetchGraphUserMemberStatusResult - ) - } - // TODO: Refactor this test to use `self.apolloClient`, `ErroredBackingsEnvelope` needs to be `Decodable` and tested in-app. internal func fetchErroredUserBackings(status _: BackingState) -> SignalProducer { @@ -1680,7 +1659,6 @@ fetchGraphUserResult: $1.fetchGraphUserResult, fetchGraphUserSelfResult: $1.fetchGraphUserSelfResult, fetchGraphUserEmailResult: $1.fetchGraphUserEmailResult, - fetchGraphUserMemberStatusResult: $1.fetchGraphUserMemberStatusResult, addAttachmentResponse: $1.addAttachmentResponse, addAttachmentError: $1.addAttachmentError, removeAttachmentResponse: $1.removeAttachmentResponse, diff --git a/KsApi/Service.swift b/KsApi/Service.swift index bd645765dc..cece6c1eb2 100644 --- a/KsApi/Service.swift +++ b/KsApi/Service.swift @@ -344,13 +344,6 @@ public struct Service: ServiceType { .flatMap(UserEnvelope.envelopeProducer(from:)) } - public func fetchGraphUserMemberStatus() - -> SignalProducer, ErrorEnvelope> { - return GraphQL.shared.client - .fetch(query: GraphAPI.FetchUserMemberStatusQuery()) - .flatMap(UserEnvelope.envelopeProducer(from:)) - } - public func fetchGraphUserSelf() -> SignalProducer, ErrorEnvelope> { return GraphQL.shared.client diff --git a/KsApi/ServiceType.swift b/KsApi/ServiceType.swift index c428151dc8..5644f88525 100644 --- a/KsApi/ServiceType.swift +++ b/KsApi/ServiceType.swift @@ -169,10 +169,6 @@ public protocol ServiceType { func fetchGraphUserEmail() -> SignalProducer, ErrorEnvelope> - /// Fetches creator and collaborator status of the currently logged in User. - func fetchGraphUserMemberStatus() - -> SignalProducer, ErrorEnvelope> - /// Fetches GraphQL user fragment and returns User instance. func fetchGraphUserSelf() -> SignalProducer, ErrorEnvelope> diff --git a/KsApi/fragments/UserMemberStatusFragment.graphql b/KsApi/fragments/UserMemberStatusFragment.graphql deleted file mode 100644 index 325f3a07fd..0000000000 --- a/KsApi/fragments/UserMemberStatusFragment.graphql +++ /dev/null @@ -1,8 +0,0 @@ -fragment UserMemberStatusFragment on User { - createdProjects { - totalCount - } - membershipProjects { - totalCount - } -} diff --git a/KsApi/models/UserEnvelope.swift b/KsApi/models/UserEnvelope.swift index 86020c9d0e..74104fb3ba 100644 --- a/KsApi/models/UserEnvelope.swift +++ b/KsApi/models/UserEnvelope.swift @@ -24,14 +24,6 @@ extension UserEnvelope { return SignalProducer(value: envelope) } - static func envelopeProducer(from data: GraphAPI.FetchUserMemberStatusQuery.Data) - -> SignalProducer, ErrorEnvelope> { - guard let envelope = UserEnvelope.userEnvelope(from: data) else { - return .empty - } - return SignalProducer(value: envelope) - } - static func envelopeProducer(from data: GraphAPI.FetchUserQuery.Data) -> SignalProducer, ErrorEnvelope> { guard let envelope = UserEnvelope.user(from: data) else { diff --git a/KsApi/models/graphql/GraphUserMemberStatus.swift b/KsApi/models/graphql/GraphUserMemberStatus.swift deleted file mode 100644 index 527e715020..0000000000 --- a/KsApi/models/graphql/GraphUserMemberStatus.swift +++ /dev/null @@ -1,14 +0,0 @@ -import Foundation -import Prelude - -public struct GraphUserMemberStatus: Decodable { - public var creatorProjectsTotalCount: Int - public var memberProjectsTotalCount: Int -} - -extension GraphUserMemberStatus: Equatable { - public static func == (lhs: GraphUserMemberStatus, rhs: GraphUserMemberStatus) -> Bool { - lhs.creatorProjectsTotalCount == rhs.creatorProjectsTotalCount && - lhs.memberProjectsTotalCount == rhs.memberProjectsTotalCount - } -} diff --git a/KsApi/models/graphql/GraphUserMemberStatusTests.swift b/KsApi/models/graphql/GraphUserMemberStatusTests.swift deleted file mode 100644 index 3acfe1b0de..0000000000 --- a/KsApi/models/graphql/GraphUserMemberStatusTests.swift +++ /dev/null @@ -1,28 +0,0 @@ -import Foundation -@testable import KsApi -import XCTest - -final class GraphUserMemberStatusTests: XCTestCase { - func testDecoding_NoNilValues() { - let dictionary: [String: Any] = - [ - "creatorProjectsTotalCount": 12, - "memberProjectsTotalCount": 20 - ] - - guard let data = try? JSONSerialization.data(withJSONObject: dictionary, options: []) else { - XCTFail("JSON should be convertible to data") - - return - } - - do { - let userMemberStatus = try JSONDecoder().decode(GraphUserMemberStatus.self, from: data) - - XCTAssertEqual(userMemberStatus.creatorProjectsTotalCount, 12) - XCTAssertEqual(userMemberStatus.memberProjectsTotalCount, 20) - } catch { - XCTFail("Failed to decode \(error)") - } - } -} diff --git a/KsApi/models/graphql/adapters/UserEnvelope+GraphUserEnvelope.swift b/KsApi/models/graphql/adapters/UserEnvelope+GraphUserEnvelope.swift index 63f8e37592..752a79588e 100644 --- a/KsApi/models/graphql/adapters/UserEnvelope+GraphUserEnvelope.swift +++ b/KsApi/models/graphql/adapters/UserEnvelope+GraphUserEnvelope.swift @@ -51,19 +51,4 @@ extension UserEnvelope { return UserEnvelope(me: graphUser) } - - /** - Returns a `UserEnvelope` from a `FetchUserMemberStatusQuery.Data` object. - */ - static func userEnvelope(from data: GraphAPI.FetchUserMemberStatusQuery - .Data) -> UserEnvelope? { - guard let userMemberStatusFragment = data.me?.fragments.userMemberStatusFragment else { return nil } - - let graphUserMemberStatus = GraphUserMemberStatus( - creatorProjectsTotalCount: userMemberStatusFragment.createdProjects?.totalCount ?? 0, - memberProjectsTotalCount: userMemberStatusFragment.membershipProjects?.totalCount ?? 0 - ) - - return UserEnvelope(me: graphUserMemberStatus) - } } diff --git a/KsApi/models/graphql/adapters/UserEnvelope+GraphUserEnvelopeTemplates.swift b/KsApi/models/graphql/adapters/UserEnvelope+GraphUserEnvelopeTemplates.swift index d0a39eb594..3fc75c346b 100644 --- a/KsApi/models/graphql/adapters/UserEnvelope+GraphUserEnvelopeTemplates.swift +++ b/KsApi/models/graphql/adapters/UserEnvelope+GraphUserEnvelopeTemplates.swift @@ -28,13 +28,4 @@ public struct GraphUserEnvelopeTemplates { "uid": "1470952545" ] ] - - static let userMemberStatusJSONDict: [String: Any?] = - [ - "me": [ - "__typename": "User", - "createdProjects": ["__typename": "UserCreatedProjectsConnection", "totalCount": 12], - "membershipProjects": ["__typename": "MembershipProjectsConnection", "totalCount": 20] - ] - ] } diff --git a/KsApi/models/graphql/adapters/UserEnvelope+GraphUserEnvelopeTests.swift b/KsApi/models/graphql/adapters/UserEnvelope+GraphUserEnvelopeTests.swift index eda8c4ac8b..11f9ed4760 100644 --- a/KsApi/models/graphql/adapters/UserEnvelope+GraphUserEnvelopeTests.swift +++ b/KsApi/models/graphql/adapters/UserEnvelope+GraphUserEnvelopeTests.swift @@ -78,18 +78,4 @@ final class UserEnvelope_GraphUserEnvelopeTests: XCTestCase { XCTAssertEqual(envelope.me.email, "nativesquad@ksr.com") } - - func testFetchUserMemberStatus() { - let fetchUserMemberStatusQueryData = GraphAPI.FetchUserMemberStatusQuery - .Data(unsafeResultMap: GraphUserEnvelopeTemplates.userMemberStatusJSONDict) - - guard let envelope = UserEnvelope - .userEnvelope(from: fetchUserMemberStatusQueryData) else { - XCTFail() - return - } - - XCTAssertEqual(envelope.me.creatorProjectsTotalCount, 12) - XCTAssertEqual(envelope.me.memberProjectsTotalCount, 20) - } } diff --git a/KsApi/queries/FetchUserMemberStatus.graphql b/KsApi/queries/FetchUserMemberStatus.graphql deleted file mode 100644 index 7ac5036509..0000000000 --- a/KsApi/queries/FetchUserMemberStatus.graphql +++ /dev/null @@ -1,5 +0,0 @@ -query FetchUserMemberStatus { - me { - ...UserMemberStatusFragment - } -} diff --git a/Library/ViewModels/BackerDashboardViewModel.swift b/Library/ViewModels/BackerDashboardViewModel.swift index f1abcb8ab8..649346d421 100644 --- a/Library/ViewModels/BackerDashboardViewModel.swift +++ b/Library/ViewModels/BackerDashboardViewModel.swift @@ -112,26 +112,8 @@ public final class BackerDashboardViewModel: BackerDashboardViewModelType, Backe self.viewWillAppearProperty.signal.ignoreValues() ) .switchMap { _ in - AppEnvironment.current.apiService.fetchGraphUserSelf() + AppEnvironment.current.apiService.fetchUserSelf() .ksr_delay(AppEnvironment.current.apiDelayInterval, on: AppEnvironment.current.scheduler) - .map { envelope in - envelope.me - } - .switchMap { userValue -> SignalProducer in - AppEnvironment.current.apiService.fetchGraphUserMemberStatus() - .ksr_delay(AppEnvironment.current.apiDelayInterval, on: AppEnvironment.current.scheduler) - .map { userMemberStatusEnvelope -> User in - let updatedUser = userValue - |> User.lens.stats.createdProjectsCount .~ userMemberStatusEnvelope.me - .creatorProjectsTotalCount - |> User.lens.stats.memberProjectsCount .~ userMemberStatusEnvelope.me.memberProjectsTotalCount - - return updatedUser - } - .flatMapError { _ in - SignalProducer(value: userValue) - } - } .prefix(SignalProducer([AppEnvironment.current.currentUser].compact())) .materialize() } diff --git a/Library/ViewModels/BackerDashboardViewModelTests.swift b/Library/ViewModels/BackerDashboardViewModelTests.swift index 2a5d8ce7b2..90342623cf 100644 --- a/Library/ViewModels/BackerDashboardViewModelTests.swift +++ b/Library/ViewModels/BackerDashboardViewModelTests.swift @@ -59,11 +59,8 @@ internal final class BackerDashboardViewModelTests: TestCase { |> \.stats.starredProjectsCount .~ 58 |> \.avatar.large .~ "http://cats.com/furball.jpg" - let userEnvelope = UserEnvelope(me: user) - withEnvironment(apiService: MockService( - fetchGraphUserSelfResult: .success(userEnvelope), - fetchGraphUserMemberStatusResult: .failure(.couldNotParseErrorEnvelopeJSON) + fetchUserSelfResponse: user )) { AppEnvironment.login(AccessTokenEnvelope(accessToken: "deadbeef", user: user)) @@ -104,83 +101,6 @@ internal final class BackerDashboardViewModelTests: TestCase { } } - func testUserUpdatesInEnvironment_AfterSavingProject_NoGraphUserMemberStatus_Success() { - let user = User.template - |> \.name .~ "user" - |> \.stats.starredProjectsCount .~ 60 - - let userEnvelope = UserEnvelope(me: user) - - withEnvironment(apiService: MockService( - fetchGraphUserSelfResult: .success(userEnvelope), - fetchGraphUserMemberStatusResult: .failure(.couldNotParseErrorEnvelopeJSON) - )) { - AppEnvironment.login(AccessTokenEnvelope(accessToken: "deadbeef", user: user)) - self.vm.inputs.viewWillAppear(false) - - self.scheduler.advance() - - self.updateCurrentUserInEnvironment.assertValues([user]) - - let user2 = user - |> \.name .~ "Updated user" - - let user2Envelope = UserEnvelope(me: user2) - - withEnvironment(apiService: MockService( - fetchGraphUserSelfResult: .success(user2Envelope), - fetchGraphUserMemberStatusResult: .failure(.couldNotParseErrorEnvelopeJSON) - )) { - self.vm.inputs.projectSaved() - - self.scheduler.advance() - - self.updateCurrentUserInEnvironment.assertValues([user, user, user2]) - } - } - } - - func testUserUpdatesInEnvironment_AfterSavingProject_GraphUserMemberStatus_Success() { - let user = User.template - |> \.name .~ "user" - |> \.stats.starredProjectsCount .~ 60 - |> \.stats.createdProjectsCount .~ 0 - - let userEnvelope = UserEnvelope(me: user) - - let memberStatusUserEnvelope = - UserEnvelope(me: GraphUserMemberStatus(creatorProjectsTotalCount: 12, memberProjectsTotalCount: 0)) - - withEnvironment(apiService: MockService( - fetchGraphUserSelfResult: .success(userEnvelope), - fetchGraphUserMemberStatusResult: .failure(.couldNotParseJSON) - )) { - AppEnvironment.login(AccessTokenEnvelope(accessToken: "deadbeef", user: user)) - self.vm.inputs.viewWillAppear(false) - - self.scheduler.advance() - - XCTAssertFalse(self.updateCurrentUserInEnvironment.lastValue!.isCreator) - - let user2 = user - |> \.name .~ "Updated user" - |> \.stats.createdProjectsCount .~ 0 - - let user2Envelope = UserEnvelope(me: user2) - - withEnvironment(apiService: MockService( - fetchGraphUserSelfResult: .success(user2Envelope), - fetchGraphUserMemberStatusResult: .success(memberStatusUserEnvelope) - )) { - self.vm.inputs.projectSaved() - - self.scheduler.advance() - - XCTAssertTrue(self.updateCurrentUserInEnvironment.lastValue!.isCreator) - } - } - } - func testConfigurePagesData() { self.configurePagesDataSourceTab.assertValueCount(0) self.configurePagesDataSourceSort.assertValueCount(0) @@ -195,8 +115,7 @@ internal final class BackerDashboardViewModelTests: TestCase { let userEnvelope = UserEnvelope(me: User.template) withEnvironment(apiService: MockService( - fetchGraphUserSelfResult: .success(userEnvelope), - fetchGraphUserMemberStatusResult: .failure(.couldNotParseErrorEnvelopeJSON) + fetchGraphUserSelfResult: .success(userEnvelope) )) { AppEnvironment.login(AccessTokenEnvelope(accessToken: "deadbeef", user: .template)) diff --git a/Library/ViewModels/RootViewModel.swift b/Library/ViewModels/RootViewModel.swift index cf6665a324..62b6c977ba 100644 --- a/Library/ViewModels/RootViewModel.swift +++ b/Library/ViewModels/RootViewModel.swift @@ -165,7 +165,7 @@ public final class RootViewModel: RootViewModelType, RootViewModelInputs, RootVi .map { ( $0 != nil, - (($0?.stats.memberProjectsCount ?? 0) > 0) || (($0?.stats.createdProjectsCount ?? 0) > 0) + ($0?.stats.memberProjectsCount ?? 0) > 0 ) } .skipRepeats(==) @@ -493,7 +493,7 @@ private func generatePersonalizedViewControllers(userState: (isMember: Bool, isL private func tabData(forUser user: User?) -> TabBarItemsData { let isMember = - (((user?.stats.memberProjectsCount ?? 0) > 0) || ((user?.stats.createdProjectsCount ?? 0) > 0)) + (user?.stats.memberProjectsCount ?? 0) > 0 let items: [TabBarItem] = isMember ? [ .home(index: 0), .activity(index: 1), .search(index: 2), .dashboard(index: 3),