57 lines
1.5 KiB
Dart
57 lines
1.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import '../../core/errors/failure.dart';
|
|
import '../../core/network/api_handler.dart';
|
|
import 'app_side_panel.dart';
|
|
|
|
void showAccessDeniedSnackBar(BuildContext context, {String? message}) {
|
|
ScaffoldMessenger.of(context).showSnackBar(
|
|
SnackBar(
|
|
content: Row(
|
|
children: [
|
|
const Icon(Icons.block, color: Colors.white, size: 18),
|
|
const SizedBox(width: 8),
|
|
Expanded(
|
|
child: Text(message ?? 'Access denied'),
|
|
),
|
|
],
|
|
),
|
|
backgroundColor: const Color(0xFFDC2626),
|
|
behavior: SnackBarBehavior.floating,
|
|
),
|
|
);
|
|
}
|
|
|
|
void showSidePanelApiError(BuildContext context, Object error) {
|
|
final message = error is Failure
|
|
? (error is ValidationFailure
|
|
? validationErrorMessage(error)
|
|
: error.message)
|
|
: 'Something went wrong. Please try again.';
|
|
showSidePanelSnackBar(context, message);
|
|
}
|
|
|
|
void showApiFailureSnackBar(BuildContext context, Failure failure) {
|
|
if (isForbiddenFailure(failure)) {
|
|
showAccessDeniedSnackBar(context, message: failure.message);
|
|
return;
|
|
}
|
|
|
|
if (isConflictFailure(failure)) {
|
|
ScaffoldMessenger.of(context).showSnackBar(
|
|
SnackBar(content: Text(failure.message)),
|
|
);
|
|
return;
|
|
}
|
|
|
|
ScaffoldMessenger.of(context).showSnackBar(
|
|
SnackBar(
|
|
content: Text(
|
|
failure is ValidationFailure
|
|
? validationErrorMessage(failure)
|
|
: failure.message,
|
|
),
|
|
),
|
|
);
|
|
}
|