import 'package:app_settings/app_settings.dart';
import 'package:comwell_key_app/presentation/base/base_cubit.dart';
import 'package:comwell_key_app/domain/models/app_error.dart';
import 'package:comwell_key_app/utils/secure_storage.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:permission_handler/permission_handler.dart';
part '../../../../.generated/presentation/screens/onboarding/notifications/notification_permission_cubit.freezed.dart';
class NotificationPermissionCubit extends BaseCubit<NotificationPermissionState> {
NotificationPermissionCubit(
this._preferences,
) : super(const NotificationPermissionState()) {
init();
}
final ComwellPreferences _preferences;
int _clickCount = 0;
Future<void> init() async {
await _preferences.setOnboardingHasSeenNotification();
}
Future<void> onAcceptClicked() async {
_clickCount++;
final shouldRedirectToSettings = _clickCount >= 3;
if (shouldRedirectToSettings) {
await AppSettings.openAppSettings(type: AppSettingsType.notification);
} else {
await Permission.notification.request();
}
}
}
@freezed
abstract class NotificationPermissionState with _$NotificationPermissionState {
const factory NotificationPermissionState({
@Default(false) bool isLoading,
@Default(AppError.none) AppError errorType,
}) = _NotificationPermissionState;
}