Qr scan access controll

This commit is contained in:
Universall 2025-02-20 16:17:24 +03:00
parent c8de4bbfe4
commit f84302e4a2
5 changed files with 32 additions and 1 deletions

View File

@ -16,6 +16,8 @@ import androidx.fragment.app.viewModels
import androidx.navigation.NavController
import androidx.navigation.fragment.findNavController
import com.displaynone.acss.R
import com.displaynone.acss.components.auth.models.user.UserServiceST
import com.displaynone.acss.components.auth.models.user.repository.dto.UserDTO
import com.displaynone.acss.databinding.FragmentQrScanBinding
import com.displaynone.acss.util.collectWhenStarted
import com.displaynone.acss.util.visibleOrGone
@ -49,10 +51,25 @@ class QrScanFragment : Fragment(R.layout.fragment_qr_scan) {
binding.close.setOnClickListener { viewModel.close() }
}
private fun updateUIAccessDenied() {
binding.loading.visibleOrGone(false)
binding.viewFinder.visibleOrGone(false)
binding.close.visibleOrGone(false)
binding.error.visibleOrGone(true)
binding.error.text = requireContext().getString(R.string.access_denied)
}
private fun subscribe() {
val user: UserDTO? = UserServiceST.getInstance().getUserDTO()
if (user == null || user.isACSBlocked) {
updateUIAccessDenied()
return
}
viewModel.state.collectWhenStarted(this) { state ->
binding.loading.visibleOrGone(state is QrScanViewModel.State.Loading)
binding.viewFinder.visibleOrGone(state is QrScanViewModel.State.Scan)
if (!isCameraInit && state is QrScanViewModel.State.Scan) {
startCamera()
isCameraInit = true

View File

@ -4,6 +4,18 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/error"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:background="?android:attr/colorBackground"
android:gravity="center"
android:letterSpacing="0.05"
android:textColor="?attr/colorOnBackground"
android:textSize="24sp"
android:visibility="gone" />
<androidx.camera.view.PreviewView
android:id="@+id/viewFinder"
android:layout_width="0dp"

View File

@ -35,5 +35,6 @@
<string name="error_404">Error: Requested resource not found</string>
<string name="error_500">Server error: Try again later</string>
<string name="error_unknown">Неизвестная ошибка (%s)</string>
<string name="access_denied">Access denied</string>
</resources>

View File

@ -36,7 +36,7 @@
<string name="error_login_too_short">Логин должен содержать не менее 3 символов</string>
<string name="error_login_starts_with_digit">Логин в систему не может начинаться с цифры</string>
<string name="error_login_invalid_characters">Логин может содержать только буквы, цифры и символы подчеркивания</string>
<string name="access_denied">Доступ запрещён</string>
</resources>

View File

@ -38,4 +38,5 @@
<string name="error_404">Error: Requested resource not found</string>
<string name="error_500">Server error: Try again later</string>
<string name="error_unknown">Неизвестная ошибка (%s)</string>
<string name="access_denied">Access denied</string>
</resources>