Fix locking out editor buttons while submitting

main
Hank Grabowski 2022-12-17 13:34:47 -05:00
rodzic 266a98d2a9
commit bdbad45770
1 zmienionych plików z 20 dodań i 4 usunięć

Wyświetl plik

@ -26,6 +26,8 @@ class _EditorScreenState extends State<EditorScreen> {
final spoilerController = TextEditingController();
TimelineEntry? parentEntry;
var isSubmitting = false;
bool get isComment => widget.parentId.isNotEmpty;
String get statusType => widget.parentId.isEmpty ? 'Post' : 'Comment';
@ -51,11 +53,17 @@ class _EditorScreenState extends State<EditorScreen> {
buildSnackbar(context, "Can't submit an empty post/comment");
return;
}
setState(() {
isSubmitting = false;
});
final result = await manager.createNewStatus(
contentController.text,
spoilerText: spoilerController.text,
inReplyToId: widget.parentId,
);
setState(() {
isSubmitting = false;
});
if (result.isFailure) {
buildSnackbar(context, 'Error posting: ${result.error}');
@ -85,6 +93,8 @@ class _EditorScreenState extends State<EditorScreen> {
if (isComment && parentEntry != null)
buildCommentPreview(context, parentEntry!),
TextFormField(
readOnly: isSubmitting,
enabled: !isSubmitting,
controller: spoilerController,
decoration: InputDecoration(
labelText: '$statusType Spoiler Text (optional)',
@ -98,6 +108,8 @@ class _EditorScreenState extends State<EditorScreen> {
),
const VerticalPadding(),
TextFormField(
readOnly: isSubmitting,
enabled: !isSubmitting,
maxLines: 10,
controller: contentController,
decoration: InputDecoration(
@ -116,14 +128,18 @@ class _EditorScreenState extends State<EditorScreen> {
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () async => createStatus(context, manager),
onPressed: isSubmitting
? null
: () async => createStatus(context, manager),
child: const Text('Submit'),
),
const HorizontalPadding(),
ElevatedButton(
onPressed: () {
context.pop();
},
onPressed: isSubmitting
? null
: () {
context.pop();
},
child: const Text('Cancel'),
),
],