From f84302e4a2baaa533930d612f18662313e18d67b Mon Sep 17 00:00:00 2001 From: Universall <universall@server.com> Date: Thu, 20 Feb 2025 16:17:24 +0300 Subject: [PATCH] Qr scan access controll --- .../displaynone/acss/ui/scan/QrScanFragment.kt | 17 +++++++++++++++++ app/src/main/res/layout/fragment_qr_scan.xml | 12 ++++++++++++ app/src/main/res/values-en/strings-en.xml | 1 + app/src/main/res/values-ru/strings-ru.xml | 2 +- app/src/main/res/values/strings.xml | 1 + 5 files changed, 32 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/displaynone/acss/ui/scan/QrScanFragment.kt b/app/src/main/java/com/displaynone/acss/ui/scan/QrScanFragment.kt index 190afe9..4550fce 100644 --- a/app/src/main/java/com/displaynone/acss/ui/scan/QrScanFragment.kt +++ b/app/src/main/java/com/displaynone/acss/ui/scan/QrScanFragment.kt @@ -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 diff --git a/app/src/main/res/layout/fragment_qr_scan.xml b/app/src/main/res/layout/fragment_qr_scan.xml index a52eb71..95ed14b 100644 --- a/app/src/main/res/layout/fragment_qr_scan.xml +++ b/app/src/main/res/layout/fragment_qr_scan.xml @@ -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" diff --git a/app/src/main/res/values-en/strings-en.xml b/app/src/main/res/values-en/strings-en.xml index f979947..c6cc7ff 100644 --- a/app/src/main/res/values-en/strings-en.xml +++ b/app/src/main/res/values-en/strings-en.xml @@ -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> \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings-ru.xml b/app/src/main/res/values-ru/strings-ru.xml index e9a5b1c..2f90354 100644 --- a/app/src/main/res/values-ru/strings-ru.xml +++ b/app/src/main/res/values-ru/strings-ru.xml @@ -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> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index faa86ad..948f94d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -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> \ No newline at end of file