Post reactions

This commit is contained in:
2024-05-20 00:08:20 +08:00
parent 1c7077225e
commit a011278fae
16 changed files with 602 additions and 11 deletions

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:solian/exts.dart';
import 'package:solian/providers/auth.dart';
import 'package:solian/router.dart';
import 'package:solian/services.dart';
@ -29,7 +30,7 @@ class _SignInScreenState extends State<SignInScreen> {
if (messages.last.contains('risk')) {
final ticketId = RegExp(r'ticketId=(\d+)').firstMatch(messages.last);
if (ticketId == null) {
Get.snackbar('errorHappened'.tr, 'Requested to multi-factor authenticate, but the ticket id was not found');
context.showErrorDialog('Requested to multi-factor authenticate, but the ticket id was not found');
}
showDialog(
context: context,

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:solian/exts.dart';
import 'package:solian/router.dart';
import 'package:solian/services.dart';
@ -54,7 +55,7 @@ class _SignUpScreenState extends State<SignUpScreen> {
AppRouter.instance.replaceNamed('auth.sign-in');
});
} else {
Get.snackbar('errorHappened'.tr, resp.bodyString!);
context.showErrorDialog(resp.bodyString);
}
}

View File

@ -1,11 +1,13 @@
import 'package:flutter/material.dart';
import 'package:flutter_animate/flutter_animate.dart';
import 'package:get/get.dart';
import 'package:solian/exts.dart';
import 'package:solian/providers/auth.dart';
import 'package:solian/router.dart';
import 'package:solian/services.dart';
import 'package:solian/widgets/account/account_avatar.dart';
import 'package:solian/shells/nav_shell.dart' as shell;
import 'package:solian/widgets/attachments/attachment_publish.dart';
class PostPublishingScreen extends StatefulWidget {
const PostPublishingScreen({super.key});
@ -19,6 +21,19 @@ class _PostPublishingScreenState extends State<PostPublishingScreen> {
bool _isSubmitting = false;
List<String> _attachments = List.empty();
void showAttachments(BuildContext context) {
showModalBottomSheet(
context: context,
builder: (context) => AttachmentPublishingPopup(
usage: 'i.attachment',
current: _attachments,
onUpdate: (value) => _attachments = value,
),
);
}
void applyPost() async {
final AuthProvider auth = Get.find();
if (!await auth.isAuthorized) return;
@ -32,9 +47,10 @@ class _PostPublishingScreenState extends State<PostPublishingScreen> {
final resp = await client.post('/api/posts', {
'content': _contentController.value.text,
'attachments': _attachments,
});
if (resp.statusCode != 200) {
Get.snackbar('errorHappened'.tr, resp.bodyString!);
context.showErrorDialog(resp.bodyString);
} else {
AppRouter.instance.pop(resp.body);
}
@ -107,7 +123,7 @@ class _PostPublishingScreenState extends State<PostPublishingScreen> {
TextButton(
style: TextButton.styleFrom(shape: const CircleBorder()),
child: const Icon(Icons.camera_alt),
onPressed: () {},
onPressed: () => showAttachments(context),
)
],
),