Update change log (#1511)

This commit is contained in:
Vishnu Mohandas 2023-11-17 16:38:54 +05:30 committed by GitHub
commit e99544e335
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 99 additions and 55 deletions

View file

@ -1,6 +1,24 @@
# CHANGELOG # CHANGELOG
## v0.7.118
### Added
* #### Explore with the new Search Tab ✨
Introducing a dedicated search tab with distinct sections for effortless discovery.
You can now discover items that come under different Locations, Moments, Contacts, Photo descriptions, Albums and File types with ease.
* #### Black Friday Sale 🎉
You can now purchase Ente's plans for 3 years at 30% off and 5 years at 50% off.
The storage you purchase will be stacked on top of your current plan.
This is the lowest our prices will ever be, so do consider upgrading!
## v0.7.82 ## v0.7.82
### Added ### Added

View file

@ -16,7 +16,7 @@ class UpdateService {
static final UpdateService instance = UpdateService._privateConstructor(); static final UpdateService instance = UpdateService._privateConstructor();
static const kUpdateAvailableShownTimeKey = "update_available_shown_time_key"; static const kUpdateAvailableShownTimeKey = "update_available_shown_time_key";
static const changeLogVersionKey = "update_change_log_key"; static const changeLogVersionKey = "update_change_log_key";
static const currentChangeLogVersion = 12; static const currentChangeLogVersion = 13;
LatestVersionInfo? _latestVersion; LatestVersionInfo? _latestVersion;
final _logger = Logger("UpdateService"); final _logger = Logger("UpdateService");

View file

@ -1,12 +1,15 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import "package:flutter_animate/flutter_animate.dart";
import "package:photos/generated/l10n.dart"; import "package:photos/generated/l10n.dart";
import 'package:photos/services/update_service.dart'; import 'package:photos/services/update_service.dart';
import 'package:photos/theme/ente_theme.dart'; import 'package:photos/theme/ente_theme.dart';
import 'package:photos/ui/components/buttons/button_widget.dart'; import 'package:photos/ui/components/buttons/button_widget.dart';
import 'package:photos/ui/components/divider_widget.dart'; import 'package:photos/ui/components/divider_widget.dart';
import 'package:photos/ui/components/models/button_type.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/components/title_bar_title_widget.dart';
import 'package:photos/ui/notification/update/change_log_entry.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"; import "package:url_launcher/url_launcher_string.dart";
class ChangeLogPage extends StatefulWidget { class ChangeLogPage extends StatefulWidget {
@ -64,6 +67,36 @@ class _ChangeLogPageState extends State<ChangeLogPage> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
shouldShowBfBanner()
? RepaintBoundary(
child: 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,
);
},
),
)
.animate(
onPlay: (controller) => controller.repeat(),
)
.shimmer(
duration: 1000.ms,
delay: 3200.ms,
size: 0.6,
),
)
: const SizedBox.shrink(),
ButtonWidget( ButtonWidget(
buttonType: ButtonType.trailingIconPrimary, buttonType: ButtonType.trailingIconPrimary,
buttonSize: ButtonSize.large, buttonSize: ButtonSize.large,
@ -89,19 +122,23 @@ class _ChangeLogPageState extends State<ChangeLogPage> {
// await UpdateService.instance.launchReviewUrl(); // await UpdateService.instance.launchReviewUrl();
// }, // },
// ), // ),
ButtonWidget(
buttonType: ButtonType.trailingIconSecondary, shouldShowBfBanner()
buttonSize: ButtonSize.large, ? const SizedBox.shrink()
labelText: "Join the ente community", : ButtonWidget(
icon: Icons.people_alt_rounded, buttonType: ButtonType.trailingIconSecondary,
iconColor: enteColorScheme.primary500, buttonSize: ButtonSize.large,
onTap: () async { labelText: "Join the ente community",
launchUrlString( icon: Icons.people_alt_rounded,
"https://ente.io/community", iconColor: enteColorScheme.primary500,
mode: LaunchMode.externalApplication, onTap: () async {
); launchUrlString(
}, "https://ente.io/community",
), mode: LaunchMode.externalApplication,
);
},
),
const SizedBox(height: 8), const SizedBox(height: 8),
], ],
), ),
@ -118,35 +155,20 @@ class _ChangeLogPageState extends State<ChangeLogPage> {
final List<ChangeLogEntry> items = []; final List<ChangeLogEntry> items = [];
items.add( items.add(
ChangeLogEntry( ChangeLogEntry(
"Hidden albums ✨", "Explore with the new Search Tab ✨",
'You can now hide albums, just like individual memories.\n', 'Introducing a dedicated search tab with distinct sections for effortless discovery.\n'
'\nYou can now discover items that come under different Locations, Moments, Contacts, Photo descriptions, Albums and File types with ease.\n',
), ),
); );
items.add( items.add(
ChangeLogEntry( ChangeLogEntry(
"Album improvements ✨", "Black Friday Sale 🎉",
'You can now pin your favourite albums, and set cover photos for them.\n' "You can now purchase Ente's plans for 3 years at 30% off and 5 years at 50% off!\n"
'\nWe have also added a way to first create empty albums, and then add photos to it, both from ente and your device gallery.\n'), '\nThe storage you purchase will be stacked on top of your current plan.\n'
); '\nThis is the lowest our prices will ever be, so do consider upgrading!\n',
items.add(
ChangeLogEntry(
"Email verification ✨",
'We have now made email verification optional, so you can sign in with'
' just your email address and password, without waiting for a verification code.\n'
'\nYou can opt in / out of email verification from Settings > Security.\n',
), ),
); );
items.add(
ChangeLogEntry(
"Bug fixes & other enhancements",
'We have squashed a few pesky bugs that were reported by our community,'
'and have improved the experience for albums and quick links.\n'
'\nIf you would like to help us improve ente, come join the ente community!',
isFeature: false,
),
);
return Container( return Container(
padding: const EdgeInsets.only(left: 16), padding: const EdgeInsets.only(left: 16),
child: Scrollbar( child: Scrollbar(

View file

@ -9,7 +9,6 @@ import 'package:photos/events/opened_settings_event.dart';
import "package:photos/generated/l10n.dart"; import "package:photos/generated/l10n.dart";
import 'package:photos/services/feature_flag_service.dart'; import 'package:photos/services/feature_flag_service.dart';
import "package:photos/services/storage_bonus_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/colors.dart';
import 'package:photos/theme/ente_theme.dart'; import 'package:photos/theme/ente_theme.dart';
import "package:photos/ui/components/notification_widget.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/support_section_widget.dart';
import 'package:photos/ui/settings/theme_switch_widget.dart'; import 'package:photos/ui/settings/theme_switch_widget.dart';
import "package:photos/ui/sharing/verify_identity_dialog.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:photos/utils/navigation_util.dart";
import "package:url_launcher/url_launcher_string.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 { Future<void> _showVerifyIdentityDialog(BuildContext context) async {
await showDialog( await showDialog(
context: context, 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);
}

View file

@ -12,7 +12,7 @@ description: ente photos application
# Read more about iOS versioning at # Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 0.7.117+517 version: 0.7.118+518
environment: environment:
sdk: ">=3.0.0 <4.0.0" sdk: ">=3.0.0 <4.0.0"