68 lines
2.3 KiB
Dart
68 lines
2.3 KiB
Dart
import 'entitlement_state.dart';
|
|
|
|
/// Strongly typed identifiers for all capabilities that can be gated or regulated.
|
|
enum MotorSignalFeature {
|
|
cloudBackup,
|
|
unlimitedCloudHistory,
|
|
multiDeviceRestore,
|
|
advancedTelemetry,
|
|
advancedAcceleration,
|
|
advancedBraking,
|
|
advancedLean,
|
|
advancedAnalytics,
|
|
unlimitedHistory,
|
|
csvExport,
|
|
pdfExport,
|
|
useMultipleMotorcycles,
|
|
planTrips,
|
|
createGroupRides,
|
|
useAdvancedGroupRideFeatures,
|
|
}
|
|
|
|
/// Centralized domain service determining access to MotorSignal features.
|
|
/// UI and background operations check [canAccess] rather than inspecting raw plan or store fields.
|
|
class FeatureAccessService {
|
|
final EntitlementState _state;
|
|
|
|
const FeatureAccessService(this._state);
|
|
|
|
/// Current underlying entitlement state.
|
|
EntitlementState get state => _state;
|
|
|
|
/// Returns true if the requested [feature] is permitted under current entitlement.
|
|
bool canAccess(MotorSignalFeature feature) {
|
|
switch (feature) {
|
|
case MotorSignalFeature.cloudBackup:
|
|
return _state.canCloudBackup;
|
|
case MotorSignalFeature.unlimitedCloudHistory:
|
|
return _state.canUnlimitedCloudHistory;
|
|
case MotorSignalFeature.multiDeviceRestore:
|
|
return _state.canMultiDeviceRestore;
|
|
case MotorSignalFeature.advancedTelemetry:
|
|
return _state.canAdvancedTelemetry;
|
|
case MotorSignalFeature.advancedAcceleration:
|
|
return _state.canAdvancedAcceleration;
|
|
case MotorSignalFeature.advancedBraking:
|
|
return _state.canAdvancedBraking;
|
|
case MotorSignalFeature.advancedLean:
|
|
return _state.canAdvancedLean;
|
|
case MotorSignalFeature.advancedAnalytics:
|
|
return _state.canAdvancedAnalytics;
|
|
case MotorSignalFeature.unlimitedHistory:
|
|
return _state.canUnlimitedHistory;
|
|
case MotorSignalFeature.csvExport:
|
|
return _state.canExportCsv;
|
|
case MotorSignalFeature.pdfExport:
|
|
return _state.canExportPdf;
|
|
case MotorSignalFeature.useMultipleMotorcycles:
|
|
return _state.canUseMultipleMotorcycles;
|
|
case MotorSignalFeature.planTrips:
|
|
return _state.canPlanTrips;
|
|
case MotorSignalFeature.createGroupRides:
|
|
return _state.canCreateGroupRides;
|
|
case MotorSignalFeature.useAdvancedGroupRideFeatures:
|
|
return _state.canUseAdvancedGroupRideFeatures;
|
|
}
|
|
}
|
|
}
|