2025-12-16 18:09:20 +01:00
|
|
|
import 'package:bloc/bloc.dart';
|
2026-01-23 23:21:23 +01:00
|
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
2025-12-16 18:09:20 +01:00
|
|
|
import 'permission_event.dart';
|
|
|
|
|
import 'permission_state.dart';
|
2026-01-23 23:21:23 +01:00
|
|
|
import '../../services/api_client.dart';
|
2025-12-16 18:09:20 +01:00
|
|
|
|
|
|
|
|
class PermissionBloc extends Bloc<PermissionEvent, PermissionState> {
|
2026-01-23 23:21:23 +01:00
|
|
|
final ApiClient apiClient;
|
|
|
|
|
|
|
|
|
|
PermissionBloc(this.apiClient) : super(PermissionInitial()) {
|
2025-12-16 18:09:20 +01:00
|
|
|
on<LoadPermissions>(_onLoadPermissions);
|
|
|
|
|
on<PermissionsReset>(_onPermissionsReset);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void _onLoadPermissions(
|
|
|
|
|
LoadPermissions event,
|
|
|
|
|
Emitter<PermissionState> emit,
|
|
|
|
|
) async {
|
|
|
|
|
emit(PermissionLoading());
|
2026-01-23 23:21:23 +01:00
|
|
|
try {
|
2026-01-23 23:21:46 +01:00
|
|
|
final response = await apiClient.getRaw(
|
|
|
|
|
'/orgs/${event.orgId}/permissions',
|
|
|
|
|
);
|
2026-01-23 23:21:23 +01:00
|
|
|
final capabilities = Capabilities(
|
|
|
|
|
canRead: response['canRead'] ?? false,
|
|
|
|
|
canWrite: response['canWrite'] ?? false,
|
|
|
|
|
canShare: response['canShare'] ?? false,
|
|
|
|
|
canAdmin: response['canAdmin'] ?? false,
|
|
|
|
|
canAnnotate: response['canAnnotate'] ?? false,
|
|
|
|
|
canEdit: response['canEdit'] ?? false,
|
|
|
|
|
);
|
|
|
|
|
emit(PermissionLoaded(capabilities));
|
|
|
|
|
} catch (e) {
|
|
|
|
|
emit(PermissionDenied(e.toString()));
|
|
|
|
|
}
|
2025-12-16 18:09:20 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void _onPermissionsReset(
|
|
|
|
|
PermissionsReset event,
|
|
|
|
|
Emitter<PermissionState> emit,
|
|
|
|
|
) {
|
|
|
|
|
emit(PermissionInitial());
|
|
|
|
|
}
|
|
|
|
|
}
|