Update Qlyra application
Build Android (FCM) / build-android-fcm (push) Canceled after 0s
Build Android / build-android (push) Canceled after 0s
Build iOS / build-ios (push) Canceled after 0s
Build Linux / build-linux (push) Canceled after 0s
Build macOS / build-macos (push) Canceled after 0s
Build Windows / build-windows (push) Canceled after 0s
Release (main) / android (oneme) (push) Canceled after 0s
Release (main) / android (qlyra) (push) Canceled after 0s
Release (main) / windows (push) Canceled after 0s
Release (main) / linux (push) Canceled after 0s
Release (main) / macos (push) Canceled after 0s
Release (main) / ios (push) Canceled after 0s
Release (main) / release (push) Canceled after 0s

This commit is contained in:
sevenhill
2026-08-30 22:53:15 +03:00
parent 116d3fb1d3
commit 50816588e4
4812 changed files with 14559 additions and 403 deletions
+6 -2
View File
@@ -140,8 +140,12 @@ class _UpdateProgressDialogState extends State<_UpdateProgressDialog> {
Navigator.pop(context);
if (!result.ok) {
final l10n = AppLocalizations.of(context)!;
showCustomNotification(context, l10n.updateDownloadFailed);
await openExternalUrl(context, widget.info.url);
if (result.status == UpdateInstallStatus.integrityFailed) {
showCustomNotification(context, l10n.updateIntegrityFailed);
} else {
showCustomNotification(context, l10n.updateDownloadFailed);
await openExternalUrl(context, widget.info.url);
}
}
}
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import '../../core/config/app_shape.dart';
import '../screens/webapp/web_app_security_policy.dart';
String _resourceLabel(PermissionResourceType type) {
if (type == PermissionResourceType.CAMERA) return 'камера';
@@ -14,14 +15,22 @@ String _resourceLabel(PermissionResourceType type) {
Future<PermissionResponse> askWebViewPermission(
BuildContext context,
PermissionRequest request,
) async {
PermissionRequest request, {
required WebAppSecurityPolicy policy,
required Uri? currentUrl,
}) async {
PermissionResponse deny() => PermissionResponse(
resources: request.resources,
action: PermissionResponseAction.DENY,
);
if (!context.mounted) return deny();
if (!context.mounted ||
!policy.allowsPermission(
Uri.parse(request.origin.toString()),
currentUrl,
)) {
return deny();
}
final labels = <String>{
for (final r in request.resources) _resourceLabel(r),