Skip to content

Commit

Permalink
iOS changes
Browse files Browse the repository at this point in the history
  • Loading branch information
ivan-magda committed Nov 1, 2023
1 parent 9a970cb commit 523e86a
Show file tree
Hide file tree
Showing 13 changed files with 162 additions and 287 deletions.
32 changes: 8 additions & 24 deletions iosHyperskillApp/iosHyperskillApp.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,6 @@
2C96744428883E710091B6C9 /* BlockOptionsExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C96744328883E710091B6C9 /* BlockOptionsExtensions.swift */; };
2C971B852AC2F5DC00868FCE /* ExpandableStepTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C971B842AC2F5DC00868FCE /* ExpandableStepTextView.swift */; };
2C975D662A1128670068FD4E /* FeedbackGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C975D652A1128670068FD4E /* FeedbackGenerator.swift */; };
2C97B0CD298124C1001DF1A0 /* StepQuizHintsFeatureViewStateKsExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C97B0CC298124C1001DF1A0 /* StepQuizHintsFeatureViewStateKsExtensions.swift */; };
2C97E55A2859A2C500EA1A21 /* StepQuizNameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C97E5592859A2C500EA1A21 /* StepQuizNameView.swift */; };
2C97F50A28880B6F00DE77B7 /* SkeletonRoundedButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C97F50928880B6F00DE77B7 /* SkeletonRoundedButton.swift */; };
2C98C7A62850B93100857783 /* alt.css in Resources */ = {isa = PBXBuildFile; fileRef = 2C98C79E2850B93100857783 /* alt.css */; };
Expand Down Expand Up @@ -367,6 +366,7 @@
2CB45762288EC29D007C2D77 /* StepQuizActionButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CB45761288EC29D007C2D77 /* StepQuizActionButtons.swift */; };
2CB45764288ED6D4007C2D77 /* StepQuizActionButtonCodeQuizDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CB45763288ED6D4007C2D77 /* StepQuizActionButtonCodeQuizDelegate.swift */; };
2CB64A3F2ABC47590053A998 /* NotificationsOnboardingOutputProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CB64A3E2ABC47590053A998 /* NotificationsOnboardingOutputProtocol.swift */; };
2CB9537E2AF2474100CA64BA /* StepQuizHintsFeatureStateKsExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CB9537D2AF2474100CA64BA /* StepQuizHintsFeatureStateKsExtensions.swift */; };
2CBC97C62A55435E0078E445 /* StageImplementStageCompletedModalView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CBC97C52A55435E0078E445 /* StageImplementStageCompletedModalView.swift */; };
2CBC97C82A5549F10078E445 /* HypercoinLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CBC97C72A5549F10078E445 /* HypercoinLabel.swift */; };
2CBC97CA2A5553330078E445 /* StageImplementStageCompletedModalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CBC97C92A5553330078E445 /* StageImplementStageCompletedModalViewController.swift */; };
Expand Down Expand Up @@ -580,8 +580,6 @@
E9F2CC5329223C0200691540 /* StyledHostingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9F2CC5229223C0200691540 /* StyledHostingController.swift */; };
E9F2CC552922694F00691540 /* TopicsRepetitionsChartBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9F2CC542922694F00691540 /* TopicsRepetitionsChartBar.swift */; };
E9F504CC2912842D00B788C7 /* StepQuizHintsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9F504CB2912842D00B788C7 /* StepQuizHintsView.swift */; };
E9F504CE2912891900B788C7 /* StepQuizHintsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9F504CD2912891900B788C7 /* StepQuizHintsViewModel.swift */; };
E9F504D029128B5300B788C7 /* StepQuizHintsAssembly.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9F504CF29128B5300B788C7 /* StepQuizHintsAssembly.swift */; };
E9F59B90289FE053001CEA02 /* ProfileSettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9F59B8F289FE053001CEA02 /* ProfileSettingsViewModel.swift */; };
E9F655CA2875914200291143 /* StreakCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9F655C92875914200291143 /* StreakCardView.swift */; };
E9F655D12875B32700291143 /* ProblemOfDayCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9F655D02875B32700291143 /* ProblemOfDayCardView.swift */; };
Expand Down Expand Up @@ -938,7 +936,6 @@
2C96744328883E710091B6C9 /* BlockOptionsExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockOptionsExtensions.swift; sourceTree = "<group>"; };
2C971B842AC2F5DC00868FCE /* ExpandableStepTextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExpandableStepTextView.swift; sourceTree = "<group>"; };
2C975D652A1128670068FD4E /* FeedbackGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbackGenerator.swift; sourceTree = "<group>"; };
2C97B0CC298124C1001DF1A0 /* StepQuizHintsFeatureViewStateKsExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepQuizHintsFeatureViewStateKsExtensions.swift; sourceTree = "<group>"; };
2C97E5592859A2C500EA1A21 /* StepQuizNameView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepQuizNameView.swift; sourceTree = "<group>"; };
2C97F50928880B6F00DE77B7 /* SkeletonRoundedButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SkeletonRoundedButton.swift; sourceTree = "<group>"; };
2C98C79E2850B93100857783 /* alt.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = alt.css; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1004,6 +1001,7 @@
2CB45761288EC29D007C2D77 /* StepQuizActionButtons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepQuizActionButtons.swift; sourceTree = "<group>"; };
2CB45763288ED6D4007C2D77 /* StepQuizActionButtonCodeQuizDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepQuizActionButtonCodeQuizDelegate.swift; sourceTree = "<group>"; };
2CB64A3E2ABC47590053A998 /* NotificationsOnboardingOutputProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationsOnboardingOutputProtocol.swift; sourceTree = "<group>"; };
2CB9537D2AF2474100CA64BA /* StepQuizHintsFeatureStateKsExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepQuizHintsFeatureStateKsExtensions.swift; sourceTree = "<group>"; };
2CBC97C52A55435E0078E445 /* StageImplementStageCompletedModalView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StageImplementStageCompletedModalView.swift; sourceTree = "<group>"; };
2CBC97C72A5549F10078E445 /* HypercoinLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HypercoinLabel.swift; sourceTree = "<group>"; };
2CBC97C92A5553330078E445 /* StageImplementStageCompletedModalViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StageImplementStageCompletedModalViewController.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1222,8 +1220,6 @@
E9F2CC5229223C0200691540 /* StyledHostingController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StyledHostingController.swift; sourceTree = "<group>"; };
E9F2CC542922694F00691540 /* TopicsRepetitionsChartBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TopicsRepetitionsChartBar.swift; sourceTree = "<group>"; };
E9F504CB2912842D00B788C7 /* StepQuizHintsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepQuizHintsView.swift; sourceTree = "<group>"; };
E9F504CD2912891900B788C7 /* StepQuizHintsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepQuizHintsViewModel.swift; sourceTree = "<group>"; };
E9F504CF29128B5300B788C7 /* StepQuizHintsAssembly.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepQuizHintsAssembly.swift; sourceTree = "<group>"; };
E9F59B8F289FE053001CEA02 /* ProfileSettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileSettingsViewModel.swift; sourceTree = "<group>"; };
E9F655C92875914200291143 /* StreakCardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StreakCardView.swift; sourceTree = "<group>"; };
E9F655D02875B32700291143 /* ProblemOfDayCardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProblemOfDayCardView.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1500,7 +1496,7 @@
2C306A0D29B4590C0068FF4F /* StageImplementFeatureViewStateKsExtensions.swift */,
2CFD7C67292542FB00902748 /* StepFeatureStateKsExtensions.swift */,
2CFD7C692925447600902748 /* StepQuizFeatureStateKsExtensions.swift */,
2C97B0CC298124C1001DF1A0 /* StepQuizHintsFeatureViewStateKsExtensions.swift */,
2CB9537D2AF2474100CA64BA /* StepQuizHintsFeatureStateKsExtensions.swift */,
E9AD65A9292DC0BE00E574F0 /* TopicsRepetitionsFeatureStateKsExtensions.swift */,
2C54E4212A1F6672003406B9 /* TrackSelectionDetailsFeatureViewStateKsExtensions.swift */,
2C0EB9532A151C2B006DC84B /* TrackSelectionListFeatureViewStateKsExtensions.swift */,
Expand Down Expand Up @@ -3595,17 +3591,6 @@
path = Views;
sourceTree = "<group>";
};
E9A3434E29113F8A00E0C0A4 /* Views */ = {
isa = PBXGroup;
children = (
E9F27D772906447A007F16D7 /* StepQuizHintCardView.swift */,
E9A3434F29113FA400E0C0A4 /* StepQuizHintReactionButtonView.swift */,
E9F504CB2912842D00B788C7 /* StepQuizHintsView.swift */,
E9B2CF5E2822979400B2DC6F /* StepQuizShowHintButton.swift */,
);
path = Views;
sourceTree = "<group>";
};
E9A5B98A2924FACD00EF0F39 /* TopicsRepetitionsCard */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -3747,9 +3732,10 @@
E9F27D7629064456007F16D7 /* StepQuizHints */ = {
isa = PBXGroup;
children = (
E9F504CF29128B5300B788C7 /* StepQuizHintsAssembly.swift */,
E9F504CD2912891900B788C7 /* StepQuizHintsViewModel.swift */,
E9A3434E29113F8A00E0C0A4 /* Views */,
E9F27D772906447A007F16D7 /* StepQuizHintCardView.swift */,
E9A3434F29113FA400E0C0A4 /* StepQuizHintReactionButtonView.swift */,
E9F504CB2912842D00B788C7 /* StepQuizHintsView.swift */,
E9B2CF5E2822979400B2DC6F /* StepQuizShowHintButton.swift */,
);
path = StepQuizHints;
sourceTree = "<group>";
Expand Down Expand Up @@ -4231,7 +4217,6 @@
2C078CE92AE29D0600D97E24 /* StepQuizFillBlanksViewDataMapperCache.swift in Sources */,
E9A6250F28ABAE83009423EE /* OnboardingViewModel.swift in Sources */,
2C0F3CFC2A80A47600947C35 /* BadgeDetailsModalView.swift in Sources */,
E9F504D029128B5300B788C7 /* StepQuizHintsAssembly.swift in Sources */,
E97BEA1E2977D26F00348EEC /* TopicCompletedModalViewController.swift in Sources */,
2CEEE03128916A3100282849 /* ProblemOfDayAssembly.swift in Sources */,
2C7CB66F2ADFB96F006F78DA /* StepQuizFillBlanksView.swift in Sources */,
Expand Down Expand Up @@ -4281,7 +4266,6 @@
2C1F5879280D2D1300372A37 /* WebOAuthURLParser.swift in Sources */,
E99B21892887E9DA006A6154 /* StepQuizTableSkeletonView.swift in Sources */,
E9F2CC552922694F00691540 /* TopicsRepetitionsChartBar.swift in Sources */,
2C97B0CD298124C1001DF1A0 /* StepQuizHintsFeatureViewStateKsExtensions.swift in Sources */,
E94BB04A2A9DFAD700736B7C /* StepQuizParsonsViewModel.swift in Sources */,
2C5B2A1D286595960097B270 /* CodeCompletionTableViewCell.swift in Sources */,
2C27C77E28773042006A641A /* NukeManager.swift in Sources */,
Expand Down Expand Up @@ -4357,6 +4341,7 @@
2CE31F4D27F1E0C8008EEE66 /* AppAssembly.swift in Sources */,
2CCF3B5A280050890075D12C /* DeviceInfo.swift in Sources */,
E9D90905289814AA00D0EE91 /* NotificationsRegistrationService.swift in Sources */,
2CB9537E2AF2474100CA64BA /* StepQuizHintsFeatureStateKsExtensions.swift in Sources */,
2C963BCA2812D3550036DD53 /* ProfileSettingsView.swift in Sources */,
2C772E7D28ABB4E500A58758 /* AppleIDSocialAuthSDKProvider.swift in Sources */,
2C963BCC2812D9330036DD53 /* ProfileSettingsAssembly.swift in Sources */,
Expand Down Expand Up @@ -4540,7 +4525,6 @@
2C20FBAC284F1964006D879E /* HTMLExtractor.swift in Sources */,
2C97E55A2859A2C500EA1A21 /* StepQuizNameView.swift in Sources */,
2C2ECCA7288C0BF7008DDCBA /* View+ConditionalViewModifier.swift in Sources */,
E9F504CE2912891900B788C7 /* StepQuizHintsViewModel.swift in Sources */,
E9B3A18C2828093800FE248B /* StepQuizActionButton.swift in Sources */,
2C93C2D2292E574F004D1861 /* HyperskillSentryLevel+SentryLevel.swift in Sources */,
2C5CA2442A202F1400DBF2F9 /* ProjectSelectionDetailsSkeletonView.swift in Sources */,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import Foundation
import shared

extension StepQuizHintsFeatureStateKs: Equatable {
public static func == (lhs: StepQuizHintsFeatureStateKs, rhs: StepQuizHintsFeatureStateKs) -> Bool {
switch (lhs, rhs) {
case (.idle, .idle):
return true
case (.loading, .loading):
return true
case (.networkError, .networkError):
return true
case (.content(let lhsData), .content(let rhsData)):
return lhsData.isEqual(rhsData)
case (.content, .idle):
return false
case (.content, .loading):
return false
case (.content, .networkError):
return false
case (.networkError, .content):
return false
case (.networkError, .idle):
return false
case (.networkError, .loading):
return false
case (.loading, .content):
return false
case (.loading, .idle):
return false
case (.loading, .networkError):
return false
case (.idle, .content):
return false
case (.idle, .loading):
return false
case (.idle, .networkError):
return false
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,4 @@ struct StepQuizViewData {
let quizName: String?

let feedbackHintText: String?

let stepHasHints: Bool
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@ final class StepQuizViewDataMapper {
stepText: step.block.text,
quizType: quizType,
quizName: nil,
feedbackHintText: nil,
stepHasHints: false
feedbackHintText: nil
)
}

Expand Down Expand Up @@ -65,20 +64,12 @@ final class StepQuizViewDataMapper {
}
}()

let stepHasHints: Bool = {
guard let hintsStatistic = step.commentsStatistics.first(where: { $0.thread == CommentThread.hint }) else {
return false
}
return hintsStatistic.totalCount > 0
}()

return StepQuizViewData(
formattedStats: formattedStats,
stepText: step.block.text,
quizType: quizType,
quizName: quizName,
feedbackHintText: feedbackHintText,
stepHasHints: stepHasHints
feedbackHintText: feedbackHintText
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,17 @@ struct StepQuizView: View {
onExpandButtonTap: viewModel.logClickedStepTextDetailsEvent
)

if viewData.stepHasHints {
StepQuizHintsAssembly(
stepID: viewModel.step.id,
stepRoute: viewModel.stepRoute
).makeModule()
}
StepQuizHintsView(
state: viewModel.state.stepQuizHintsState,
onNewMessage: { [weak viewModel] message in
guard let viewModel else {
return
}

viewModel.onNewMessage(StepQuizFeatureMessageStepQuizHintsMessage(message: message))
}
)
.equatable()

buildQuizContent(
state: viewModel.state,
Expand Down Expand Up @@ -306,6 +311,11 @@ struct StepQuizView: View {
let assembly = StepAssembly(stepRoute: navigateToStepScreenViewAction.stepRoute)
stackRouter.pushViewController(assembly.makeModule())
}
case .stepQuizHintsViewAction(let stepQuizHintsViewAction):
switch StepQuizHintsFeatureActionViewActionKs(stepQuizHintsViewAction.viewAction) {
case .showNetworkError:
ProgressHUD.showError(status: Strings.Common.connectionError)
}
}
}
}
Expand Down

This file was deleted.

Loading

0 comments on commit 523e86a

Please sign in to comment.