From 3d9d7fa508890d7b610bc9213d386833e4345fe1 Mon Sep 17 00:00:00 2001 From: Universall Date: Thu, 20 Feb 2025 15:35:51 +0300 Subject: [PATCH] Qr scan fix; VisitType --- .kotlin/errors/errors-1740053542742.log | 82 +++++++++++++++++++ .../models/gate/repository/GateRepository.kt | 2 +- .../acs/models/visit/VisitAdapter.kt | 35 ++++---- .../models/visit/repository/dto/VisitDto.kt | 5 +- .../visit/repository/dto/VisitType.java | 6 ++ .../com/displaynone/acss/config/Constants.kt | 2 +- .../displaynone/acss/ui/init/InitFragment.kt | 26 +++++- .../acss/ui/profile/ProfileFragment.kt | 43 +++++----- .../acss/ui/scan/QrScanFragment.kt | 1 + app/src/main/res/navigation/nav_graph.xml | 3 + 10 files changed, 163 insertions(+), 42 deletions(-) create mode 100644 .kotlin/errors/errors-1740053542742.log create mode 100644 app/src/main/java/com/displaynone/acss/components/acs/models/visit/repository/dto/VisitType.java diff --git a/.kotlin/errors/errors-1740053542742.log b/.kotlin/errors/errors-1740053542742.log new file mode 100644 index 0000000..eac42ac --- /dev/null +++ b/.kotlin/errors/errors-1740053542742.log @@ -0,0 +1,82 @@ +kotlin version: 2.1.10 +error message: Daemon compilation failed: null +java.lang.Exception + at org.jetbrains.kotlin.daemon.common.CompileService$CallResult$Error.get(CompileService.kt:69) + at org.jetbrains.kotlin.daemon.common.CompileService$CallResult$Error.get(CompileService.kt:65) + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemon(GradleKotlinCompilerWork.kt:240) + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemonOrFallbackImpl(GradleKotlinCompilerWork.kt:159) + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.run(GradleKotlinCompilerWork.kt:111) + at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction.execute(GradleCompilerRunnerWithWorkers.kt:76) + at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62) + at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62) + at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44) + at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) + at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59) + at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:174) + at java.base/java.util.concurrent.FutureTask.run(Unknown Source) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169) + at org.gradle.internal.Factories$1.create(Factories.java:31) + at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:263) + at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127) + at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) + at java.base/java.util.concurrent.FutureTask.run(Unknown Source) + at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) + at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) + at java.base/java.lang.Thread.run(Unknown Source) +Caused by: java.nio.file.DirectoryNotEmptyException: C:\Users\User\AppData\Local\Temp\kotlin-backups9385457661688728923 + at java.base/sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source) + at java.base/sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source) + at java.base/java.nio.file.Files.delete(Unknown Source) + at org.jetbrains.kotlin.incremental.RecoverableCompilationTransaction$cleanupStash$2$1$1.invoke(CompilationTransaction.kt:244) + at org.jetbrains.kotlin.incremental.RecoverableCompilationTransaction$cleanupStash$2$1$1.invoke(CompilationTransaction.kt:244) + at org.jetbrains.kotlin.incremental.RecoverableCompilationTransaction.cleanupStash$lambda$11$lambda$10$lambda$9(CompilationTransaction.kt:244) + at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) + at java.base/java.util.ArrayList.forEach(Unknown Source) + at java.base/java.util.stream.SortedOps$RefSortingSink.end(Unknown Source) + at java.base/java.util.stream.Sink$ChainedReference.end(Unknown Source) + at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) + at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) + at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) + at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) + at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) + at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) + at org.jetbrains.kotlin.incremental.RecoverableCompilationTransaction.cleanupStash(CompilationTransaction.kt:244) + at org.jetbrains.kotlin.incremental.RecoverableCompilationTransaction.close(CompilationTransaction.kt:254) + at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.tryCompileIncrementally(IncrementalCompilerRunner.kt:747) + at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:120) + at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:683) + at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:91) + at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1811) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) + at java.base/java.lang.reflect.Method.invoke(Unknown Source) + at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) + at java.rmi/sun.rmi.transport.Transport$1.run(Unknown Source) + at java.rmi/sun.rmi.transport.Transport$1.run(Unknown Source) + at java.base/java.security.AccessController.doPrivileged(Unknown Source) + at java.rmi/sun.rmi.transport.Transport.serviceCall(Unknown Source) + at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(Unknown Source) + at java.base/java.security.AccessController.doPrivileged(Unknown Source) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source) + ... 3 more + + diff --git a/app/src/main/java/com/displaynone/acss/components/acs/models/gate/repository/GateRepository.kt b/app/src/main/java/com/displaynone/acss/components/acs/models/gate/repository/GateRepository.kt index 94071f9..be592d3 100644 --- a/app/src/main/java/com/displaynone/acss/components/acs/models/gate/repository/GateRepository.kt +++ b/app/src/main/java/com/displaynone/acss/components/acs/models/gate/repository/GateRepository.kt @@ -25,7 +25,7 @@ class GateRepository { append(HttpHeaders.Authorization, "Bearer $token") } contentType(ContentType.Application.Json) - setBody("""{ "code": $code }""") + setBody("""{ "code": $code, "visitType": "APP" }""") } if (result.status != HttpStatusCode.OK) { error("Status ${result.status}: ${result.body()}") diff --git a/app/src/main/java/com/displaynone/acss/components/acs/models/visit/VisitAdapter.kt b/app/src/main/java/com/displaynone/acss/components/acs/models/visit/VisitAdapter.kt index 263a2a3..4f12113 100644 --- a/app/src/main/java/com/displaynone/acss/components/acs/models/visit/VisitAdapter.kt +++ b/app/src/main/java/com/displaynone/acss/components/acs/models/visit/VisitAdapter.kt @@ -5,14 +5,13 @@ import android.view.ViewGroup import androidx.paging.PagingDataAdapter import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView -import com.displaynone.acss.R import com.displaynone.acss.components.acs.models.visit.repository.dto.VisitDto +import com.displaynone.acss.components.acs.models.visit.repository.dto.VisitType import com.displaynone.acss.databinding.ItemScannerViewBinding import java.text.SimpleDateFormat - import java.util.Locale -class VisitAdapter: PagingDataAdapter(VisitDiff) { +class VisitAdapter : PagingDataAdapter(VisitDiff) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return ViewHolder( @@ -25,26 +24,27 @@ class VisitAdapter: PagingDataAdapter(VisitDi } override fun onBindViewHolder(holder: ViewHolder, position: Int) { - holder.bind(getItem(position) ?: - VisitDto( - id = -1, - userId = -1, - gateId = -1, - createdAt = "Loading...", - ) + holder.bind( + getItem(position) ?: VisitDto( + id = -1, + userId = -1, + gateId = -1, + createdAt = "Loading...", + visitType = VisitType.APP + ) ) } - class ViewHolder( private val binding: ItemScannerViewBinding - ): RecyclerView.ViewHolder(binding.root) { - fun bind(item: VisitDto){ + ) : RecyclerView.ViewHolder(binding.root) { + fun bind(item: VisitDto) { binding.scanTime.text = "${formatDate(item.createdAt)}" - binding.scannerId.text = "Id - " + item.gateId.toString() + binding.scannerId.text = "Id турникета - " + item.gateId.toString() + binding.passType.text = "Тип прохода - " + item.visitType.toString() } - private fun formatDate(inputDate: String): String { + private fun formatDate(inputDate: String): String { val inputFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.getDefault()) val outputFormat = SimpleDateFormat("d MMMM yyyy 'в' HH:mm", Locale.getDefault()) @@ -53,9 +53,10 @@ class VisitAdapter: PagingDataAdapter(VisitDi return outputFormat.format(date) - } + } return TODO("") - }} + } + } object VisitDiff : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: VisitDto, newItem: VisitDto): Boolean { diff --git a/app/src/main/java/com/displaynone/acss/components/acs/models/visit/repository/dto/VisitDto.kt b/app/src/main/java/com/displaynone/acss/components/acs/models/visit/repository/dto/VisitDto.kt index 2702960..76f5715 100644 --- a/app/src/main/java/com/displaynone/acss/components/acs/models/visit/repository/dto/VisitDto.kt +++ b/app/src/main/java/com/displaynone/acss/components/acs/models/visit/repository/dto/VisitDto.kt @@ -13,5 +13,6 @@ data class VisitDto( val gateId: Long, @SerialName("createdAt") val createdAt: String, -) { -} \ No newline at end of file + @SerialName("visitType") + val visitType: VisitType +) \ No newline at end of file diff --git a/app/src/main/java/com/displaynone/acss/components/acs/models/visit/repository/dto/VisitType.java b/app/src/main/java/com/displaynone/acss/components/acs/models/visit/repository/dto/VisitType.java new file mode 100644 index 0000000..9819f88 --- /dev/null +++ b/app/src/main/java/com/displaynone/acss/components/acs/models/visit/repository/dto/VisitType.java @@ -0,0 +1,6 @@ +package com.displaynone.acss.components.acs.models.visit.repository.dto; + +public enum VisitType { + APP, + CARD +} diff --git a/app/src/main/java/com/displaynone/acss/config/Constants.kt b/app/src/main/java/com/displaynone/acss/config/Constants.kt index 350a0dc..5fb94b1 100644 --- a/app/src/main/java/com/displaynone/acss/config/Constants.kt +++ b/app/src/main/java/com/displaynone/acss/config/Constants.kt @@ -1,5 +1,5 @@ package com.displaynone.acss.config object Constants { - const val serverUrl = "http://192.168.56.1:8086" + const val serverUrl = "http://192.168.136.38:8086" } diff --git a/app/src/main/java/com/displaynone/acss/ui/init/InitFragment.kt b/app/src/main/java/com/displaynone/acss/ui/init/InitFragment.kt index 600ad9d..d1776e1 100644 --- a/app/src/main/java/com/displaynone/acss/ui/init/InitFragment.kt +++ b/app/src/main/java/com/displaynone/acss/ui/init/InitFragment.kt @@ -6,6 +6,7 @@ import android.net.NetworkCapabilities import android.os.Bundle import android.util.Log import android.view.View +import androidx.activity.OnBackPressedCallback import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.navigation.NavController @@ -13,6 +14,7 @@ import androidx.navigation.fragment.findNavController import com.displaynone.acss.R import com.displaynone.acss.components.auth.models.user.UserServiceST import com.displaynone.acss.databinding.FragmentInitBinding +import com.displaynone.acss.ui.scan.QrScanDestination import com.displaynone.acss.util.collectWithLifecycle import com.displaynone.acss.util.navigateTo @@ -22,7 +24,6 @@ class InitFragment : Fragment(R.layout.fragment_init) { private val viewModel: InitFragmentViewModel by viewModels() - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) _binding = FragmentInitBinding.bind(view) @@ -34,6 +35,29 @@ class InitFragment : Fragment(R.layout.fragment_init) { } pingServer() + waitForQRScanResult() + } + + private fun waitForQRScanResult() { + Log.d("1111", "122ee") + requireActivity().onBackPressedDispatcher.addCallback( + viewLifecycleOwner, + object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + + } + }) + + findNavController().currentBackStackEntry?.savedStateHandle?.getLiveData( + QrScanDestination.REQUEST_KEY + )?.observe(viewLifecycleOwner) { bundle -> + val qrCode = bundle.getString("key_qr") + + if (!qrCode.isNullOrEmpty()) view?.let { + val newBundle = Bundle().apply { putString("qrCode", qrCode) } + navigateTo(it, R.id.action_nav_init_to_qr_result, newBundle) + } + } } private fun pingServer() { diff --git a/app/src/main/java/com/displaynone/acss/ui/profile/ProfileFragment.kt b/app/src/main/java/com/displaynone/acss/ui/profile/ProfileFragment.kt index 1789de6..cf7f6ae 100644 --- a/app/src/main/java/com/displaynone/acss/ui/profile/ProfileFragment.kt +++ b/app/src/main/java/com/displaynone/acss/ui/profile/ProfileFragment.kt @@ -54,7 +54,7 @@ class ProfileFragment : Fragment(R.layout.fragment_profile) { if (getIsMe()) { refreshData() viewModel.visitListState.collectWithLifecycle(this) { data -> adapter.submitData(data) } - waitForQRScanResult() +// waitForQRScanResult() } else { showData(getUserDto()!!) Log.d("ProfileFragment", "set login") @@ -139,25 +139,28 @@ class ProfileFragment : Fragment(R.layout.fragment_profile) { return arguments?.getBoolean("isMe", true) ?: true } - private fun waitForQRScanResult() { - requireActivity().onBackPressedDispatcher.addCallback( - viewLifecycleOwner, - object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - - } - }) - - findNavController().currentBackStackEntry?.savedStateHandle?.getLiveData( - QrScanDestination.REQUEST_KEY - )?.observe(viewLifecycleOwner) { bundle -> - val qrCode = bundle.getString("key_qr") - if (!qrCode.isNullOrEmpty()) view?.let { - val newBundle = Bundle().apply { putString("qrCode", qrCode) } - navigateTo(it, R.id.action_profileFragment_to_qrResultFragment, newBundle) - } - } - } +// private fun waitForQRScanResult() { +// Log.d("1111", "122ee") +// requireActivity().onBackPressedDispatcher.addCallback( +// viewLifecycleOwner, +// object : OnBackPressedCallback(true) { +// override fun handleOnBackPressed() { +// +// } +// }) +// +// findNavController().currentBackStackEntry?.savedStateHandle?.getLiveData( +// QrScanDestination.REQUEST_KEY +// )?.observe(viewLifecycleOwner) { bundle -> +// val qrCode = bundle.getString("key_qr") +// Log.d("1111", qrCode.toString()) +// +// if (!qrCode.isNullOrEmpty()) view?.let { +// val newBundle = Bundle().apply { putString("qrCode", qrCode) } +// navigateTo(it, R.id.action_profileFragment_to_qrResultFragment, newBundle) +// } +// } +// } private fun logout() { viewModel.logout() 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 ca6d1d0..190afe9 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 @@ -1,6 +1,7 @@ package com.displaynone.acss.ui.scan import android.os.Bundle +import android.util.Log import android.view.View import androidx.activity.result.contract.ActivityResultContracts import androidx.camera.core.ImageAnalysis diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index d610388..259a571 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -13,6 +13,9 @@ +