spotube/lib/components/fallbacks/anonymous_fallback.dart
2025-06-19 23:04:24 +06:00

50 lines
1.5 KiB
Dart

import 'package:auto_route/auto_route.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_undraw/flutter_undraw.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:spotube/extensions/context.dart';
import 'package:spotube/provider/metadata_plugin/auth.dart';
import 'package:spotube/utils/platform.dart';
class AnonymousFallback extends ConsumerWidget {
final Widget? child;
const AnonymousFallback({
super.key,
this.child,
});
@override
Widget build(BuildContext context, ref) {
final isLoggedIn = ref.watch(metadataPluginAuthenticatedProvider);
if (isLoggedIn.isLoading) {
return const Center(child: CircularProgressIndicator());
}
if (isLoggedIn.asData?.value == true && child != null) return child!;
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
spacing: 10,
children: [
Undraw(
illustration: kIsMobile
? UndrawIllustration.accessDenied
: UndrawIllustration.secureLogin,
height: 200 * context.theme.scaling,
color: context.theme.colorScheme.primary,
),
Text(context.l10n.not_logged_in),
Button.primary(
child: Text(context.l10n.login),
onPressed: () => context.navigateTo(const SettingsRoute()),
)
],
),
);
}
}