@@ -5,6 +5,7 @@ import 'package:sentinelx/channels/network_channel.dart';
55import 'package:sentinelx/models/db/prefs_store.dart' ;
66import 'package:sentinelx/shared_state/network_state.dart' ;
77import 'package:sentinelx/utils/utils.dart' ;
8+ import 'package:sentinelx/widgets/port_selector.dart' ;
89import 'package:sentinelx/widgets/sentinelx_icons.dart' ;
910
1011showTorPanel (BuildContext context) {
@@ -27,6 +28,7 @@ class TorControlPanel extends StatefulWidget {
2728class _TorControlPanelState extends State <TorControlPanel > {
2829 bool torOnStartup = false ;
2930 bool isDojoEnabled = false ;
31+ int port = - 1 ;
3032
3133 @override
3234 Widget build (BuildContext context) {
@@ -53,15 +55,11 @@ class _TorControlPanelState extends State<TorControlPanel> {
5355 children: < Widget > [
5456 Text (
5557 "Tor Routing" ,
56- style: Theme .of (context)
57- .textTheme
58- .title
59- .copyWith (fontSize: 16 ),
58+ style: Theme .of (context).textTheme.title.copyWith (fontSize: 16 ),
6059 ),
6160 Consumer <NetworkState >(
6261 builder: (context, model, c) {
63- bool isRunning =
64- model.torStatus == TorStatus .CONNECTED ;
62+ bool isRunning = model.torStatus == TorStatus .CONNECTED ;
6563 return FlatButton (
6664 onPressed: () {
6765 startOrStopTor (isRunning);
@@ -118,19 +116,32 @@ class _TorControlPanelState extends State<TorControlPanel> {
118116 ),
119117 ),
120118 Divider (),
119+ ListTile (
120+ onTap: () {
121+ showModalBottomSheet (context: context, isScrollControlled: true , builder: (context) => PortSelector ());
122+ },
123+ title: Text ("SOCKS Port" ),
124+ trailing: Padding (
125+ padding: EdgeInsets .symmetric (horizontal: 24 ),
126+ child: Text (port== - 1 ? "auto" : "$port " ),
127+ ),
128+ ),
129+ Divider (),
121130 ListTile (
122131 title: Text ("View tor logs" ),
123132 onTap: showLogs,
124133 ),
125- isDojoEnabled ? ListTile (
126- subtitle: Text (
127- "Note: Tor cannot be disabled if dojo is active" ,
128- style: Theme .of (context).textTheme.subtitle.copyWith (fontSize: 12 ),
129- textAlign: TextAlign .center,
130- ),
131- selected: true ,
132- onTap: showLogs,
133- ) : SizedBox .shrink (),
134+ isDojoEnabled
135+ ? ListTile (
136+ subtitle: Text (
137+ "Note: Tor cannot be disabled if dojo is active" ,
138+ style: Theme .of (context).textTheme.subtitle.copyWith (fontSize: 12 ),
139+ textAlign: TextAlign .center,
140+ ),
141+ selected: true ,
142+ onTap: showLogs,
143+ )
144+ : SizedBox .shrink (),
134145 ],
135146 ),
136147 )
@@ -159,9 +170,11 @@ class _TorControlPanelState extends State<TorControlPanel> {
159170
160171 void init () async {
161172 String data = await PrefsStore ().getString (PrefsStore .DOJO );
173+ int portPref = await PrefsStore ().getInt (PrefsStore .TOR_PORT );
162174 if (data != null && data != "" ) {
163175 setState (() {
164176 isDojoEnabled = true ;
177+ port = portPref;
165178 });
166179 }
167180 }
@@ -179,8 +192,7 @@ class _TorControlPanelState extends State<TorControlPanel> {
179192 crossAxisAlignment: CrossAxisAlignment .start,
180193 children: < Widget > [
181194 Padding (
182- padding: const EdgeInsets .symmetric (
183- vertical: 16 , horizontal: 14 ),
195+ padding: const EdgeInsets .symmetric (vertical: 16 , horizontal: 14 ),
184196 child: Text (
185197 "Tor Logs" ,
186198 style: Theme .of (context).textTheme.caption,
@@ -213,8 +225,7 @@ class _TorLogViewerState extends State<TorLogViewer> {
213225 super .initState ();
214226
215227 NetworkChannel ().listenToTorLogs ().stream.listen ((event) {
216- if (log.split ("\n " ).last == event ||
217- NetworkChannel ().status == TorStatus .DISCONNECTED ) {
228+ if (log.split ("\n " ).last == event || NetworkChannel ().status == TorStatus .DISCONNECTED ) {
218229 return ;
219230 }
220231 setState (() {
@@ -234,10 +245,7 @@ class _TorLogViewerState extends State<TorLogViewer> {
234245 child: Text (
235246 "$log " ,
236247 textAlign: TextAlign .left,
237- style: TextStyle (
238- fontSize: 12 ,
239- color: Theme .of (context).textTheme.subtitle.color,
240- fontWeight: FontWeight .w300),
248+ style: TextStyle (fontSize: 12 , color: Theme .of (context).textTheme.subtitle.color, fontWeight: FontWeight .w300),
241249 ),
242250 )),
243251 );
0 commit comments