Remove ability to scan qr code from gallery.
This commit is contained in:
parent
6b50be78c0
commit
958e815933
5 changed files with 23 additions and 62 deletions
|
@ -1,5 +1,6 @@
|
|||
package org.thoughtcrime.securesms.components.settings.app.usernamelinks.main
|
||||
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
|
@ -7,17 +8,22 @@ import androidx.compose.foundation.layout.Row
|
|||
import androidx.compose.foundation.layout.fillMaxHeight
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.material3.FloatingActionButton
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.ColorFilter
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||
import io.reactivex.rxjava3.kotlin.plusAssign
|
||||
import org.signal.core.ui.Dialogs
|
||||
import org.signal.core.ui.theme.SignalTheme
|
||||
import org.signal.qr.QrScannerView
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.mediasend.camerax.CameraXModelBlocklist
|
||||
|
@ -96,9 +102,20 @@ fun UsernameQrScanScreen(
|
|||
},
|
||||
hasPermission = hasCameraPermission,
|
||||
onRequestPermissions = onOpenCameraClicked,
|
||||
qrHeaderLabelString = "",
|
||||
onGalleryOpened = onOpenGalleryClicked
|
||||
qrHeaderLabelString = ""
|
||||
)
|
||||
FloatingActionButton(
|
||||
shape = CircleShape,
|
||||
containerColor = SignalTheme.colors.colorSurface1,
|
||||
modifier = Modifier.align(Alignment.BottomCenter).padding(bottom = 24.dp),
|
||||
onClick = onOpenGalleryClicked
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(id = R.drawable.symbol_album_24),
|
||||
contentDescription = null,
|
||||
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onSurface)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Row(
|
||||
|
|
|
@ -34,7 +34,6 @@ import org.signal.core.util.logging.Log
|
|||
import org.thoughtcrime.securesms.BiometricDeviceAuthentication
|
||||
import org.thoughtcrime.securesms.BiometricDeviceLockContract
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.settings.app.usernamelinks.main.QrImageSelectionActivity
|
||||
import org.thoughtcrime.securesms.compose.ComposeFragment
|
||||
import org.thoughtcrime.securesms.permissions.Permissions
|
||||
import org.thoughtcrime.securesms.util.navigation.safeNavigate
|
||||
|
@ -51,7 +50,6 @@ class AddLinkDeviceFragment : ComposeFragment() {
|
|||
private val viewModel: LinkDeviceViewModel by activityViewModels()
|
||||
private lateinit var biometricAuth: BiometricDeviceAuthentication
|
||||
private lateinit var biometricDeviceLockLauncher: ActivityResultLauncher<String>
|
||||
private lateinit var galleryLauncher: ActivityResultLauncher<Unit>
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
@ -74,12 +72,6 @@ class AddLinkDeviceFragment : ComposeFragment() {
|
|||
BiometricPrompt(requireActivity(), BiometricAuthenticationListener()),
|
||||
promptInfo
|
||||
)
|
||||
|
||||
galleryLauncher = registerForActivityResult(QrImageSelectionActivity.Contract()) { uri ->
|
||||
if (uri != null) {
|
||||
viewModel.scanImage(requireContext(), uri)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
|
@ -125,8 +117,7 @@ class AddLinkDeviceFragment : ComposeFragment() {
|
|||
viewModel.onLinkDeviceResult(true)
|
||||
navController.popBackStack()
|
||||
},
|
||||
onLinkDeviceFailure = { viewModel.onLinkDeviceResult(false) },
|
||||
onGalleryOpened = { galleryLauncher.launch(Unit) }
|
||||
onLinkDeviceFailure = { viewModel.onLinkDeviceResult(false) }
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -174,8 +165,7 @@ private fun MainScreen(
|
|||
onQrCodeDismissed: () -> Unit = {},
|
||||
onQrCodeRetry: () -> Unit = {},
|
||||
onLinkDeviceSuccess: () -> Unit = {},
|
||||
onLinkDeviceFailure: () -> Unit = {},
|
||||
onGalleryOpened: () -> Unit = {}
|
||||
onLinkDeviceFailure: () -> Unit = {}
|
||||
) {
|
||||
Scaffolds.Settings(
|
||||
title = "",
|
||||
|
@ -202,7 +192,6 @@ private fun MainScreen(
|
|||
linkDeviceResult = state.linkDeviceResult,
|
||||
onLinkDeviceSuccess = onLinkDeviceSuccess,
|
||||
onLinkDeviceFailure = onLinkDeviceFailure,
|
||||
onGalleryOpened = onGalleryOpened,
|
||||
modifier = Modifier.padding(contentPadding)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -37,7 +37,6 @@ fun LinkDeviceQrScanScreen(
|
|||
linkDeviceResult: LinkDeviceRepository.LinkDeviceResult,
|
||||
onLinkDeviceSuccess: () -> Unit,
|
||||
onLinkDeviceFailure: () -> Unit,
|
||||
onGalleryOpened: () -> Unit,
|
||||
modifier: Modifier = Modifier
|
||||
) {
|
||||
val lifecycleOwner = LocalLifecycleOwner.current
|
||||
|
@ -107,8 +106,7 @@ fun LinkDeviceQrScanScreen(
|
|||
},
|
||||
hasPermission = hasPermission,
|
||||
onRequestPermissions = onRequestPermissions,
|
||||
qrHeaderLabelString = stringResource(R.string.AddLinkDeviceFragment__scan_the_qr_code),
|
||||
onGalleryOpened = onGalleryOpened
|
||||
qrHeaderLabelString = stringResource(R.string.AddLinkDeviceFragment__scan_the_qr_code)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,15 +4,11 @@ import android.content.Context
|
|||
import android.net.Uri
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.load.DecodeFormat
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import org.signal.core.util.toOptional
|
||||
import org.signal.qr.QrProcessor
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
||||
import org.thoughtcrime.securesms.jobmanager.Job
|
||||
|
@ -205,26 +201,6 @@ class LinkDeviceViewModel : ViewModel() {
|
|||
}
|
||||
}
|
||||
|
||||
fun scanImage(context: Context, uri: Uri) {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
val loadBitmap = Glide.with(context)
|
||||
.asBitmap()
|
||||
.format(DecodeFormat.PREFER_ARGB_8888)
|
||||
.load(uri)
|
||||
.submit()
|
||||
|
||||
val result = QrProcessor().getScannedData(loadBitmap.get()).toOptional()
|
||||
if (result.isPresent) {
|
||||
onQrCodeScanned(result.get())
|
||||
} else {
|
||||
_state.value = _state.value.copy(
|
||||
qrCodeInvalid = true,
|
||||
showFrontCamera = null
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun clearToast() {
|
||||
_state.update {
|
||||
it.copy(
|
||||
|
|
|
@ -1,16 +1,13 @@
|
|||
package org.thoughtcrime.securesms.qr
|
||||
|
||||
import android.content.Context
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.fillMaxHeight
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.material3.ButtonDefaults
|
||||
import androidx.compose.material3.FloatingActionButton
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
|
@ -20,19 +17,16 @@ import androidx.compose.ui.Modifier
|
|||
import androidx.compose.ui.draw.drawWithContent
|
||||
import androidx.compose.ui.geometry.Offset
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.ColorFilter
|
||||
import androidx.compose.ui.graphics.Path
|
||||
import androidx.compose.ui.graphics.PathEffect
|
||||
import androidx.compose.ui.graphics.drawscope.DrawScope
|
||||
import androidx.compose.ui.graphics.drawscope.Stroke
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.viewinterop.AndroidView
|
||||
import androidx.compose.ui.viewinterop.NoOpUpdate
|
||||
import org.signal.core.ui.Buttons
|
||||
import org.signal.core.ui.theme.SignalTheme
|
||||
import org.signal.qr.QrScannerView
|
||||
import org.thoughtcrime.securesms.R
|
||||
|
||||
|
@ -46,8 +40,7 @@ object QrScanScreens {
|
|||
update: (QrScannerView) -> Unit = NoOpUpdate,
|
||||
hasPermission: Boolean,
|
||||
onRequestPermissions: () -> Unit = {},
|
||||
qrHeaderLabelString: String,
|
||||
onGalleryOpened: () -> Unit = {}
|
||||
qrHeaderLabelString: String
|
||||
) {
|
||||
val path = remember { Path() }
|
||||
|
||||
|
@ -104,18 +97,6 @@ object QrScanScreens {
|
|||
modifier = Modifier.padding(top = 24.dp).fillMaxWidth()
|
||||
)
|
||||
}
|
||||
FloatingActionButton(
|
||||
shape = CircleShape,
|
||||
containerColor = SignalTheme.colors.colorSurface1,
|
||||
modifier = Modifier.align(Alignment.BottomCenter).padding(bottom = 24.dp),
|
||||
onClick = onGalleryOpened
|
||||
) {
|
||||
Image(
|
||||
painter = painterResource(id = R.drawable.symbol_album_24),
|
||||
contentDescription = null,
|
||||
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onSurface)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue