mirror of
https://gitlab.com/mysocialportal/relatica
synced 2024-10-18 19:23:31 +00:00
73 lines
2 KiB
Dart
73 lines
2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:go_router/go_router.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
import '../routes.dart';
|
|
import '../services/auth_service.dart';
|
|
import '../utils/snackbar_builder.dart';
|
|
|
|
class EditorScreen extends StatefulWidget {
|
|
final String id;
|
|
|
|
const EditorScreen({super.key, this.id = ''});
|
|
|
|
@override
|
|
State<EditorScreen> createState() => _EditorScreenState();
|
|
}
|
|
|
|
class _EditorScreenState extends State<EditorScreen> {
|
|
final controller = TextEditingController();
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final clientResult = context.read<AuthService>().currentClient;
|
|
if (clientResult.isFailure) {
|
|
context.goNamed(ScreenPaths.home);
|
|
}
|
|
final client = clientResult.value;
|
|
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
automaticallyImplyLeading: false,
|
|
title: Text(widget.id.isEmpty ? 'New Post' : 'Edit Post'),
|
|
),
|
|
body: Padding(
|
|
padding: const EdgeInsets.all(8.0),
|
|
child: Center(
|
|
child: Column(
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
children: [
|
|
TextFormField(
|
|
maxLines: 10,
|
|
controller: controller,
|
|
),
|
|
ElevatedButton(
|
|
onPressed: () async {
|
|
if (controller.text.isEmpty) {
|
|
buildSnackbar(
|
|
context, "Can't submit an empty post/comment");
|
|
return;
|
|
}
|
|
final result = await client.createNewPost(controller.text);
|
|
|
|
if (result.isFailure) {
|
|
buildSnackbar(context, 'Error posting: ${result.error}');
|
|
return;
|
|
}
|
|
context.pop();
|
|
},
|
|
child: Text('Submit'),
|
|
),
|
|
ElevatedButton(
|
|
onPressed: () {
|
|
context.pop();
|
|
},
|
|
child: Text('Cancel'),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|