feat: Conditionally display Create Bucket option based on user permissions

This commit is contained in:
Vaibhav Surve 2025-09-11 17:45:44 +05:30
parent 229531c5bf
commit bd6f175ca7

View File

@ -16,6 +16,7 @@ import 'package:marco/model/directory/create_bucket_bottom_sheet.dart';
import 'package:marco/view/directory/contact_detail_screen.dart'; import 'package:marco/view/directory/contact_detail_screen.dart';
import 'package:marco/view/directory/manage_bucket_screen.dart'; import 'package:marco/view/directory/manage_bucket_screen.dart';
import 'package:marco/controller/permission_controller.dart'; import 'package:marco/controller/permission_controller.dart';
import 'package:marco/helpers/utils/permission_constants.dart';
class DirectoryView extends StatefulWidget { class DirectoryView extends StatefulWidget {
@override @override
@ -288,7 +289,13 @@ class _DirectoryViewState extends State<DirectoryView> {
), ),
); );
// Create Bucket option // Conditionally show Create Bucket option
if (permissionController
.hasPermission(Permissions.directoryAdmin) ||
permissionController
.hasPermission(Permissions.directoryManager) ||
permissionController
.hasPermission(Permissions.directoryUser)) {
menuItems.add( menuItems.add(
PopupMenuItem<int>( PopupMenuItem<int>(
value: 2, value: 2,
@ -304,11 +311,13 @@ class _DirectoryViewState extends State<DirectoryView> {
), ),
onTap: () { onTap: () {
Future.delayed(Duration.zero, () async { Future.delayed(Duration.zero, () async {
final created = await showModalBottomSheet<bool>( final created =
await showModalBottomSheet<bool>(
context: context, context: context,
isScrollControlled: true, isScrollControlled: true,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
builder: (_) => const CreateBucketBottomSheet(), builder: (_) =>
const CreateBucketBottomSheet(),
); );
if (created == true) { if (created == true) {
await controller.fetchBuckets(); await controller.fetchBuckets();
@ -317,6 +326,7 @@ class _DirectoryViewState extends State<DirectoryView> {
}, },
), ),
); );
}
// Manage Buckets option // Manage Buckets option
menuItems.add( menuItems.add(
@ -355,7 +365,7 @@ class _DirectoryViewState extends State<DirectoryView> {
), ),
); );
// Show Inactive switch // Show Inactive toggle
menuItems.add( menuItems.add(
PopupMenuItem<int>( PopupMenuItem<int>(
value: 0, value: 0,