TODO done

This commit is contained in:
ivan2282
2025-11-16 00:52:10 +03:00
parent 94dadca922
commit 6addc49fc2
10 changed files with 28 additions and 65 deletions

View File

@@ -1,9 +1,10 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:io';
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:flutter/material.dart'; 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/api_service.dart';
import 'package:gwid/proxy_service.dart'; import 'package:gwid/proxy_service.dart';
import 'package:gwid/spoofing_service.dart'; import 'package:gwid/spoofing_service.dart';
@@ -23,7 +24,6 @@ class _ExportSessionScreenState extends State<ExportSessionScreen> {
bool _isExporting = false; bool _isExporting = false;
bool _saveProxySettings = false; bool _saveProxySettings = false;
Future<void> _exportAndSaveSession() async { Future<void> _exportAndSaveSession() async {
if (!mounted) return; if (!mounted) return;
setState(() => _isExporting = true); setState(() => _isExporting = true);
@@ -73,32 +73,30 @@ class _ExportSessionScreenState extends State<ExportSessionScreen> {
Uint8List bytes = Uint8List.fromList(utf8.encode(finalFileContent)); Uint8List bytes = Uint8List.fromList(utf8.encode(finalFileContent));
String? filePath = await FileSaver.instance.saveAs( final Directory directory = await getDownloadsDirectory() ?? await getApplicationDocumentsDirectory();
name: 'komet_session_${DateTime.now().millisecondsSinceEpoch}', final String filePath = '${directory.path}/komet_session_${DateTime.now().millisecondsSinceEpoch}.ksession';
bytes: bytes,
fileExtension: 'json',
mimeType: MimeType.json,
);
if (filePath != null && mounted) { final File file = File(filePath);
await file.writeAsBytes(bytes);
if (mounted) {
messenger.showSnackBar( messenger.showSnackBar(
const SnackBar( SnackBar(
content: Text('Файл сессии успешно сохранен'), content: Text('Файл сессии успешно сохранен: $filePath'),
backgroundColor: Colors.green, backgroundColor: Colors.green,
), ),
); );
} else if (mounted) {
messenger.showSnackBar(
const SnackBar(content: Text('Сохранение файла было отменено.')),
);
} }
} catch (e) { } catch (e) {
messenger.showSnackBar( if (mounted) {
SnackBar( messenger.showSnackBar(
backgroundColor: Colors.red, SnackBar(
content: Text('Не удалось экспортировать сессию: $e'), backgroundColor: Colors.red,
), content: Text('Не удалось экспортировать сессию: $e'),
); ),
);
}
rethrow;
} finally { } finally {
if (mounted) { if (mounted) {
setState(() => _isExporting = false); setState(() => _isExporting = false);

View File

@@ -104,7 +104,7 @@ class _TokenAuthScreenState extends State<TokenAuthScreen> {
FilePickerResult? result = await FilePicker.platform.pickFiles( FilePickerResult? result = await FilePicker.platform.pickFiles(
type: FileType.custom, type: FileType.custom,
allowedExtensions: ['json'], allowedExtensions: ['json','ksession'],
); );
if (result == null || result.files.single.path == null) return; if (result == null || result.files.single.path == null) return;
final filePath = result.files.single.path!; final filePath = result.files.single.path!;
@@ -322,7 +322,7 @@ class _TokenAuthScreenState extends State<TokenAuthScreen> {
icon: Icons.file_open_outlined, icon: Icons.file_open_outlined,
title: 'Вход по файлу сессии', title: 'Вход по файлу сессии',
subtitle: subtitle:
'Загрузите ранее экспортированный .json файл для восстановления сессии.', 'Загрузите ранее экспортированный .json или .ksession файл для восстановления сессии.',
buttonLabel: 'Загрузить файл', buttonLabel: 'Загрузить файл',
onPressed: _loadSessionFile, onPressed: _loadSessionFile,
isOutlined: true, isOutlined: true,

View File

@@ -55,6 +55,7 @@ add_subdirectory(${FLUTTER_MANAGED_DIR})
# System-level dependencies. # System-level dependencies.
find_package(PkgConfig REQUIRED) find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) 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 # Check for Wayland support in GTK
#pkg_check_modules(GTK_WAYLAND REQUIRED IMPORTED_TARGET gtk+-3.0) #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}" install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}"
DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime)
## Install the AOT library on non-Debug builds only. # Install the AOT library on non-Debug builds only.
#if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") if(NOT CMAKE_BUILD_TYPE MATCHES "Debug")
# install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
# COMPONENT Runtime) COMPONENT Runtime)
#endif() endif()

View File

@@ -7,7 +7,6 @@
#include "generated_plugin_registrant.h" #include "generated_plugin_registrant.h"
#include <dynamic_color/dynamic_color_plugin.h> #include <dynamic_color/dynamic_color_plugin.h>
#include <file_saver/file_saver_plugin.h>
#include <file_selector_linux/file_selector_plugin.h> #include <file_selector_linux/file_selector_plugin.h>
#include <flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h> #include <flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h>
#include <flutter_timezone/flutter_timezone_plugin.h> #include <flutter_timezone/flutter_timezone_plugin.h>
@@ -20,9 +19,6 @@ void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) dynamic_color_registrar = g_autoptr(FlPluginRegistrar) dynamic_color_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "DynamicColorPlugin"); fl_plugin_registry_get_registrar_for_plugin(registry, "DynamicColorPlugin");
dynamic_color_plugin_register_with_registrar(dynamic_color_registrar); 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 = g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin");
file_selector_plugin_register_with_registrar(file_selector_linux_registrar); file_selector_plugin_register_with_registrar(file_selector_linux_registrar);

View File

@@ -4,7 +4,6 @@
list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_PLUGIN_LIST
dynamic_color dynamic_color
file_saver
file_selector_linux file_selector_linux
flutter_secure_storage_linux flutter_secure_storage_linux
flutter_timezone flutter_timezone

View File

@@ -9,7 +9,6 @@ import app_links
import device_info_plus import device_info_plus
import dynamic_color import dynamic_color
import file_picker import file_picker
import file_saver
import file_selector_macos import file_selector_macos
import flutter_inappwebview_macos import flutter_inappwebview_macos
import flutter_secure_storage_macos import flutter_secure_storage_macos
@@ -31,7 +30,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin")) DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin"))
FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin")) FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin"))
FileSaverPlugin.register(with: registry.registrar(forPlugin: "FileSaverPlugin"))
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
InAppWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "InAppWebViewFlutterPlugin")) InAppWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "InAppWebViewFlutterPlugin"))
FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin"))

View File

@@ -209,22 +209,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "7.0.3" 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: disable_battery_optimization:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -297,14 +281,6 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.3.3" 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: file_selector_linux:
dependency: transitive dependency: transitive
description: description:

View File

@@ -65,7 +65,7 @@ dependencies:
http: ^1.5.0 http: ^1.5.0
image_picker: ^1.1.2 image_picker: ^1.1.2
path_provider: ^2.1.4 path_provider: ^2.1.5
path: ^1.9.0 path: ^1.9.0
crypto: ^3.0.3 crypto: ^3.0.3
@@ -81,7 +81,6 @@ dependencies:
timezone: ^0.9.2 timezone: ^0.9.2
file_saver: ^0.3.1
file_picker: ^10.3.3 file_picker: ^10.3.3

View File

@@ -8,7 +8,6 @@
#include <app_links/app_links_plugin_c_api.h> #include <app_links/app_links_plugin_c_api.h>
#include <dynamic_color/dynamic_color_plugin_c_api.h> #include <dynamic_color/dynamic_color_plugin_c_api.h>
#include <file_saver/file_saver_plugin.h>
#include <file_selector_windows/file_selector_windows.h> #include <file_selector_windows/file_selector_windows.h>
#include <flutter_inappwebview_windows/flutter_inappwebview_windows_plugin_c_api.h> #include <flutter_inappwebview_windows/flutter_inappwebview_windows_plugin_c_api.h>
#include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h> #include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h>
@@ -23,8 +22,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("AppLinksPluginCApi")); registry->GetRegistrarForPlugin("AppLinksPluginCApi"));
DynamicColorPluginCApiRegisterWithRegistrar( DynamicColorPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("DynamicColorPluginCApi")); registry->GetRegistrarForPlugin("DynamicColorPluginCApi"));
FileSaverPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FileSaverPlugin"));
FileSelectorWindowsRegisterWithRegistrar( FileSelectorWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FileSelectorWindows")); registry->GetRegistrarForPlugin("FileSelectorWindows"));
FlutterInappwebviewWindowsPluginCApiRegisterWithRegistrar( FlutterInappwebviewWindowsPluginCApiRegisterWithRegistrar(

View File

@@ -5,7 +5,6 @@
list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_PLUGIN_LIST
app_links app_links
dynamic_color dynamic_color
file_saver
file_selector_windows file_selector_windows
flutter_inappwebview_windows flutter_inappwebview_windows
flutter_secure_storage_windows flutter_secure_storage_windows