@@ -25,7 +25,6 @@ import android.os.Build
25
25
import ru.yoomoney.sdk.kassa.payments.checkoutParameters.Amount
26
26
import ru.yoomoney.sdk.kassa.payments.extensions.CheckoutOkHttpClient
27
27
import ru.yoomoney.sdk.kassa.payments.model.AuthCheckApiMethodException
28
- import ru.yoomoney.sdk.kassa.payments.tmx.ProfilingTool
29
28
import ru.yoomoney.sdk.kassa.payments.tmx.TmxSessionIdStorage
30
29
import ru.yoomoney.sdk.kassa.payments.secure.TokensStorage
31
30
import ru.yoomoney.sdk.kassa.payments.extensions.execute
@@ -42,25 +41,22 @@ import ru.yoomoney.sdk.kassa.payments.model.CurrentUser
42
41
import ru.yoomoney.sdk.kassa.payments.model.ErrorCode
43
42
import ru.yoomoney.sdk.kassa.payments.model.Result
44
43
import ru.yoomoney.sdk.kassa.payments.model.map
44
+ import ru.yoomoney.sdk.tmx.TmxProfiler
45
45
import java.lang.IllegalStateException
46
- import java.util.concurrent.Semaphore
47
46
48
47
internal class ApiV3PaymentAuthRepository (
49
48
private val hostProvider : HostProvider ,
50
49
private val httpClient : Lazy <CheckoutOkHttpClient >,
51
50
private val tokensStorage : TokensStorage ,
52
51
private val shopToken : String ,
53
52
private val tmxSessionIdStorage : TmxSessionIdStorage ,
54
- private val profilingTool : ProfilingTool ,
53
+ private val profiler : TmxProfiler ,
55
54
private val selectAppropriateAuthType : (AuthType , Array <AuthTypeState >) -> AuthTypeState
56
- ) : PaymentAuthTypeRepository, ProcessPaymentAuthRepository, ProfilingTool.SessionIdListener,
57
- SmsSessionRetryRepository {
55
+ ) : PaymentAuthTypeRepository, ProcessPaymentAuthRepository, SmsSessionRetryRepository {
58
56
59
57
private var processId: String? = null
60
58
private var authContextId: String? = null
61
59
private var authType: AuthType = AuthType .UNKNOWN
62
- private var tmxSessionId: String? = null
63
- private val tmxSessionIdSemaphore = Semaphore (0 )
64
60
65
61
override fun getPaymentAuthToken (
66
62
currentUser : CurrentUser ,
@@ -164,15 +160,15 @@ internal class ApiV3PaymentAuthRepository(
164
160
amount : Amount ,
165
161
multipleUsage : Boolean
166
162
): Result <CheckoutTokenIssueInitResponse > {
167
- tmxSessionId = tmxSessionIdStorage.tmxSessionId
163
+ var tmxSessionId = tmxSessionIdStorage.tmxSessionId
168
164
169
165
if (tmxSessionId.isNullOrEmpty()) {
170
- profilingTool.requestSessionId(this )
171
- tmxSessionIdSemaphore.acquire()
166
+ tmxSessionId = when (val result = profiler.profile()) {
167
+ is TmxProfiler .Result .Success -> result.sessionId
168
+ is TmxProfiler .Result .Fail -> result.description
169
+ }
172
170
}
173
171
174
- tmxSessionId ? : return Result .Fail (IllegalStateException ())
175
-
176
172
val request = CheckoutTokenIssueInitRequest (
177
173
instanceName = Build .MANUFACTURER + " , " + Build .MODEL ,
178
174
singleAmountMax = amount,
@@ -209,14 +205,4 @@ internal class ApiV3PaymentAuthRepository(
209
205
val userAuthToken: String = tokensStorage.userAuthToken ? : return Result .Fail (IllegalStateException ())
210
206
return authSessionGenerate(userAuthToken)
211
207
}
212
-
213
- override fun onProfilingSessionId (sessionId : String ) {
214
- tmxSessionId = sessionId
215
- tmxSessionIdSemaphore.release()
216
- }
217
-
218
- override fun onProfilingError (status : String ) {
219
- tmxSessionId = status
220
- tmxSessionIdSemaphore.release()
221
- }
222
208
}
0 commit comments