From 6addc49fc2e0f7f1ea03a244614ef1cedeb99c86 Mon Sep 17 00:00:00 2001 From: ivan2282 Date: Sun, 16 Nov 2025 00:52:10 +0300 Subject: [PATCH] TODO done --- .../settings/export_session_screen.dart | 40 +++++++++---------- lib/token_auth_screen.dart | 4 +- linux/CMakeLists.txt | 11 ++--- linux/flutter/generated_plugin_registrant.cc | 4 -- linux/flutter/generated_plugins.cmake | 1 - macos/Flutter/GeneratedPluginRegistrant.swift | 2 - pubspec.lock | 24 ----------- pubspec.yaml | 3 +- .../flutter/generated_plugin_registrant.cc | 3 -- windows/flutter/generated_plugins.cmake | 1 - 10 files changed, 28 insertions(+), 65 deletions(-) diff --git a/lib/screens/settings/export_session_screen.dart b/lib/screens/settings/export_session_screen.dart index ea242ed..f31afc9 100644 --- a/lib/screens/settings/export_session_screen.dart +++ b/lib/screens/settings/export_session_screen.dart @@ -1,9 +1,10 @@ import 'dart:convert'; +import 'dart:io'; import 'dart:typed_data'; import 'package:flutter/material.dart'; -import 'package:file_saver/file_saver.dart'; +import 'package:path_provider/path_provider.dart'; import 'package:gwid/api_service.dart'; import 'package:gwid/proxy_service.dart'; import 'package:gwid/spoofing_service.dart'; @@ -23,7 +24,6 @@ class _ExportSessionScreenState extends State { bool _isExporting = false; bool _saveProxySettings = false; - Future _exportAndSaveSession() async { if (!mounted) return; setState(() => _isExporting = true); @@ -73,32 +73,30 @@ class _ExportSessionScreenState extends State { Uint8List bytes = Uint8List.fromList(utf8.encode(finalFileContent)); - String? filePath = await FileSaver.instance.saveAs( - name: 'komet_session_${DateTime.now().millisecondsSinceEpoch}', - bytes: bytes, - fileExtension: 'json', - mimeType: MimeType.json, - ); + final Directory directory = await getDownloadsDirectory() ?? await getApplicationDocumentsDirectory(); + final String filePath = '${directory.path}/komet_session_${DateTime.now().millisecondsSinceEpoch}.ksession'; + + final File file = File(filePath); + await file.writeAsBytes(bytes); - if (filePath != null && mounted) { + if (mounted) { messenger.showSnackBar( - const SnackBar( - content: Text('Файл сессии успешно сохранен'), + SnackBar( + content: Text('Файл сессии успешно сохранен: $filePath'), backgroundColor: Colors.green, ), ); - } else if (mounted) { - messenger.showSnackBar( - const SnackBar(content: Text('Сохранение файла было отменено.')), - ); } } catch (e) { - messenger.showSnackBar( - SnackBar( - backgroundColor: Colors.red, - content: Text('Не удалось экспортировать сессию: $e'), - ), - ); + if (mounted) { + messenger.showSnackBar( + SnackBar( + backgroundColor: Colors.red, + content: Text('Не удалось экспортировать сессию: $e'), + ), + ); + } + rethrow; } finally { if (mounted) { setState(() => _isExporting = false); diff --git a/lib/token_auth_screen.dart b/lib/token_auth_screen.dart index 6c6aa42..0602d2d 100644 --- a/lib/token_auth_screen.dart +++ b/lib/token_auth_screen.dart @@ -104,7 +104,7 @@ class _TokenAuthScreenState extends State { FilePickerResult? result = await FilePicker.platform.pickFiles( type: FileType.custom, - allowedExtensions: ['json'], + allowedExtensions: ['json','ksession'], ); if (result == null || result.files.single.path == null) return; final filePath = result.files.single.path!; @@ -322,7 +322,7 @@ class _TokenAuthScreenState extends State { icon: Icons.file_open_outlined, title: 'Вход по файлу сессии', subtitle: - 'Загрузите ранее экспортированный .json файл для восстановления сессии.', + 'Загрузите ранее экспортированный .json или .ksession файл для восстановления сессии.', buttonLabel: 'Загрузить файл', onPressed: _loadSessionFile, isOutlined: true, diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt index 85e283b..2270c74 100644 --- a/linux/CMakeLists.txt +++ b/linux/CMakeLists.txt @@ -55,6 +55,7 @@ add_subdirectory(${FLUTTER_MANAGED_DIR}) # System-level dependencies. find_package(PkgConfig REQUIRED) pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) +pkg_check_modules(GTK3 REQUIRED IMPORTED_TARGET gtk+-3.0) # Check for Wayland support in GTK #pkg_check_modules(GTK_WAYLAND REQUIRED IMPORTED_TARGET gtk+-3.0) @@ -132,10 +133,10 @@ install(CODE " install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) -## Install the AOT library on non-Debug builds only. -#if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") -# install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" -# COMPONENT Runtime) -#endif() +# Install the AOT library on non-Debug builds only. +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 988d667..22d2f1b 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -7,7 +7,6 @@ #include "generated_plugin_registrant.h" #include -#include #include #include #include @@ -20,9 +19,6 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) dynamic_color_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "DynamicColorPlugin"); dynamic_color_plugin_register_with_registrar(dynamic_color_registrar); - g_autoptr(FlPluginRegistrar) file_saver_registrar = - fl_plugin_registry_get_registrar_for_plugin(registry, "FileSaverPlugin"); - file_saver_plugin_register_with_registrar(file_saver_registrar); g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); file_selector_plugin_register_with_registrar(file_selector_linux_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 25b57ba..ccc33ce 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -4,7 +4,6 @@ list(APPEND FLUTTER_PLUGIN_LIST dynamic_color - file_saver file_selector_linux flutter_secure_storage_linux flutter_timezone diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 65ea0b3..f53d9bc 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -9,7 +9,6 @@ import app_links import device_info_plus import dynamic_color import file_picker -import file_saver import file_selector_macos import flutter_inappwebview_macos import flutter_secure_storage_macos @@ -31,7 +30,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin")) FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin")) - FileSaverPlugin.register(with: registry.registrar(forPlugin: "FileSaverPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) InAppWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "InAppWebViewFlutterPlugin")) FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) diff --git a/pubspec.lock b/pubspec.lock index e573b40..bab6763 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -209,22 +209,6 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.3" - dio: - dependency: transitive - description: - name: dio - sha256: d90ee57923d1828ac14e492ca49440f65477f4bb1263575900be731a3dac66a9 - url: "https://pub.dev" - source: hosted - version: "5.9.0" - dio_web_adapter: - dependency: transitive - description: - name: dio_web_adapter - sha256: "7586e476d70caecaf1686d21eee7247ea43ef5c345eab9e0cc3583ff13378d78" - url: "https://pub.dev" - source: hosted - version: "2.1.1" disable_battery_optimization: dependency: "direct main" description: @@ -297,14 +281,6 @@ packages: url: "https://pub.dev" source: hosted version: "10.3.3" - file_saver: - dependency: "direct main" - description: - name: file_saver - sha256: "9d93db09bd4da9e43238f9dd485360fc51a5c138eea5ef5f407ec56e58079ac0" - url: "https://pub.dev" - source: hosted - version: "0.3.1" file_selector_linux: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 04fe75b..e929262 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -65,7 +65,7 @@ dependencies: http: ^1.5.0 image_picker: ^1.1.2 - path_provider: ^2.1.4 + path_provider: ^2.1.5 path: ^1.9.0 crypto: ^3.0.3 @@ -81,7 +81,6 @@ dependencies: timezone: ^0.9.2 - file_saver: ^0.3.1 file_picker: ^10.3.3 diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 2f0c299..aa30e8f 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -8,7 +8,6 @@ #include #include -#include #include #include #include @@ -23,8 +22,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("AppLinksPluginCApi")); DynamicColorPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("DynamicColorPluginCApi")); - FileSaverPluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("FileSaverPlugin")); FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); FlutterInappwebviewWindowsPluginCApiRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index d150f00..0c2d3fa 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -5,7 +5,6 @@ list(APPEND FLUTTER_PLUGIN_LIST app_links dynamic_color - file_saver file_selector_windows flutter_inappwebview_windows flutter_secure_storage_windows