Skip to content

Commit

Permalink
Update docs
Browse files Browse the repository at this point in the history
  • Loading branch information
ipavlidakis committed May 10, 2024
1 parent b4c6693 commit 9119afb
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ fileprivate func content() {
var body: some View {
YourRootView()
.modifier(CallModifier(viewModel: viewModel))
.onCallEnded(additionalPresentationValidator: { $0?.state.createdBy?.id == streamVideo.user.id }) { call, dismiss in
.onCallEnded(presentationValidator: { $0?.state.createdBy?.id == streamVideo.user.id }) { call, dismiss in
if let call {
DemoFeedbackView(call, dismiss: dismiss)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,16 @@ private final class CallEndedViewModifierViewModel: ObservableObject {
@available(iOS 14.0, *)
private struct CallEndedViewModifier<Subview: View>: ViewModifier {

private var additionalPresentationValidator: (Call?) -> Bool
private var presentationValidator: (Call?) -> Bool
private var subviewProvider: (Call?, @escaping () -> Void) -> Subview

@StateObject private var viewModel: CallEndedViewModifierViewModel

init(
additionalPresentationValidator: @escaping (Call?) -> Bool,
presentationValidator: @escaping (Call?) -> Bool,
@ViewBuilder subviewProvider: @escaping (Call?, @escaping () -> Void) -> Subview
) {
self.additionalPresentationValidator = additionalPresentationValidator
self.presentationValidator = presentationValidator
self.subviewProvider = subviewProvider
_viewModel = .init(wrappedValue: .init())
}
Expand All @@ -62,7 +62,7 @@ private struct CallEndedViewModifier<Subview: View>: ViewModifier {
switch (call, viewModel.lastCall, viewModel.isPresentingSubview) {
case (nil, let activeCall, false)
where activeCall != nil && viewModel
.maxParticipantsCount > 1 && additionalPresentationValidator(viewModel.lastCall):
.maxParticipantsCount > 1 && presentationValidator(viewModel.lastCall):
/// The following presentation criteria are required:
/// - The activeCall was ended.
/// - Participants, during call's duration, grew to more than one.
Expand Down Expand Up @@ -105,16 +105,16 @@ private struct CallEndedViewModifier<Subview: View>: ViewModifier {
@available(iOS, introduced: 13, obsoleted: 14)
private struct CallEndedViewModifier_iOS13<Subview: View>: ViewModifier {

private var additionalPresentationValidator: (Call?) -> Bool
private var presentationValidator: (Call?) -> Bool
private var subviewProvider: (Call?, @escaping () -> Void) -> Subview

@BackportStateObject private var viewModel: CallEndedViewModifierViewModel

init(
additionalPresentationValidator: @escaping (Call?) -> Bool,
presentationValidator: @escaping (Call?) -> Bool,
@ViewBuilder subviewProvider: @escaping (Call?, @escaping () -> Void) -> Subview
) {
self.additionalPresentationValidator = additionalPresentationValidator
self.presentationValidator = presentationValidator
self.subviewProvider = subviewProvider
_viewModel = .init(wrappedValue: .init())
}
Expand All @@ -136,7 +136,7 @@ private struct CallEndedViewModifier_iOS13<Subview: View>: ViewModifier {
switch (call, viewModel.lastCall, viewModel.isPresentingSubview) {
case (nil, let activeCall, false)
where activeCall != nil && viewModel
.maxParticipantsCount > 1 && additionalPresentationValidator(viewModel.lastCall):
.maxParticipantsCount > 1 && presentationValidator(viewModel.lastCall):
/// The following presentation criteria are required:
/// - The activeCall was ended.
/// - Participants, during call's duration, grew to more than one.
Expand Down Expand Up @@ -185,26 +185,26 @@ extension View {
/// - Participants, during call's duration, grew to more than one.
///
/// - Parameters:
/// - additionalPresentationValidator: A closure that can be used to provide additional
/// - presentationValidator: A closure that can be used to provide additional
/// validation rules for presentation. The modifier will inject the last available call when calling.
/// - content: A viewBuilder that returns the modal's content. The viewModifier
/// will provide a dismiss closure that can be called from the content to close the modal.
@ViewBuilder
public func onCallEnded(
additionalPresentationValidator: @escaping (Call?) -> Bool = { _ in true },
presentationValidator: @escaping (Call?) -> Bool = { _ in true },
@ViewBuilder _ content: @escaping (Call?, @escaping () -> Void) -> some View
) -> some View {
if #available(iOS 14.0, *) {
modifier(
CallEndedViewModifier(
additionalPresentationValidator: additionalPresentationValidator,
presentationValidator: presentationValidator,
subviewProvider: content
)
)
} else {
modifier(
CallEndedViewModifier_iOS13(
additionalPresentationValidator: additionalPresentationValidator,
presentationValidator: presentationValidator,
subviewProvider: content
)
)
Expand Down
6 changes: 3 additions & 3 deletions docusaurus/docs/iOS/05-ui-cookbook/18-call-quality-rating.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ struct CallContainer: View {
var body: some View {
YourRootView()
.modifier(CallModifier(viewModel: viewModel))
.onCallEnded(additionalPresentationValidator: { call in call?.state.createdBy?.id == streamVideo.user.id }) { call, dismiss in
.onCallEnded(presentationValidator: { call in call?.state.createdBy?.id == streamVideo.user.id }) { call, dismiss in
if let call {
DemoFeedbackView(call, dismiss: dismiss)
}
Expand All @@ -209,10 +209,10 @@ struct CallContainer: View {
The ViewModifier observes the Call's lifecycle and looks for the following triggering criteria:
- Once the active call has ended
- If the max number of joined participants, during call's duration, grew to more than one
- It will evaluate the `additionalPresentationValidator`
- It will evaluate the `presentationValidator`

Then the modifier will trigger the provided closure and will expect a view that will presented inside the modal.

:::note
The ViewModifier will provide you with a dismiss closure that you can use in your UI to dismiss the modal.
:::
:::

0 comments on commit 9119afb

Please sign in to comment.