Skip to content

Commit

Permalink
Merge pull request #1074 from hyperskill/hotfix/1.60.1
Browse files Browse the repository at this point in the history
Hotfix 1.60.1
  • Loading branch information
XanderZhu authored Jun 5, 2024
2 parents 34c5fb1 + d153617 commit 6ee2241
Show file tree
Hide file tree
Showing 15 changed files with 188 additions and 87 deletions.
4 changes: 2 additions & 2 deletions gradle/app.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
minSdk = '24'
targetSdk = '33'
compileSdk = '34'
versionName = '1.60'
versionCode = '455'
versionName = '1.60.1'
versionCode = '457'
4 changes: 2 additions & 2 deletions iosHyperskillApp/NotificationServiceExtension/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleVersion</key>
<string>484</string>
<string>486</string>
<key>CFBundleShortVersionString</key>
<string>1.60</string>
<string>1.60.1</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleExecutable</key>
Expand Down
50 changes: 23 additions & 27 deletions iosHyperskillApp/iosHyperskillApp.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@
2C370439288BE57A008043BF /* StepQuizCodeFullScreenCodeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C370438288BE57A008043BF /* StepQuizCodeFullScreenCodeView.swift */; };
2C37960F2876F36F00C197E2 /* ProfileViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C37960E2876F36F00C197E2 /* ProfileViewData.swift */; };
2C3796122877001700C197E2 /* ProfileHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C3796112877001700C197E2 /* ProfileHeaderView.swift */; };
2C3CE3962C1073990011BECA /* StepToolbarContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C3CE3952C1073990011BECA /* StepToolbarContent.swift */; };
2C3E656D2A12722800BC8DC0 /* TrackSelectionListHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C3E656C2A12722800BC8DC0 /* TrackSelectionListHeaderView.swift */; };
2C3E65702A127F2300BC8DC0 /* BrandLinearGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C3E656F2A127F2300BC8DC0 /* BrandLinearGradient.swift */; };
2C3E65732A1280A500BC8DC0 /* TrackSelectionListHeaderSkeletonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C3E65722A1280A500BC8DC0 /* TrackSelectionListHeaderSkeletonView.swift */; };
Expand Down Expand Up @@ -517,8 +518,8 @@
2CDF14D228EEF9690060D972 /* AppTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CDF14D128EEF9690060D972 /* AppTabBarController.swift */; };
2CDF14D628EF02740060D972 /* StackRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CDF14D528EF02740060D972 /* StackRouter.swift */; };
2CDF14D828EF1E080060D972 /* UINavigationControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CDF14D728EF1E080060D972 /* UINavigationControllerExtensions.swift */; };
2CE0F6EA2BB408160032C439 /* StepTheoryFeedbackModalAssembly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CE0F6E92BB408160032C439 /* StepTheoryFeedbackModalAssembly.swift */; };
2CE0F6EE2BB40B760032C439 /* StepTheoryFeedbackViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CE0F6ED2BB40B760032C439 /* StepTheoryFeedbackViewModel.swift */; };
2CE0F6EA2BB408160032C439 /* StepFeedbackAssembly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CE0F6E92BB408160032C439 /* StepFeedbackAssembly.swift */; };
2CE0F6EE2BB40B760032C439 /* StepFeedbackViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CE0F6ED2BB40B760032C439 /* StepFeedbackViewModel.swift */; };
2CE1C4DF27EDFB3800220041 /* FeatureViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CE1C4DE27EDFB3800220041 /* FeatureViewModel.swift */; };
2CE1E189292CCB450041FE14 /* UIKitIntrospectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CE1E188292CCB450041FE14 /* UIKitIntrospectionView.swift */; };
2CE2817927E8EF1E00641E22 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 2CE2817827E8EF1E00641E22 /* GoogleService-Info.plist */; };
Expand Down Expand Up @@ -918,6 +919,7 @@
2C370438288BE57A008043BF /* StepQuizCodeFullScreenCodeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepQuizCodeFullScreenCodeView.swift; sourceTree = "<group>"; };
2C37960E2876F36F00C197E2 /* ProfileViewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewData.swift; sourceTree = "<group>"; };
2C3796112877001700C197E2 /* ProfileHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileHeaderView.swift; sourceTree = "<group>"; };
2C3CE3952C1073990011BECA /* StepToolbarContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepToolbarContent.swift; sourceTree = "<group>"; };
2C3E656C2A12722800BC8DC0 /* TrackSelectionListHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackSelectionListHeaderView.swift; sourceTree = "<group>"; };
2C3E656F2A127F2300BC8DC0 /* BrandLinearGradient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrandLinearGradient.swift; sourceTree = "<group>"; };
2C3E65722A1280A500BC8DC0 /* TrackSelectionListHeaderSkeletonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackSelectionListHeaderSkeletonView.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1276,8 +1278,8 @@
2CDF14D128EEF9690060D972 /* AppTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppTabBarController.swift; sourceTree = "<group>"; };
2CDF14D528EF02740060D972 /* StackRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StackRouter.swift; sourceTree = "<group>"; };
2CDF14D728EF1E080060D972 /* UINavigationControllerExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UINavigationControllerExtensions.swift; sourceTree = "<group>"; };
2CE0F6E92BB408160032C439 /* StepTheoryFeedbackModalAssembly.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepTheoryFeedbackModalAssembly.swift; sourceTree = "<group>"; };
2CE0F6ED2BB40B760032C439 /* StepTheoryFeedbackViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepTheoryFeedbackViewModel.swift; sourceTree = "<group>"; };
2CE0F6E92BB408160032C439 /* StepFeedbackAssembly.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepFeedbackAssembly.swift; sourceTree = "<group>"; };
2CE0F6ED2BB40B760032C439 /* StepFeedbackViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepFeedbackViewModel.swift; sourceTree = "<group>"; };
2CE1C4DE27EDFB3800220041 /* FeatureViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeatureViewModel.swift; sourceTree = "<group>"; };
2CE1E188292CCB450041FE14 /* UIKitIntrospectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIKitIntrospectionView.swift; sourceTree = "<group>"; };
2CE2817827E8EF1E00641E22 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1855,6 +1857,7 @@
3C00014807122833363E303F /* Search */,
2C9E5E8229B211DD003AEC16 /* StageImplement */,
2CAE8CEE280525A100E6C83D /* Step */,
2CE0F6EC2BB40B570032C439 /* StepFeedback */,
2C41127428376DE3004948A3 /* StepQuiz */,
2CE7B4852AB05AA300DCBE4D /* StepQuizSubmodules */,
E9F655CE2875B30B00291143 /* Streak */,
Expand Down Expand Up @@ -3275,9 +3278,9 @@
2C971B842AC2F5DC00868FCE /* StepExpandableStepTextView.swift */,
2CAE8CF628052F9600E6C83D /* StepHeaderView.swift */,
2C8409522805BF3C009C6BE9 /* StepTheoryContentView.swift */,
2C3CE3952C1073990011BECA /* StepToolbarContent.swift */,
2CAE8CF1280525C900E6C83D /* StepView.swift */,
2CAE8D0A280578A200E6C83D /* BottomControls */,
2CD0BA05298B985A0037479A /* Modals */,
2C70B7622BE0F35900DFC104 /* ToolbarProgress */,
);
path = Views;
Expand Down Expand Up @@ -3564,14 +3567,6 @@
path = Helpers;
sourceTree = "<group>";
};
2CD0BA05298B985A0037479A /* Modals */ = {
isa = PBXGroup;
children = (
2CE0F6EC2BB40B570032C439 /* TheoryFeedback */,
);
path = Modals;
sourceTree = "<group>";
};
2CD20ED22B73481800FB5269 /* ApplicationShortcuts */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -3668,13 +3663,13 @@
path = TabBar;
sourceTree = "<group>";
};
2CE0F6EC2BB40B570032C439 /* TheoryFeedback */ = {
2CE0F6EC2BB40B570032C439 /* StepFeedback */ = {
isa = PBXGroup;
children = (
2CE0F6E92BB408160032C439 /* StepTheoryFeedbackModalAssembly.swift */,
2CE0F6ED2BB40B760032C439 /* StepTheoryFeedbackViewModel.swift */,
2CE0F6E92BB408160032C439 /* StepFeedbackAssembly.swift */,
2CE0F6ED2BB40B760032C439 /* StepFeedbackViewModel.swift */,
);
path = TheoryFeedback;
path = StepFeedback;
sourceTree = "<group>";
};
2CE2817727E8EEDC00641E22 /* Resources */ = {
Expand Down Expand Up @@ -4891,7 +4886,7 @@
2C5F4A5A2971C71200677530 /* GamificationToolbarContent.swift in Sources */,
2C5B2A1F286595AF0097B270 /* CodeCompletionTableViewController.swift in Sources */,
2C8E4FB12848C9050011ADFA /* StepQuizTableSelectColumnsView.swift in Sources */,
2CE0F6EE2BB40B760032C439 /* StepTheoryFeedbackViewModel.swift in Sources */,
2CE0F6EE2BB40B760032C439 /* StepFeedbackViewModel.swift in Sources */,
2CCCA3A12862E62F00D98089 /* StepQuizStringViewData.swift in Sources */,
2C1061A2285C349400EBD614 /* StepQuizChildQuizAssembly.swift in Sources */,
2CD4EDF92B79D51E0091F0B2 /* View+SafeAreaInset.swift in Sources */,
Expand Down Expand Up @@ -4931,6 +4926,7 @@
2C7CB6822ADFDB45006F78DA /* UIFont+SizeOfString.swift in Sources */,
2CC4AAF1280DB513002276A0 /* WebOAuthService.swift in Sources */,
2CF2DA3A27EC5B2D0055426D /* Assembly.swift in Sources */,
2C3CE3962C1073990011BECA /* StepToolbarContent.swift in Sources */,
2C27C77C28772F8A006A641A /* ImageDecoders+SVG.swift in Sources */,
2C8247AF2BB6BAAF00CDD668 /* StepQuizCodeFixCodeMistakesBadge.swift in Sources */,
2CEB50D0288AADA40044F9AB /* StepQuizCodeFullScreenDetailsView.swift in Sources */,
Expand Down Expand Up @@ -5312,7 +5308,7 @@
2C069EB128F03782009A3DA1 /* AnalyticExtensions.swift in Sources */,
2C688C032A4E8F900061AFFD /* ProgressScreenTrackProgressView.swift in Sources */,
2CDA9838294432C900ADE539 /* SkeletonCircleView.swift in Sources */,
2CE0F6EA2BB408160032C439 /* StepTheoryFeedbackModalAssembly.swift in Sources */,
2CE0F6EA2BB408160032C439 /* StepFeedbackAssembly.swift in Sources */,
2C4F63A32A104EA300D4EE39 /* ProjectSelectionListGridSectionSkeletonView.swift in Sources */,
2C70B7642BE0FC4900DFC104 /* SpacebotWowAnimationView.swift in Sources */,
2C2600832A1FE28F00BD3D39 /* TrackSelectionDetailsSkeletonView.swift in Sources */,
Expand Down Expand Up @@ -5421,7 +5417,7 @@
buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 484;
CURRENT_PROJECT_VERSION = 486;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = UJ4KC2QN7B;
GENERATE_INFOPLIST_FILE = NO;
Expand All @@ -5442,7 +5438,7 @@
buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 484;
CURRENT_PROJECT_VERSION = 486;
DEVELOPMENT_TEAM = UJ4KC2QN7B;
GENERATE_INFOPLIST_FILE = NO;
INFOPLIST_FILE = iosHyperskillAppUITests/Info.plist;
Expand All @@ -5463,7 +5459,7 @@
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 484;
CURRENT_PROJECT_VERSION = 486;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = UJ4KC2QN7B;
INFOPLIST_FILE = iosHyperskillAppTests/Info.plist;
Expand All @@ -5484,7 +5480,7 @@
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 484;
CURRENT_PROJECT_VERSION = 486;
DEVELOPMENT_TEAM = UJ4KC2QN7B;
INFOPLIST_FILE = iosHyperskillAppTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
Expand All @@ -5505,7 +5501,7 @@
CODE_SIGN_ENTITLEMENTS = NotificationServiceExtension/NotificationServiceExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 484;
CURRENT_PROJECT_VERSION = 486;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = UJ4KC2QN7B;
INFOPLIST_FILE = NotificationServiceExtension/Info.plist;
Expand Down Expand Up @@ -5534,7 +5530,7 @@
CODE_SIGN_ENTITLEMENTS = NotificationServiceExtension/NotificationServiceExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 484;
CURRENT_PROJECT_VERSION = 486;
DEVELOPMENT_TEAM = UJ4KC2QN7B;
INFOPLIST_FILE = NotificationServiceExtension/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
Expand Down Expand Up @@ -5680,7 +5676,7 @@
CODE_SIGN_ENTITLEMENTS = iosHyperskillApp/iosHyperskillApp.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 484;
CURRENT_PROJECT_VERSION = 486;
DEVELOPMENT_ASSET_PATHS = "\"iosHyperskillApp/Preview Content\"";
DEVELOPMENT_TEAM = UJ4KC2QN7B;
ENABLE_PREVIEWS = YES;
Expand Down Expand Up @@ -5716,7 +5712,7 @@
CODE_SIGN_ENTITLEMENTS = iosHyperskillApp/iosHyperskillApp.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 484;
CURRENT_PROJECT_VERSION = 486;
DEVELOPMENT_ASSET_PATHS = "\"iosHyperskillApp/Preview Content\"";
DEVELOPMENT_TEAM = UJ4KC2QN7B;
ENABLE_PREVIEWS = YES;
Expand Down
4 changes: 2 additions & 2 deletions iosHyperskillApp/iosHyperskillApp/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.60</string>
<string>1.60.1</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
Expand All @@ -34,7 +34,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>484</string>
<string>486</string>
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
<key>FirebaseMessagingAutoInitEnabled</key>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ enum Strings {
static let goToStudyPlan = sharedStrings.go_to_study_plan.localized()
static let progress = sharedStrings.progress.localized()
static let completed = sharedStrings.completed.localized()
static let error = sharedStrings.common_error.localized()
}

// MARK: - Badge -
Expand Down Expand Up @@ -76,14 +77,17 @@ enum Strings {

enum Step {
static let startPracticing = sharedStrings.step_start_practicing_text.localized()
static let stepSkipFailedMessage = sharedStrings.step_skip_failed_message.localized()
}

enum TheoryFeedback {
static let alertTitle = sharedStrings.step_theory_feedback_alert_title.localized()
static let alertHint = sharedStrings.step_theory_feedback_alert_hint.localized()
static let alertCancelButton = sharedStrings.step_theory_feedback_alert_cancel_button.localized()
static let alertSendButton = sharedStrings.step_theory_feedback_alert_send_button.localized()
static let alertSuccessText = sharedStrings.step_theory_feedback_alert_success_text.localized()
}
// MARK: - StepFeedback -

enum StepFeedback {
static let alertTitle = sharedStrings.step_theory_feedback_alert_title.localized()
static let alertHint = sharedStrings.step_theory_feedback_alert_hint.localized()
static let alertCancelButton = sharedStrings.step_theory_feedback_alert_cancel_button.localized()
static let alertSendButton = sharedStrings.step_theory_feedback_alert_send_button.localized()
static let alertSuccessText = sharedStrings.step_theory_feedback_alert_success_text.localized()
}

// MARK: - StepQuiz -
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,22 @@ final class StepViewModel: FeatureViewModel<
)
}

func doShareMenuAction() {
onNewMessage(StepFeatureMessageShareClicked())
}

func doReportMenuAction() {
onNewMessage(StepFeatureMessageReportClicked())
}

func doSkipMenuAction() {
onNewMessage(StepFeatureMessageSkipClicked())
}

func doOpenInWebMenuAction() {
onNewMessage(StepFeatureMessageOpenInWebClicked())
}

func logSpacebotClickedEvent() {
onNewMessage(
StepFeatureMessageStepToolbarMessage(message: StepToolbarFeatureMessageSpacebotClicked())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ struct StepTheoryContentView: View {

let startPracticingButton: StartPracticingButton?

let onTheoryFeedbackButtonTap: () -> Void

var body: some View {
ScrollView {
VStack(alignment: .leading, spacing: appearance.interItemSpacing) {
Expand All @@ -33,15 +31,6 @@ struct StepTheoryContentView: View {
.padding()
}
.safeAreaInsetBottomCompatibility(footer)
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button(
action: onTheoryFeedbackButtonTap,
label: { Image(systemName: "flag") }
)
.disabled(!isStepTextContentLoaded)
}
}
}
}

Expand Down Expand Up @@ -83,8 +72,7 @@ extension StepTheoryContentView {
startPracticingButton: StepTheoryContentView.StartPracticingButton(
isLoading: false,
action: { }
),
onTheoryFeedbackButtonTap: {}
)
)
}
#endif
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import shared
import SwiftUI

// swiftlint:disable function_parameter_count
extension View {
@ViewBuilder
func stepToolbar(
stepState: StepFeatureStepState,
stepMenuActions: Set<StepMenuAction>,
onShareButtonTap: @escaping () -> Void,
onReportButtonTap: @escaping () -> Void,
onSkipButtonTap: @escaping () -> Void,
onOpenInWebButtonTap: @escaping () -> Void
) -> some View {
toolbar {
StepToolbarContent(
disabled: stepState is StepFeatureStepStateIdle || stepState is StepFeatureStepStateLoading,
stepMenuActions: stepMenuActions,
onShareButtonTap: onShareButtonTap,
onReportButtonTap: onReportButtonTap,
onSkipButtonTap: onSkipButtonTap,
onOpenInWebButtonTap: onOpenInWebButtonTap
)
}
}
}
// swiftlint:enable function_parameter_count

private struct StepToolbarContent: ToolbarContent {
let disabled: Bool
let stepMenuActions: Set<StepMenuAction>

let onShareButtonTap: () -> Void
let onReportButtonTap: () -> Void
let onSkipButtonTap: () -> Void
let onOpenInWebButtonTap: () -> Void

var body: some ToolbarContent {
ToolbarItem(placement: .navigationBarTrailing) {
Menu {
if stepMenuActions.contains(.share) {
Button(action: onShareButtonTap) {
Label("Share", systemImage: "square.and.arrow.up")
}
}

if stepMenuActions.contains(.report) {
Button(action: onReportButtonTap) {
Label("Report", systemImage: "flag")
}
}

if stepMenuActions.contains(.skip) {
Button(action: onSkipButtonTap) {
Label("Skip", systemImage: "arrow.right")
}
}

if stepMenuActions.contains(.openInWeb) {
Button(action: onOpenInWebButtonTap) {
Label("Open in Web", systemImage: "safari")
}
}
} label: {
Image(systemName: "ellipsis.circle")
}
.disabled(disabled)
}
}
}
Loading

0 comments on commit 6ee2241

Please sign in to comment.