Auth check

This commit is contained in:
2024-12-08 15:25:59 +08:00
parent 67feaacf5a
commit 49d1d607ce
7 changed files with 145 additions and 2 deletions

View File

@ -13,6 +13,7 @@ import 'package:surface/widgets/account/account_select.dart';
import 'package:surface/widgets/app_bar_leading.dart';
import 'package:surface/widgets/dialog.dart';
import 'package:surface/widgets/loading_indicator.dart';
import 'package:surface/widgets/unauthorized_hint.dart';
import 'package:uuid/uuid.dart';
import '../providers/sn_network.dart';
@ -34,6 +35,12 @@ class _ChatScreenState extends State<ChatScreen> {
Map<int, SnChatMessage>? _lastMessages;
void _refreshChannels() {
final ua = context.read<UserProvider>();
if (!ua.isAuthorized) {
setState(() => _isBusy = false);
return;
}
final chan = context.read<ChatChannelProvider>();
chan.fetchChannels().listen((channels) async {
final lastMessages = await chan.getLastMessages(channels);
@ -112,6 +119,18 @@ class _ChatScreenState extends State<ChatScreen> {
final ud = context.read<UserDirectoryProvider>();
final ua = context.read<UserProvider>();
if (!ua.isAuthorized) {
return Scaffold(
appBar: AppBar(
leading: AutoAppBarLeading(),
title: Text('screenChat').tr(),
),
body: Center(
child: UnauthorizedHint(),
),
);
}
return Scaffold(
appBar: AppBar(
leading: AutoAppBarLeading(),

View File

@ -12,6 +12,9 @@ import 'package:surface/widgets/app_bar_leading.dart';
import 'package:surface/widgets/dialog.dart';
import 'package:surface/widgets/loading_indicator.dart';
import '../providers/userinfo.dart';
import '../widgets/unauthorized_hint.dart';
const kFriendStatus = {
0: 'friendStatusPending',
1: 'friendStatusActive',
@ -34,6 +37,9 @@ class _FriendScreenState extends State<FriendScreen> {
List<SnRelationship> _blocks = List.empty();
Future<void> _fetchRelations() async {
final ua = context.read<UserProvider>();
if (!ua.isAuthorized) return;
setState(() => _isBusy = true);
try {
@ -51,6 +57,9 @@ class _FriendScreenState extends State<FriendScreen> {
}
Future<void> _fetchRequests() async {
final ua = context.read<UserProvider>();
if (!ua.isAuthorized) return;
setState(() => _isBusy = true);
try {
@ -68,6 +77,9 @@ class _FriendScreenState extends State<FriendScreen> {
}
Future<void> _fetchBlocks() async {
final ua = context.read<UserProvider>();
if (!ua.isAuthorized) return;
setState(() => _isBusy = true);
try {
@ -165,6 +177,20 @@ class _FriendScreenState extends State<FriendScreen> {
@override
Widget build(BuildContext context) {
final ua = context.read<UserProvider>();
if (!ua.isAuthorized) {
return Scaffold(
appBar: AppBar(
leading: AutoAppBarLeading(),
title: Text('screenFriend').tr(),
),
body: Center(
child: UnauthorizedHint(),
),
);
}
return Scaffold(
appBar: AppBar(
leading: AutoAppBarLeading(),

View File

@ -17,6 +17,9 @@ import 'package:surface/widgets/markdown_content.dart';
import 'package:surface/widgets/post/post_item.dart';
import 'package:very_good_infinite_list/very_good_infinite_list.dart';
import '../providers/userinfo.dart';
import '../widgets/unauthorized_hint.dart';
class NotificationScreen extends StatefulWidget {
const NotificationScreen({super.key});
@ -40,6 +43,9 @@ class _NotificationScreenState extends State<NotificationScreen> {
};
Future<void> _fetchNotifications() async {
final ua = context.read<UserProvider>();
if (!ua.isAuthorized) return;
setState(() => _isBusy = true);
try {
@ -62,6 +68,9 @@ class _NotificationScreenState extends State<NotificationScreen> {
}
void _markAllAsRead() async {
final ua = context.read<UserProvider>();
if (!ua.isAuthorized) return;
if (_notifications.isEmpty) return;
final confirm = await context.showConfirmDialog(
@ -101,6 +110,9 @@ class _NotificationScreenState extends State<NotificationScreen> {
}
void _markOneAsRead(SnNotification notification) async {
final ua = context.read<UserProvider>();
if (!ua.isAuthorized) return;
if (notification.readAt != null) return;
setState(() => _isSubmitting = true);
@ -131,6 +143,20 @@ class _NotificationScreenState extends State<NotificationScreen> {
@override
Widget build(BuildContext context) {
final ua = context.read<UserProvider>();
if (!ua.isAuthorized) {
return Scaffold(
appBar: AppBar(
leading: AutoAppBarLeading(),
title: Text('screenNotification').tr(),
),
body: Center(
child: UnauthorizedHint(),
),
);
}
return Scaffold(
appBar: AppBar(
leading: AutoAppBarLeading(),

View File

@ -13,6 +13,9 @@ import 'package:surface/widgets/dialog.dart';
import 'package:surface/widgets/loading_indicator.dart';
import 'package:surface/widgets/universal_image.dart';
import '../providers/userinfo.dart';
import '../widgets/unauthorized_hint.dart';
class RealmScreen extends StatefulWidget {
const RealmScreen({super.key});
@ -27,6 +30,9 @@ class _RealmScreenState extends State<RealmScreen> {
List<SnRealm>? _realms;
Future<void> _fetchRealms() async {
final ua = context.read<UserProvider>();
if (!ua.isAuthorized) return;
setState(() => _isBusy = true);
try {
final sn = context.read<SnNetworkProvider>();
@ -75,6 +81,19 @@ class _RealmScreenState extends State<RealmScreen> {
@override
Widget build(BuildContext context) {
final sn = context.read<SnNetworkProvider>();
final ua = context.read<UserProvider>();
if (!ua.isAuthorized) {
return Scaffold(
appBar: AppBar(
leading: AutoAppBarLeading(),
title: Text('screenRealm').tr(),
),
body: Center(
child: UnauthorizedHint(),
),
);
}
return Scaffold(
appBar: AppBar(