fetchProductPermissions method
Fetch permissions from backend
Implementation
Future<Map<String, dynamic>> fetchProductPermissions({
required String tenantId,
required String tenantProductId,
}) async {
const query = r'''
query GetProductPermissions($tenantId: ID!, $tenantProductId: ID!) {
productPermissions(tenantId: $tenantId, tenantProductId: $tenantProductId) {
success
message
productPermissions {
id
tenantRole {
id
roleName
}
feature {
id
featureName
icon {
id
iconName
iconURL
}
}
tenantProductId
tenantId
createdAt
updatedAt
}
total
}
}
''';
try {
final res = await _api.graphql(query, {
'tenantId': tenantId,
'tenantProductId': tenantProductId,
});
final data = res['productPermissions'];
if (data == null || data['success'] != true) {
print('❌ Permission fetch failed: ${data?['message']}');
return {'success': false, 'message': data?['message'] ?? 'Unknown error'};
}
// ✅ Cache permissions locally (clears old ones first)
await _cachePermissions(data['productPermissions'] ?? []);
return {
'success': true,
'permissions': data['productPermissions'] ?? [],
'total': data['total'] ?? 0,
};
} catch (e) {
print('❌ Error fetching permissions: $e');
return {'success': false, 'message': e.toString()};
}
}