2022-08-11 12:28:06 +00:00
|
|
|
import 'package:flutter/material.dart';
|
2023-07-03 07:00:05 +00:00
|
|
|
import "package:logging/logging.dart";
|
2023-04-05 09:50:48 +00:00
|
|
|
import "package:photos/generated/l10n.dart";
|
2023-08-25 04:39:30 +00:00
|
|
|
import 'package:photos/models/collection/collection.dart';
|
|
|
|
import 'package:photos/models/collection/collection_items.dart';
|
2023-07-03 07:00:05 +00:00
|
|
|
import "package:photos/services/collections_service.dart";
|
2023-06-23 11:42:22 +00:00
|
|
|
import "package:photos/ui/components/buttons/icon_button_widget.dart";
|
2023-07-03 07:00:05 +00:00
|
|
|
import "package:photos/ui/viewer/gallery/collection_page.dart";
|
|
|
|
import "package:photos/utils/dialog_util.dart";
|
|
|
|
import "package:photos/utils/navigation_util.dart";
|
2022-08-11 12:28:06 +00:00
|
|
|
|
2023-08-25 04:31:03 +00:00
|
|
|
class NewAlbumIcon extends StatelessWidget {
|
|
|
|
const NewAlbumIcon({Key? key}) : super(key: key);
|
2022-08-11 12:28:06 +00:00
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
2023-06-23 11:42:22 +00:00
|
|
|
return IconButtonWidget(
|
|
|
|
icon: Icons.add_rounded,
|
2023-07-03 09:47:32 +00:00
|
|
|
iconButtonType: IconButtonType.secondary,
|
2022-08-11 12:28:06 +00:00
|
|
|
onTap: () async {
|
2023-07-03 07:00:05 +00:00
|
|
|
final result = await showTextInputDialog(
|
2022-08-11 12:28:06 +00:00
|
|
|
context,
|
2023-07-03 07:00:05 +00:00
|
|
|
title: S.of(context).newAlbum,
|
|
|
|
submitButtonLabel: S.of(context).create,
|
|
|
|
hintText: S.of(context).enterAlbumName,
|
|
|
|
alwaysShowSuccessState: false,
|
|
|
|
initialValue: "",
|
|
|
|
textCapitalization: TextCapitalization.words,
|
|
|
|
onSubmit: (String text) async {
|
|
|
|
// indicates user cancelled the rename request
|
|
|
|
if (text.trim() == "") {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
final Collection c =
|
|
|
|
await CollectionsService.instance.createAlbum(text);
|
|
|
|
routeToPage(
|
2023-07-03 08:24:49 +00:00
|
|
|
context,
|
|
|
|
CollectionPage(CollectionWithThumbnail(c, null)),
|
|
|
|
);
|
2023-07-03 07:00:05 +00:00
|
|
|
} catch (e, s) {
|
|
|
|
Logger("CreateNewAlbumIcon")
|
|
|
|
.severe("Failed to rename album", e, s);
|
|
|
|
rethrow;
|
|
|
|
}
|
|
|
|
},
|
2023-06-23 11:42:22 +00:00
|
|
|
);
|
2023-07-03 07:00:05 +00:00
|
|
|
if (result is Exception) {
|
|
|
|
showGenericErrorDialog(context: context);
|
|
|
|
}
|
2022-08-11 12:28:06 +00:00
|
|
|
},
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|