@@ -37,10 +37,10 @@ import net.ivpn.core.rest.Responses
3737import net.ivpn.core.rest.data.model.ServiceStatus
3838import net.ivpn.core.rest.data.model.WireGuard
3939import net.ivpn.core.rest.data.session.*
40- import net.ivpn.core.rest.data.wireguard.ErrorResponse
4140import net.ivpn.core.rest.requests.common.Request
4241import net.ivpn.core.rest.requests.common.RequestWrapper
4342import net.ivpn.core.v2.login.LoginViewModel
43+ import net.ivpn.core.v2.viewmodel.AccountViewModel
4444import net.ivpn.core.v2.viewmodel.ViewModelCleaner
4545import net.ivpn.core.vpn.Protocol
4646import net.ivpn.core.vpn.ProtocolController
@@ -109,7 +109,7 @@ class SessionController @Inject constructor(
109109 }
110110
111111 private fun innerCreateSession (body : SessionNewRequestBody , keys : Keypair ? ) {
112- sessionNewRequest = Request (settings, clientFactory, serversRepository, Request .Duration .SHORT , RequestWrapper .IpMode .IPv4 )
112+ sessionNewRequest = Request (settings, clientFactory, serversRepository, Request .Duration .LONG , RequestWrapper .IpMode .IPv4 )
113113
114114 sessionNewRequest?.start({ api: IVPNApi -> api.newSession(body) },
115115 object : RequestListener <SessionNewResponse > {
@@ -125,7 +125,10 @@ class SessionController @Inject constructor(
125125
126126 override fun onError (error : String ) {
127127 LOGGER .error(" On create session error = $error " )
128- val errorResponse = Mapper .errorResponseFrom(error)
128+ val errorResponse = Mapper .sessionErrorResponseFrom(error)
129+ if (errorResponse != null ) {
130+ errorResponse.isAccountNewStyle = AccountViewModel .isNewStyleAccount(body.username)
131+ }
129132 onCreateError(null , errorResponse)
130133 }
131134 })
@@ -146,6 +149,7 @@ class SessionController @Inject constructor(
146149 if (response.status != null && response.status == Responses .SUCCESS ) {
147150 LOGGER .info(" Session status response received successfully" )
148151 LOGGER .info(response.toString())
152+ userPreference.putDeviceName(response.deviceName)
149153 saveSessionStatus(response.serviceStatus)
150154 onUpdateSuccess()
151155 }
@@ -158,14 +162,14 @@ class SessionController @Inject constructor(
158162
159163 override fun onError (error : String ) {
160164 LOGGER .error(" Error while getting account status to see the confirmation$error " )
161- val errorResponse = Mapper .errorResponseFrom (error)
165+ val errorResponse = Mapper .sessionErrorResponseFrom (error)
162166 errorResponse?.let {
163167 if (it.status == Responses .SERVICE_IS_NOT_ACTIVE ) {
164168 userPreference.putIsActive(false )
165169 }
166170 if ((it.status == Responses .SESSION_NOT_FOUND )) {
167171 clearSessionData()
168- onRemoveSuccess ()
172+ onDeviceLoggedOut ()
169173 }
170174 }
171175 onUpdateError(null , errorResponse)
@@ -179,7 +183,7 @@ class SessionController @Inject constructor(
179183
180184 val token = userPreference.getSessionToken()
181185 val requestBody = DeleteSessionRequestBody (token)
182- deleteSessionRequest = Request (settings, clientFactory, serversRepository, Request .Duration .SHORT , RequestWrapper .IpMode .IPv4 )
186+ deleteSessionRequest = Request (settings, clientFactory, serversRepository, Request .Duration .LONG , RequestWrapper .IpMode .IPv4 )
183187
184188 deleteSessionRequest?.start({ api: IVPNApi -> api.deleteSession(requestBody) },
185189 object : RequestListener <DeleteSessionResponse ?> {
@@ -234,7 +238,7 @@ class SessionController @Inject constructor(
234238 }
235239 }
236240
237- private fun onCreateError (throwable : Throwable ? , errorResponse : ErrorResponse ? ) {
241+ private fun onCreateError (throwable : Throwable ? , errorResponse : SessionErrorResponse ? ) {
238242 for (listener in listeners) {
239243 listener.onCreateError(throwable, errorResponse)
240244 }
@@ -246,12 +250,18 @@ class SessionController @Inject constructor(
246250 }
247251 }
248252
249- private fun onUpdateError (throwable : Throwable ? , errorResponse : ErrorResponse ? ) {
253+ private fun onUpdateError (throwable : Throwable ? , errorResponse : SessionErrorResponse ? ) {
250254 for (listener in listeners) {
251255 listener.onUpdateError(throwable, errorResponse)
252256 }
253257 }
254258
259+ private fun onDeviceLoggedOut () {
260+ for (listener in listeners) {
261+ listener.onDeviceLoggedOut()
262+ }
263+ }
264+
255265 fun clearData () {
256266 IVPNApplication .appComponent.provideComponentUtil().resetComponents()
257267 ViewModelCleaner ().fullClean()
@@ -292,6 +302,7 @@ class SessionController @Inject constructor(
292302 userPreference.putSessionToken(response.token)
293303 userPreference.putSessionUsername(response.vpnUsername)
294304 userPreference.putSessionPassword(response.vpnPassword)
305+ userPreference.putDeviceName(response.deviceName)
295306 saveSessionStatus(response.serviceStatus)
296307 }
297308
@@ -304,6 +315,9 @@ class SessionController @Inject constructor(
304315 userPreference.putCurrentPlan(serviceStatus.currentPlan)
305316 userPreference.putPaymentMethod(serviceStatus.paymentMethod)
306317 userPreference.putIsActive(serviceStatus.isActive)
318+ serviceStatus.deviceManagement?.let {
319+ userPreference.putDeviceManagement(it)
320+ }
307321 if (serviceStatus.capabilities != null ) {
308322 userPreference.putIsUserOnPrivateEmailBeta(serviceStatus.capabilities.contains(Responses .PRIVATE_EMAILS ))
309323 val multiHopCapabilities = serviceStatus.capabilities.contains(Responses .MULTI_HOP )
@@ -348,15 +362,11 @@ class SessionController @Inject constructor(
348362
349363 interface SessionListener {
350364 fun onRemoveSuccess ()
351-
352365 fun onRemoveError ()
353-
354366 fun onCreateSuccess (response : SessionNewResponse )
355-
356- fun onCreateError (throwable : Throwable ? , errorResponse : ErrorResponse ? )
357-
367+ fun onCreateError (throwable : Throwable ? , errorResponse : SessionErrorResponse ? )
358368 fun onUpdateSuccess ()
359-
360- fun onUpdateError ( throwable : Throwable ? , errorResponse : ErrorResponse ? )
369+ fun onUpdateError ( throwable : Throwable ? , errorResponse : SessionErrorResponse ? )
370+ fun onDeviceLoggedOut ( )
361371 }
362372}
0 commit comments