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: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<ExportSessionScreen> {
bool _isExporting = false;
bool _saveProxySettings = false;
Future<void> _exportAndSaveSession() async {
if (!mounted) return;
setState(() => _isExporting = true);
@@ -73,32 +73,30 @@ class _ExportSessionScreenState extends State<ExportSessionScreen> {
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);

View File

@@ -104,7 +104,7 @@ class _TokenAuthScreenState extends State<TokenAuthScreen> {
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<TokenAuthScreen> {
icon: Icons.file_open_outlined,
title: 'Вход по файлу сессии',
subtitle:
'Загрузите ранее экспортированный .json файл для восстановления сессии.',
'Загрузите ранее экспортированный .json или .ksession файл для восстановления сессии.',
buttonLabel: 'Загрузить файл',
onPressed: _loadSessionFile,
isOutlined: true,