Skip to content

Commit 0854635

Browse files
authored
request app review once the user has analyzed text three times consecutively #19
request app review once the user has analyzed text three times consecutively #19
2 parents 61d6d36 + 7d4a027 commit 0854635

File tree

4 files changed

+17
-4
lines changed

4 files changed

+17
-4
lines changed

lib/core/utils/snackbar/snackbar_utils.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ abstract final class SnackbarUtils {
99
..hideCurrentSnackBar()
1010
..showSnackBar(
1111
SnackBar(
12-
padding: EdgeInsets.all(context.defaultValue),
12+
padding: context.paddingAllDefault,
1313
content: Text(
1414
message,
1515
style: context.textTheme.bodyLarge?.copyWith(
@@ -18,7 +18,7 @@ abstract final class SnackbarUtils {
1818
),
1919
),
2020
duration: DurationConstants.s4(),
21-
behavior: SnackBarBehavior.fixed,
21+
showCloseIcon: true,
2222
),
2323
);
2424
}

lib/feature/detector/presentation/cubit/detector_cubit.dart

+7-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,13 @@ class DetectorCubit extends Cubit<DetectorState> {
6767

6868
response.fold(
6969
(failure) => emit(state.copyWith(status: FormzStatus.submissionFailure, failure: failure)),
70-
(result) => emit(state.copyWith(status: FormzStatus.submissionSuccess, result: result)),
70+
(result) => emit(
71+
state.copyWith(
72+
status: FormzStatus.submissionSuccess,
73+
result: result,
74+
numberOfRequests: state.numberOfRequests + 1,
75+
),
76+
),
7177
);
7278
}
7379

lib/feature/detector/presentation/cubit/detector_state.dart

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ class DetectorState with _$DetectorState {
66
required FormzStatus status,
77
required UserInputForm userInput,
88
required DetectorEntity result,
9+
required int numberOfRequests,
910
Failure? failure,
1011
bool? hasCameraPermission,
1112
bool? hasGalleryPermission,
@@ -15,5 +16,6 @@ class DetectorState with _$DetectorState {
1516
status: FormzStatus.pure,
1617
userInput: const UserInputForm.pure(),
1718
result: DetectorEntity.initial(),
19+
numberOfRequests: 0,
1820
);
1921
}

lib/feature/detector/presentation/view/detect_view.dart

+6-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'package:gpt_detector/app/l10n/extensions/app_l10n_extensions.dart';
66
import 'package:gpt_detector/app/theme/theme_constants.dart';
77
import 'package:gpt_detector/app/widgets/gpt_elevated_button.dart';
88
import 'package:gpt_detector/core/extensions/context_extensions.dart';
9+
import 'package:gpt_detector/core/utils/rate_app/rate_app.dart';
910
import 'package:gpt_detector/core/utils/snackbar/snackbar_utils.dart';
1011
import 'package:gpt_detector/feature/detector/data/model/detector/detector_model.dart';
1112
import 'package:gpt_detector/feature/detector/presentation/cubit/detector_cubit.dart';
@@ -70,7 +71,7 @@ class _DetectViewBodyState extends State<_DetectViewBody> {
7071
@override
7172
Widget build(BuildContext context) {
7273
return BlocListener<DetectorCubit, DetectorState>(
73-
listener: (context, state) {
74+
listener: (context, state) async {
7475
if (state.status.isSubmissionFailure) {
7576
state.failure!.whenOrNull(
7677
networkFailure: () => SnackbarUtils.showSnackbar(
@@ -89,6 +90,10 @@ class _DetectViewBodyState extends State<_DetectViewBody> {
8990
message: context.l10n.unsupportedLanguage,
9091
);
9192
}
93+
// Show rate app dialog after 3 successful detection requests
94+
if (state.numberOfRequests == 3) {
95+
await RateAppUtils.rateApp();
96+
}
9297
},
9398
child: SafeArea(
9499
child: Padding(

0 commit comments

Comments
 (0)