haveno-app/lib/services/tor/tor_status_service.dart
2024-12-08 06:38:57 +00:00

83 lines
No EOL
2.8 KiB
Dart

// Haveno App extends the features of Haveno, supporting mobile devices and more.
// Copyright (C) 2024 Kewbit (https://kewbit.org)
// Source Code: https://git.haveno.com/haveno/haveno-app.git
//
// Author: Kewbit
// Website: https://kewbit.org
// Contact Email: me@kewbit.org
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_socks_proxy/socks_proxy.dart';
import 'package:haveno_app/models/schema.dart';
class TorStatusService {
static final TorStatusService _instance = TorStatusService._internal();
String _torStatus = 'Unknown';
String _torDetails = 'No details available';
int? _torPort;
// Completer to track initialization
final Completer<void> _torInitializationCompleter = Completer<void>();
final StreamController<void> _statusStreamController = StreamController<void>.broadcast();
String get torStatus => _torStatus;
String get torDetails => _torDetails;
int? get torPort => _torPort;
factory TorStatusService() {
return _instance;
}
TorStatusService._internal();
// Start listening to events before the UI is loaded
void startListening(EventDispatcher dispatcher) {
dispatcher.subscribe(BackgroundEventType.updateTorStatus, _onTorStatusUpdate);
}
void _onTorStatusUpdate(Map<String, dynamic> data) {
_torStatus = data['status'] ?? 'Unknown';
_torDetails = data['details'] ?? 'No details available';
_torPort = data['port'];
if (_torStatus == 'started') {
print("Tor listening connected on port $_torPort");
} else {
print("Tor Status: $_torStatus ($_torDetails)");
}
if (_torStatus == 'started' && _torPort != null && !_torInitializationCompleter.isCompleted) {
_torInitializationCompleter.complete(); // Mark initialization as completed
//SocksProxy.initProxy(proxy: 'SOCKS5 127.0.0.1:$_torPort');
}
_statusStreamController.add(null);
}
// Expose a stream for external listeners to subscribe to status updates
Stream<void> get torStatusStream => _statusStreamController.stream;
// Method to await until Tor is fully initialized
Future<void> waitForInitialization() {
return _torInitializationCompleter.future;
}
}
*/