Merge pull request #821 from ente-io/custom_title_widget

Update delete album copy
This commit is contained in:
Neeraj Gupta 2023-01-26 11:17:30 +05:30 committed by GitHub
commit 6e6c2fb075
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 12 deletions

View file

@ -11,6 +11,8 @@ import 'package:photos/models/magic_metadata.dart';
import 'package:photos/services/collections_service.dart';
import 'package:photos/services/hidden_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/action_sheet_widget.dart';
import 'package:photos/ui/components/button_widget.dart';
import 'package:photos/ui/components/models/button_type.dart';
@ -269,6 +271,7 @@ class CollectionActions {
BuildContext bContext,
Collection collection,
) async {
final textTheme = getEnteTextTheme(bContext);
final currentUserID = Configuration.instance.getUserID()!;
if (collection.owner!.id != currentUserID) {
throw AssertionError("Can not delete album owned by others");
@ -321,10 +324,24 @@ class CollectionActions {
isInAlert: true,
),
],
title: "Delete album?",
body: "This album will be deleted. Do you also want to delete the "
"photos (and videos) that are present in this album?",
bodyHighlight: "They will be deleted from all albums.",
bodyWidget: RichText(
text: TextSpan(
style: textTheme.body.copyWith(color: textMutedDark),
children: <TextSpan>[
const TextSpan(
text: 'Also delete the photos (and videos) present in this '
'album from ',
),
TextSpan(
text: 'all',
style: textTheme.body.copyWith(color: textBaseDark),
),
const TextSpan(
text: ' other albums they are part of?',
),
],
),
),
actionSheetType: ActionSheetType.defaultActionSheet,
);
if (actionResult != null && actionResult == ButtonAction.error) {

View file

@ -23,6 +23,7 @@ Future<ButtonAction?> showActionSheet({
bool isDismissible = true,
bool isCheckIconGreen = false,
String? title,
Widget? bodyWidget,
String? body,
String? bodyHighlight,
}) {
@ -36,6 +37,7 @@ Future<ButtonAction?> showActionSheet({
builder: (_) {
return ActionSheetWidget(
title: title,
bodyWidget: bodyWidget,
body: body,
bodyHighlight: bodyHighlight,
actionButtons: buttons,
@ -48,6 +50,7 @@ Future<ButtonAction?> showActionSheet({
class ActionSheetWidget extends StatelessWidget {
final String? title;
final Widget? bodyWidget;
final String? body;
final String? bodyHighlight;
final List<ButtonWidget> actionButtons;
@ -59,6 +62,7 @@ class ActionSheetWidget extends StatelessWidget {
required this.actionSheetType,
required this.isCheckIconGreen,
this.title,
this.bodyWidget,
this.body,
this.bodyHighlight,
super.key,
@ -66,7 +70,8 @@ class ActionSheetWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final isTitleAndBodyNull = title == null && body == null;
final isTitleAndBodyNull =
title == null && bodyWidget == null && body == null;
final blur = MediaQuery.of(context).platformBrightness == Brightness.light
? blurMuted
: blurBase;
@ -103,6 +108,7 @@ class ActionSheetWidget extends StatelessWidget {
padding: const EdgeInsets.only(bottom: 28),
child: ContentContainerWidget(
title: title,
bodyWidget: bodyWidget,
body: body,
bodyHighlight: bodyHighlight,
actionSheetType: actionSheetType,
@ -125,14 +131,17 @@ class ActionSheetWidget extends StatelessWidget {
class ContentContainerWidget extends StatelessWidget {
final String? title;
final Widget? bodyWidget;
final String? body;
final String? bodyHighlight;
final ActionSheetType actionSheetType;
final bool isCheckIconGreen;
const ContentContainerWidget({
required this.actionSheetType,
required this.isCheckIconGreen,
this.title,
this.bodyWidget,
this.body,
this.bodyHighlight,
super.key,
@ -141,6 +150,8 @@ class ContentContainerWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final textTheme = getEnteTextTheme(context);
final bool bodyMissing = body == null && bodyWidget == null;
debugPrint("body missing $bodyMissing");
return Column(
mainAxisSize: MainAxisSize.min,
//todo: set cross axis to center when icon should be shown in place of body
@ -155,17 +166,19 @@ class ContentContainerWidget extends StatelessWidget {
style: textTheme.largeBold
.copyWith(color: textBaseDark), //constant color
),
title == null || body == null
title == null || bodyMissing
? const SizedBox.shrink()
: const SizedBox(height: 19),
actionSheetType == ActionSheetType.defaultActionSheet
? body == null
? bodyMissing
? const SizedBox.shrink()
: Text(
body!,
style: textTheme.body
.copyWith(color: textMutedDark), //constant color
)
: (bodyWidget != null
? bodyWidget!
: Text(
body!,
style: textTheme.body
.copyWith(color: textMutedDark), //constant color
))
: Icon(
Icons.check_outlined,
size: 48,