@@ -12,6 +12,8 @@ import Skeleton from '../../components/Skeleton';
1212import { allNodes , closestNodes , maxNodes , currentScanNodeNumber } from '../../services/mining' ;
1313import { CoNET_Data } from '../../utils/globals' ;
1414
15+
16+
1517const Home = ( ) => {
1618 const { profile, sRegion, setSRegion, setAllRegions, allRegions, isRandom, setIsRandom} = useDaemonContext ( ) ;
1719 const [ power , setPower ] = useState < boolean > ( false ) ;
@@ -79,6 +81,20 @@ const Home = () => {
7981 setIsMenuVisible ( prevState => ! prevState ) ;
8082 }
8183
84+ type Native_node = {
85+ country : string
86+ ip_addr : string
87+ region : string
88+ armoredPublicKey : string
89+ nftNumber : string
90+ }
91+
92+
93+ type Native_StartVPNObj = {
94+ entryNodes : Native_node [ ]
95+ privateKey : string
96+ exitNode : Native_node [ ]
97+ }
8298 const handleTogglePower = async ( ) => {
8399 let selectedCountryIndex = - 1
84100
@@ -87,6 +103,11 @@ const Home = () => {
87103 window ?. webkit ?. messageHandlers [ "stopVPN" ] . postMessage ( null )
88104 return
89105 }
106+ const conetProfile = CoNET_Data ?. profiles [ 1 ] ;
107+ const privateKey = conetProfile ?. privateKeyArmor
108+ if ( ! privateKey ) {
109+ return
110+ }
90111
91112 try {
92113 setIsConnectionLoading ( true )
@@ -104,29 +125,42 @@ const Home = () => {
104125
105126 const randomNodeIndex = Math . floor ( Math . random ( ) * nodeListFilteredBySelectedRegion ! . length ) ;
106127
107- const exitNode = [ nodeListFilteredBySelectedRegion ?. [ randomNodeIndex ] ] ;
128+ const _exitNode = [ nodeListFilteredBySelectedRegion ?. [ randomNodeIndex ] ] ;
108129
109- let entryNodes : any [ ] = [ ] ;
130+ let _entryNodes : nodes_info [ ] = nodeListFilteredByClosestRegion
110131
111- if ( nodeListFilteredByClosestRegion . length < 5 ) {
112- entryNodes = nodeListFilteredByClosestRegion ;
113- } else {
132+ if ( nodeListFilteredByClosestRegion . length > 5 ) {
133+ _entryNodes = [ ]
114134 do {
115135 const randomNodeIndex = Math . floor ( Math . random ( ) * nodeListFilteredByClosestRegion ! . length )
116- const choosenNode = nodeListFilteredByClosestRegion [ randomNodeIndex ] ;
117-
118- if ( ! ! entryNodes . find ( ( item : any ) => item . ip_addr === choosenNode . ip_addr ) ) continue ;
119-
120- entryNodes . push ( choosenNode )
121- } while ( entryNodes . length < 5 ) ;
136+ const choosenNode = nodeListFilteredByClosestRegion [ randomNodeIndex ]
137+ _entryNodes . push ( choosenNode )
138+ nodeListFilteredByClosestRegion . splice ( randomNodeIndex , 1 )
139+ } while ( _entryNodes . length < 5 ) ;
122140 }
123141
124- const conetProfile = CoNET_Data ?. profiles [ 1 ] ;
125-
126- const startVPNMessageObject = {
142+
143+ const entryNodes : Native_node [ ] = _entryNodes . map ( n => {
144+ return {
145+ country : n . country ,
146+ ip_addr : n . ip_addr ,
147+ region : n . region ,
148+ armoredPublicKey : n . armoredPublicKey ,
149+ nftNumber : n . nftNumber . toString ( )
150+ } } )
151+ const exitNode = _exitNode . map ( n => {
152+ return {
153+ country : n . country ,
154+ ip_addr : n . ip_addr ,
155+ region : n . region ,
156+ armoredPublicKey : n . armoredPublicKey ,
157+ nftNumber : n . nftNumber . toString ( )
158+ } } )
159+
160+ const startVPNMessageObject : Native_StartVPNObj = {
127161 entryNodes,
128162 exitNode,
129- privateKey : conetProfile ?. privateKeyArmor ,
163+ privateKey
130164 }
131165
132166 const stringifiedVPNMessageObject = JSON . stringify ( startVPNMessageObject ) ;
0 commit comments