Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
circles-android
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Circles
circles-android
Commits
24de5950
Commit
24de5950
authored
1 year ago
by
Taras
Browse files
Options
Downloads
Patches
Plain Diff
Fix device verification
parent
8dde688e
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
auth/src/main/java/org/futo/circles/auth/feature/active_sessions/verify/VerifySessionViewModel.kt
+19
-11
19 additions, 11 deletions
.../feature/active_sessions/verify/VerifySessionViewModel.kt
with
19 additions
and
11 deletions
auth/src/main/java/org/futo/circles/auth/feature/active_sessions/verify/VerifySessionViewModel.kt
+
19
−
11
View file @
24de5950
...
...
@@ -5,10 +5,11 @@ import androidx.lifecycle.SavedStateHandle
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.viewModelScope
import
dagger.hilt.android.lifecycle.HiltViewModel
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.flow.cancellable
import
kotlinx.coroutines.flow.flowOn
import
kotlinx.coroutines.flow.launchIn
import
kotlinx.coroutines.flow.onEach
import
org.futo.circles.auth.model.QrCanceled
import
org.futo.circles.auth.model.QrLoading
import
org.futo.circles.auth.model.QrReady
import
org.futo.circles.auth.model.QrState
...
...
@@ -16,6 +17,7 @@ import org.futo.circles.auth.model.QrSuccess
import
org.futo.circles.core.extensions.getOrThrow
import
org.futo.circles.core.extensions.launchBg
import
org.futo.circles.core.provider.MatrixSessionProvider
import
org.matrix.android.sdk.api.session.crypto.verification.EVerificationState
import
org.matrix.android.sdk.api.session.crypto.verification.PendingVerificationRequest
import
org.matrix.android.sdk.api.session.crypto.verification.QRCodeVerificationState
import
org.matrix.android.sdk.api.session.crypto.verification.QrCodeVerificationTransaction
...
...
@@ -42,31 +44,37 @@ class VerifySessionViewModel @Inject constructor(
private
var
qrTransactionId
:
String
=
""
init
{
observeVerificationState
()
initVerification
()
}
private
fun
observeVerificationState
()
{
session
.
cryptoService
().
verificationService
().
requestEventFlow
()
.
cancellable
()
.
onEach
{
when
(
it
)
{
is
VerificationEvent
.
RequestAdded
->
confirmIncomingRequest
(
it
.
request
)
is
VerificationEvent
.
RequestUpdated
->
{
qrTransactionId
=
it
.
transactionId
it
.
request
.
qrCodeText
?.
let
{
qrStateLiveData
.
postValue
(
QrReady
(
it
))
}
if
(
it
.
request
.
state
==
EVerificationState
.
Done
)
{
qrStateLiveData
.
postValue
(
QrSuccess
)
}
else
{
qrTransactionId
=
it
.
transactionId
it
.
request
.
qrCodeText
?.
let
{
qrStateLiveData
.
postValue
(
QrReady
(
it
))
}
}
}
is
VerificationEvent
.
TransactionAdded
->
transactionUpdated
(
it
.
transaction
)
is
VerificationEvent
.
TransactionUpdated
->
transactionUpdated
(
it
.
transaction
)
}
}.
launchIn
(
viewModelScope
)
initVerification
()
}.
flowOn
(
Dispatchers
.
IO
).
launchIn
(
viewModelScope
)
}
private
fun
transactionUpdated
(
tx
:
VerificationTransaction
)
{
val
transaction
=
(
tx
as
?
QrCodeVerificationTransaction
)
?:
return
when
(
transaction
.
state
())
{
QRCodeVerificationState
.
Done
->
qrStateLiveData
.
postValue
(
QrSuccess
)
QRCodeVerificationState
.
Cancelled
->
qrStateLiveData
.
postValue
(
QrCanceled
)
else
->
launchBg
{
transaction
.
otherUserScannedMyQrCode
()
}
}
if
(
transaction
.
state
()
==
QRCodeVerificationState
.
WaitingForScanConfirmation
)
launchBg
{
transaction
.
otherUserScannedMyQrCode
()
}
}
fun
onQrScanned
(
data
:
String
)
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment