feat(auth): refactor token retrieval to use maybeWhen for improved null handling

This commit is contained in:
Nils-Johan Gynther
2026-05-02 09:24:45 +02:00
parent 41ae7d4d06
commit 755258a4bc
2 changed files with 21 additions and 7 deletions
@@ -50,7 +50,6 @@ class _RecipeImportTabState extends ConsumerState<RecipeImportTab> {
if (result == null || result.files.isEmpty) return;
setState(() {
_pickedFile = result.files.first;
_error = null;
});
}
@@ -65,7 +64,10 @@ class _RecipeImportTabState extends ConsumerState<RecipeImportTab> {
setState(() => _isLoading = true);
try {
final token = ref.read(authStateProvider).valueOrNull ??
final token = ref.read(authStateProvider).maybeWhen(
data: (t) => t,
orElse: () => null,
) ??
await ref.read(authStateProvider.future);
final repo = ref.read(importRepositoryProvider);
final result = _method == _Method.file
@@ -24,9 +24,12 @@ class RecipeDetailScreen extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final recipeAsync = ref.watch(recipeDetailProvider(recipeId));
final token = ref.watch(authStateProvider).valueOrNull;
final token = ref.watch(authStateProvider).maybeWhen(
data: (t) => t,
orElse: () => null,
);
final currentUserId = jwtUserId(token);
final recipe = recipeAsync.valueOrNull;
final recipe = recipeAsync.asData?.value;
final isOwner = recipe != null && currentUserId != null && recipe.ownerId == currentUserId;
return Scaffold(
@@ -164,7 +167,10 @@ class RecipeDetailScreen extends ConsumerWidget {
Recipe recipe,
) async {
try {
final token = ref.read(authStateProvider).valueOrNull ??
final token = ref.read(authStateProvider).maybeWhen(
data: (t) => t,
orElse: () => null,
) ??
await ref.read(authStateProvider.future);
await ref.read(recipeRepositoryProvider).setRecipeVisibility(
recipe.id,
@@ -242,7 +248,10 @@ class RecipeDetailScreen extends ConsumerWidget {
if (trimmed.isEmpty) return;
try {
final token = ref.read(authStateProvider).valueOrNull ??
final token = ref.read(authStateProvider).maybeWhen(
data: (t) => t,
orElse: () => null,
) ??
await ref.read(authStateProvider.future);
if (action == _ShareAction.unshare) {
await ref.read(recipeRepositoryProvider).unshareRecipeWithUsername(
@@ -332,7 +341,10 @@ class _DeleteButton extends ConsumerWidget {
if (confirmed != true || !context.mounted) return;
try {
final token = ref.read(authStateProvider).valueOrNull ??
final token = ref.read(authStateProvider).maybeWhen(
data: (t) => t,
orElse: () => null,
) ??
await ref.read(authStateProvider.future);
await ref.read(recipeRepositoryProvider).deleteRecipe(recipe.id,
token: token);