show black friday banner on change log widget

This commit is contained in:
ashilkn 2023-11-17 15:37:37 +05:30
parent 9c5560c8df
commit dcf2b11cdc
3 changed files with 61 additions and 31 deletions

View file

@ -5,8 +5,10 @@ import 'package:photos/theme/ente_theme.dart';
import 'package:photos/ui/components/buttons/button_widget.dart';
import 'package:photos/ui/components/divider_widget.dart';
import 'package:photos/ui/components/models/button_type.dart';
import "package:photos/ui/components/notification_widget.dart";
import 'package:photos/ui/components/title_bar_title_widget.dart';
import 'package:photos/ui/notification/update/change_log_entry.dart';
import "package:photos/utils/black_friday_util.dart";
import "package:url_launcher/url_launcher_string.dart";
class ChangeLogPage extends StatefulWidget {
@ -64,6 +66,26 @@ class _ChangeLogPageState extends State<ChangeLogPage> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
shouldShowBfBanner()
? Padding(
padding: const EdgeInsets.only(bottom: 8),
child: NotificationWidget(
isBlackFriday: true,
startIcon: Icons.celebration,
actionIcon: Icons.arrow_forward_outlined,
text: S.of(context).blackFridaySale,
subText: S.of(context).upto50OffUntil4thDec,
type: NotificationType.goldenBanner,
onTap: () async {
launchUrlString(
"https://ente.io/blackfriday",
mode: LaunchMode.platformDefault,
);
},
),
)
: const SizedBox.shrink(),
ButtonWidget(
buttonType: ButtonType.trailingIconPrimary,
buttonSize: ButtonSize.large,
@ -89,19 +111,23 @@ class _ChangeLogPageState extends State<ChangeLogPage> {
// await UpdateService.instance.launchReviewUrl();
// },
// ),
ButtonWidget(
buttonType: ButtonType.trailingIconSecondary,
buttonSize: ButtonSize.large,
labelText: "Join the ente community",
icon: Icons.people_alt_rounded,
iconColor: enteColorScheme.primary500,
onTap: () async {
launchUrlString(
"https://ente.io/community",
mode: LaunchMode.externalApplication,
);
},
),
shouldShowBfBanner()
? const SizedBox.shrink()
: ButtonWidget(
buttonType: ButtonType.trailingIconSecondary,
buttonSize: ButtonSize.large,
labelText: "Join the ente community",
icon: Icons.people_alt_rounded,
iconColor: enteColorScheme.primary500,
onTap: () async {
launchUrlString(
"https://ente.io/community",
mode: LaunchMode.externalApplication,
);
},
),
const SizedBox(height: 8),
],
),

View file

@ -9,7 +9,6 @@ import 'package:photos/events/opened_settings_event.dart';
import "package:photos/generated/l10n.dart";
import 'package:photos/services/feature_flag_service.dart';
import "package:photos/services/storage_bonus_service.dart";
import "package:photos/services/user_service.dart";
import 'package:photos/theme/colors.dart';
import 'package:photos/theme/ente_theme.dart';
import "package:photos/ui/components/notification_widget.dart";
@ -28,6 +27,7 @@ import 'package:photos/ui/settings/storage_card_widget.dart';
import 'package:photos/ui/settings/support_section_widget.dart';
import 'package:photos/ui/settings/theme_switch_widget.dart';
import "package:photos/ui/sharing/verify_identity_dialog.dart";
import "package:photos/utils/black_friday_util.dart";
import "package:photos/utils/navigation_util.dart";
import "package:url_launcher/url_launcher_string.dart";
@ -188,23 +188,6 @@ class SettingsPage extends StatelessWidget {
);
}
bool shouldShowBfBanner() {
if (!Platform.isAndroid && !kDebugMode) {
return false;
}
// if date is after 5th of December 2023, 00:00:00, hide banner
if (DateTime.now().isAfter(DateTime(2023, 12, 5))) {
return false;
}
// if coupon is already applied, can hide the banner
return (UserService.instance
.getCachedUserDetails()
?.bonusData
?.getAddOnBonuses()
.isEmpty ??
true);
}
Future<void> _showVerifyIdentityDialog(BuildContext context) async {
await showDialog(
context: context,

View file

@ -0,0 +1,21 @@
import "dart:io";
import "package:flutter/foundation.dart";
import "package:photos/services/user_service.dart";
bool shouldShowBfBanner() {
if (!Platform.isAndroid && !kDebugMode) {
return false;
}
// if date is after 5th of December 2023, 00:00:00, hide banner
if (DateTime.now().isAfter(DateTime(2023, 12, 5))) {
return false;
}
// if coupon is already applied, can hide the banner
return (UserService.instance
.getCachedUserDetails()
?.bonusData
?.getAddOnBonuses()
.isEmpty ??
true);
}