import 'package:comwell_key_app/base/base_cubit.dart';
import 'package:comwell_key_app/common/const.dart';
import 'package:in_app_update/in_app_update.dart';
import 'package:url_launcher/url_launcher.dart';
part 'force_update_state.dart';
class ForceUpdateCubit extends BaseCubit<ForceUpdateState> {
ForceUpdateCubit() : super(ForceUpdateState.initial());
Future<void> startAndroidUpdate() async {
safeEmit(state.copyWith(isLoading: true, error: null));
try {
final result = await InAppUpdate.checkForUpdate();
if (result.updateAvailability == UpdateAvailability.updateAvailable) {
await InAppUpdate.performImmediateUpdate();
} else {
safeEmit(state.copyWith(error: 'No update available.'));
}
} catch (e, st) {
logError(e, st);
safeEmit(state.copyWith(error: 'Failed to update: $e'));
} finally {
safeEmit(state.copyWith(isLoading: false));
}
}
Future<void> openAppStore() async {
safeEmit(state.copyWith(isLoading: true, error: null));
//TODO: Add app store url to CONSTS
if (await canLaunchUrl(Uri.parse(AppStoreConstants.appStoreUrl))) {
await launchUrl(Uri.parse(AppStoreConstants.appStoreUrl), mode: LaunchMode.externalApplication);
} else {
safeEmit(state.copyWith(error: 'Could not open App Store.'));
}
safeEmit(state.copyWith(isLoading: false));
}
}