некое оло

This commit is contained in:
Jganenokk
2026-04-12 12:18:12 +07:00
parent 4916c24bb9
commit 6f2dae7032
2 changed files with 18 additions and 57 deletions
+2 -3
View File
@@ -18,10 +18,9 @@ class SpoofingService {
'locale': prefs.getString('spoof_locale'), 'locale': prefs.getString('spoof_locale'),
'device_id': prefs.getString('spoof_deviceid'), 'device_id': prefs.getString('spoof_deviceid'),
'device_type': prefs.getString('spoof_devicetype'), 'device_type': prefs.getString('spoof_devicetype'),
'app_version': prefs.getString('spoof_appversion') ?? hardcodedAppVersion, 'app_version': hardcodedAppVersion,
'arch': prefs.getString('spoof_arch') ?? 'arm64-v8a', 'arch': prefs.getString('spoof_arch') ?? 'arm64-v8a',
'build_number': 'build_number': hardcodedBuildNumber,
prefs.getInt('spoof_buildnumber') ?? hardcodedBuildNumber,
}; };
} }
} }
+16 -54
View File
@@ -23,8 +23,7 @@ class SpoofScreen extends StatefulWidget {
class _SpoofScreenState extends State<SpoofScreen> { class _SpoofScreenState extends State<SpoofScreen> {
static const String _hardcodedVersion = SpoofingService.hardcodedAppVersion; static const String _hardcodedVersion = SpoofingService.hardcodedAppVersion;
static const int _hardcodedBuildNumber = static const int _hardcodedBuildNumber = SpoofingService.hardcodedBuildNumber;
SpoofingService.hardcodedBuildNumber;
final _random = Random(); final _random = Random();
final _deviceNameController = TextEditingController(); final _deviceNameController = TextEditingController();
@@ -219,7 +218,6 @@ class _SpoofScreenState extends State<SpoofScreen> {
'device_id': prefs.getString('spoof_deviceid') ?? '', 'device_id': prefs.getString('spoof_deviceid') ?? '',
'device_type': prefs.getString('spoof_devicetype') ?? 'ANDROID', 'device_type': prefs.getString('spoof_devicetype') ?? 'ANDROID',
'arch': prefs.getString('spoof_arch') ?? '', 'arch': prefs.getString('spoof_arch') ?? '',
'build_number': prefs.getInt('spoof_buildnumber')?.toString() ?? '',
}; };
final newValues = { final newValues = {
@@ -231,13 +229,8 @@ class _SpoofScreenState extends State<SpoofScreen> {
'device_id': _deviceIdController.text, 'device_id': _deviceIdController.text,
'device_type': _selectedDeviceType, 'device_type': _selectedDeviceType,
'arch': _selectedArch, 'arch': _selectedArch,
'build_number': _buildNumberController.text,
}; };
final oldAppVersion =
prefs.getString('spoof_appversion') ?? _hardcodedVersion;
final newAppVersion = _appVersionController.text;
bool otherDataChanged = false; bool otherDataChanged = false;
for (final key in oldValues.keys) { for (final key in oldValues.keys) {
if (oldValues[key] != newValues[key]) { if (oldValues[key] != newValues[key]) {
@@ -246,33 +239,7 @@ class _SpoofScreenState extends State<SpoofScreen> {
} }
} }
final appVersionChanged = oldAppVersion != newAppVersion; if (!otherDataChanged) {
final isChangingAwayFromHardcoded = newAppVersion != _hardcodedVersion;
if (appVersionChanged && isChangingAwayFromHardcoded) {
if (!mounted) return;
final l10n = AppLocalizations.of(context)!;
final confirmed = await showDialog<bool>(
context: context,
builder: (context) => AlertDialog(
title: Text(l10n.spoofDialogUnsureTitle),
content: Text(l10n.spoofDialogUnsureContent),
actions: [
TextButton(
onPressed: () => Navigator.of(context).pop(false),
child: Text(l10n.spoofDialogCancel),
),
FilledButton(
onPressed: () => Navigator.of(context).pop(true),
child: Text(l10n.spoofDialogYes),
),
],
),
);
if (confirmed != true) return;
}
if (appVersionChanged && !otherDataChanged) {
await _saveAllData(prefs); await _saveAllData(prefs);
if (mounted) Navigator.of(context).pop(); if (mounted) Navigator.of(context).pop();
return; return;
@@ -329,12 +296,7 @@ class _SpoofScreenState extends State<SpoofScreen> {
await prefs.setString('spoof_locale', _localeController.text); await prefs.setString('spoof_locale', _localeController.text);
await prefs.setString('spoof_deviceid', _deviceIdController.text); await prefs.setString('spoof_deviceid', _deviceIdController.text);
await prefs.setString('spoof_devicetype', _selectedDeviceType); await prefs.setString('spoof_devicetype', _selectedDeviceType);
await prefs.setString('spoof_appversion', _appVersionController.text);
await prefs.setString('spoof_arch', _selectedArch); await prefs.setString('spoof_arch', _selectedArch);
await prefs.setInt(
'spoof_buildnumber',
int.tryParse(_buildNumberController.text) ?? _hardcodedBuildNumber,
);
} }
void _generateNewDeviceId() { void _generateNewDeviceId() {
@@ -360,10 +322,7 @@ class _SpoofScreenState extends State<SpoofScreen> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
final l10n = AppLocalizations.of(context)!; final l10n = AppLocalizations.of(context)!;
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(title: Text(l10n.spoofScreenTitle), centerTitle: true),
title: Text(l10n.spoofScreenTitle),
centerTitle: true,
),
body: _isLoading body: _isLoading
? const Center(child: CircularProgressIndicator()) ? const Center(child: CircularProgressIndicator())
: SingleChildScrollView( : SingleChildScrollView(
@@ -642,18 +601,21 @@ class _SpoofScreenState extends State<SpoofScreen> {
TextField( TextField(
controller: _deviceIdController, controller: _deviceIdController,
decoration: decoration:
_inputDecoration(l10n.spoofFieldDeviceId, Icons.tag_outlined) _inputDecoration(
.copyWith( l10n.spoofFieldDeviceId,
suffixIcon: IconButton( Icons.tag_outlined,
icon: const Icon(Icons.autorenew_outlined), ).copyWith(
tooltip: l10n.spoofRegenerateIdTooltip, suffixIcon: IconButton(
onPressed: _generateNewDeviceId, icon: const Icon(Icons.autorenew_outlined),
), tooltip: l10n.spoofRegenerateIdTooltip,
), onPressed: _generateNewDeviceId,
),
),
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
TextField( TextField(
controller: _appVersionController, controller: _appVersionController,
enabled: false,
decoration: _inputDecoration( decoration: _inputDecoration(
l10n.spoofFieldAppVersion, l10n.spoofFieldAppVersion,
Icons.info_outline_rounded, Icons.info_outline_rounded,
@@ -662,6 +624,7 @@ class _SpoofScreenState extends State<SpoofScreen> {
const SizedBox(height: 16), const SizedBox(height: 16),
TextField( TextField(
controller: _buildNumberController, controller: _buildNumberController,
enabled: false,
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
decoration: _inputDecoration( decoration: _inputDecoration(
l10n.spoofFieldBuildNumber, l10n.spoofFieldBuildNumber,
@@ -693,8 +656,7 @@ class _SpoofScreenState extends State<SpoofScreen> {
_ChipOption('arm64', 'arm64', Icons.memory_outlined), _ChipOption('arm64', 'arm64', Icons.memory_outlined),
], ],
selected: _selectedArch, selected: _selectedArch,
onSelected: (value) => onSelected: (value) => setState(() => _selectedArch = value),
setState(() => _selectedArch = value),
), ),
], ],
), ),