Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ struct PPOProjectCard: View {
@StateObject var viewModel: PPOProjectCardViewModel
var parentSize: CGSize

var onViewBackingDetails: ((PPOProjectCardModel) -> Void)? = nil
var onViewProjectDetails: ((PPOProjectCardModel) -> Void)? = nil
var onSendMessage: ((PPOProjectCardModel) -> Void)? = nil
var onPerformAction: ((PPOProjectCardModel, PPOProjectCardModel.Action) -> Void)? = nil

Expand Down Expand Up @@ -41,7 +41,7 @@ struct PPOProjectCard: View {

// Handle actions
.onReceive(self.viewModel.viewBackingDetailsTapped) {
self.onViewBackingDetails?(self.viewModel.card)
self.onViewProjectDetails?(self.viewModel.card)
}
.onReceive(self.viewModel.sendMessageTapped) {
self.onSendMessage?(self.viewModel.card)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import Foundation
import KDS
import KsApi
import Library
import Prelude
import Stripe
import SwiftUI

Expand Down Expand Up @@ -74,7 +75,9 @@ public class PPOContainerViewController: PagedContainerViewController<PPOContain
switch nav {
case .backedProjects:
tabBarController?.switchToProfile()
case let .editAddress(url), let .survey(url), let .backingDetails(url), let .managePledge(url):
case let .projectDetails(projectId):
self?.openProjectPage(projectId)
case let .editAddress(url), let .survey(url), let .managePledge(url):
self?.openSurvey(url)
case let .contactCreator(messageSubject):
self?.messageCreator(messageSubject)
Expand Down Expand Up @@ -173,6 +176,20 @@ public class PPOContainerViewController: PagedContainerViewController<PPOContain
self.navigationController?.present(nav, animated: true)
}

private func openProjectPage(_ projectId: Int) {
let projectParam = Either<Project, any ProjectPageParam>(right: Param.id(projectId))
let vc = ProjectPageViewController.configuredWith(
projectOrParam: projectParam,
refInfo: nil
)

let nav = UINavigationController(rootViewController: vc)
nav.modalPresentationStyle = .pageSheet
nav.presentationController?.delegate = self

self.present(nav, animated: true, completion: nil)
}

private func messageCreator(_ messageSubject: MessageSubject) {
let vc = MessageDialogViewController.configuredWith(messageSubject: messageSubject, context: .backerModal)
let nav = UINavigationController(rootViewController: vc)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ struct PPOView: View {
PPOProjectCard(
viewModel: card,
parentSize: parentSize,
onViewBackingDetails: { card in
self.viewModel.viewBackingDetails(from: card)
onViewProjectDetails: { card in
self.viewModel.viewProjectDetails(from: card)
},
onSendMessage: { card in
self.viewModel.contactCreator(from: card)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ protocol PPOViewModelInputs {
)
func openSurvey(from: PPOProjectCardModel)
func managePledge(from: PPOProjectCardModel)
func viewBackingDetails(from: PPOProjectCardModel)
func viewProjectDetails(from: PPOProjectCardModel)
func editAddress(from: PPOProjectCardModel)
func confirmAddress(from: PPOProjectCardModel, address: String, addressId: String)
func contactCreator(from: PPOProjectCardModel)
Expand All @@ -44,7 +44,7 @@ enum PPONavigationEvent: Equatable {
case fix3DSChallenge(clientSecret: String, onProgress: (PPOActionState) -> Void)
case survey(url: String)
case managePledge(url: String)
case backingDetails(url: String)
case projectDetails(projectId: Int)
case editAddress(url: String)
case confirmAddress(
backingId: String,
Expand All @@ -60,8 +60,8 @@ enum PPONavigationEvent: Equatable {
return lhsUrl == rhsUrl
case let (.managePledge(lhsUrl), .managePledge(rhsUrl)):
return lhsUrl == rhsUrl
case let (.backingDetails(lhsUrl), .backingDetails(rhsUrl)):
return lhsUrl == rhsUrl
case let (.projectDetails(lhsId), .projectDetails(rhsId)):
return lhsId == rhsId
case let (.editAddress(lhsUrl), .editAddress(rhsUrl)):
return lhsUrl == rhsUrl
case let (.contactCreator(lhsSubject), .contactCreator(rhsSubject)):
Expand Down Expand Up @@ -168,8 +168,8 @@ final class PPOViewModel: ObservableObject, PPOViewModelInputs, PPOViewModelOutp
self.managePledgeSubject
.map { viewModel in PPONavigationEvent.managePledge(url: viewModel.backingDetailsUrl) }
.eraseToAnyPublisher(),
self.viewBackingDetailsSubject
.map { viewModel in PPONavigationEvent.survey(url: viewModel.backingDetailsUrl) }
self.viewProjectDetailsSubject
.map { viewModel in PPONavigationEvent.projectDetails(projectId: viewModel.projectId) }
.eraseToAnyPublisher(),
self.editAddressSubject
.map { viewModel in PPONavigationEvent.editAddress(url: viewModel.backingDetailsUrl) }
Expand Down Expand Up @@ -339,8 +339,8 @@ final class PPOViewModel: ObservableObject, PPOViewModelInputs, PPOViewModelOutp
self.managePledgeSubject.send(from)
}

func viewBackingDetails(from: PPOProjectCardModel) {
self.viewBackingDetailsSubject.send(from)
func viewProjectDetails(from: PPOProjectCardModel) {
self.viewProjectDetailsSubject.send(from)
}

func editAddress(from: PPOProjectCardModel) {
Expand Down Expand Up @@ -378,7 +378,7 @@ final class PPOViewModel: ObservableObject, PPOViewModelInputs, PPOViewModelOutp
>()
private let openSurveySubject = PassthroughSubject<PPOProjectCardModel, Never>()
private let managePledgeSubject = PassthroughSubject<PPOProjectCardModel, Never>()
private let viewBackingDetailsSubject = PassthroughSubject<PPOProjectCardModel, Never>()
private let viewProjectDetailsSubject = PassthroughSubject<PPOProjectCardModel, Never>()
private let editAddressSubject = PassthroughSubject<PPOProjectCardModel, Never>()
private let confirmAddressSubject = PassthroughSubject<(PPOProjectCardModel, String, String), Never>()
private let confirmAddressProgressSubject = PassthroughSubject<
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -325,11 +325,11 @@ class PPOViewModelTests: XCTestCase {
)
}

func testNavigationViewBackingDetails() {
func testNavigationViewProjectDetails() {
self.verifyNavigationEvent(
// This could be tested with any template. All cards allow the user to view backing details.
{ self.viewModel.openSurvey(from: PPOProjectCardModel.fixPaymentTemplate) },
event: .survey(url: PPOProjectCardModel.fixPaymentTemplate.backingDetailsUrl)
// This could be tested with any template. All cards allow the user to view project details.
{ self.viewModel.viewProjectDetails(from: PPOProjectCardModel.fixPaymentTemplate) },
event: .projectDetails(projectId: PPOProjectCardModel.fixPaymentTemplate.projectId)
)
}

Expand Down