diff --git a/app/src/main/java/ru/myitschool/work/data/UserRepositoryImplementation.java b/app/src/main/java/ru/myitschool/work/data/UserRepositoryImplementation.java index 113dacc..59a237d 100644 --- a/app/src/main/java/ru/myitschool/work/data/UserRepositoryImplementation.java +++ b/app/src/main/java/ru/myitschool/work/data/UserRepositoryImplementation.java @@ -1,5 +1,7 @@ package ru.myitschool.work.data; +import android.util.Log; + import androidx.annotation.NonNull; import java.util.function.Consumer; diff --git a/app/src/main/java/ru/myitschool/work/data/dto/QrDto.java b/app/src/main/java/ru/myitschool/work/data/dto/QrDto.java index 0b6543c..549d70f 100644 --- a/app/src/main/java/ru/myitschool/work/data/dto/QrDto.java +++ b/app/src/main/java/ru/myitschool/work/data/dto/QrDto.java @@ -6,7 +6,7 @@ import com.google.gson.annotations.SerializedName; public class QrDto { @Nullable - @SerializedName("code") + @SerializedName("value") public String code; public QrDto(@Nullable String code) { diff --git a/app/src/main/java/ru/myitschool/work/domain/qr/PushQrUseCase.java b/app/src/main/java/ru/myitschool/work/domain/qr/PushQrUseCase.java index 2dc3554..22486e9 100644 --- a/app/src/main/java/ru/myitschool/work/domain/qr/PushQrUseCase.java +++ b/app/src/main/java/ru/myitschool/work/domain/qr/PushQrUseCase.java @@ -1,5 +1,7 @@ package ru.myitschool.work.domain.qr; +import android.util.Log; + import androidx.annotation.NonNull; import java.util.function.Consumer; diff --git a/app/src/main/java/ru/myitschool/work/ui/profile/UserFragment.java b/app/src/main/java/ru/myitschool/work/ui/profile/UserFragment.java index 970eb1b..ce46168 100644 --- a/app/src/main/java/ru/myitschool/work/ui/profile/UserFragment.java +++ b/app/src/main/java/ru/myitschool/work/ui/profile/UserFragment.java @@ -3,11 +3,13 @@ package ru.myitschool.work.ui.profile; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; +import android.util.Log; import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentResultListener; import androidx.lifecycle.ViewModelProvider; import androidx.navigation.Navigation; @@ -16,6 +18,7 @@ import com.squareup.picasso.Picasso; import ru.myitschool.work.R; import ru.myitschool.work.databinding.FragmentUserBinding; import ru.myitschool.work.domain.entities.UserEntity; +import ru.myitschool.work.ui.qr.scan.QrScanDestination; import ru.myitschool.work.utils.Utils; public class UserFragment extends Fragment { @@ -59,10 +62,8 @@ public class UserFragment extends Fragment { } binding.scan.setOnClickListener(v -> { - if (getView() != null) { Navigation.findNavController(getView()).navigate( - R.id.action_userFragment_to_qrResultFragment); - } + R.id.action_userFragment_to_qrScanFragment); }); binding.logout.setOnClickListener(v -> { @@ -78,6 +79,16 @@ public class UserFragment extends Fragment { } }); + getParentFragmentManager().setFragmentResultListener(QrScanDestination.REQUEST_KEY, this, new FragmentResultListener() { + @Override + public void onFragmentResult(@NonNull String requestKey, @NonNull Bundle result) { + Log.d("result1", QrScanDestination.INSTANCE.getDataIfExist(result)); + getParentFragmentManager().setFragmentResult("requestKey", result); + Navigation.findNavController(getView()).navigate( + R.id.action_userFragment_to_qrResultFragment); + } + }); + } diff --git a/app/src/main/java/ru/myitschool/work/ui/qr/result/QrResultFragment.java b/app/src/main/java/ru/myitschool/work/ui/qr/result/QrResultFragment.java index a5c8de1..d6bac8b 100644 --- a/app/src/main/java/ru/myitschool/work/ui/qr/result/QrResultFragment.java +++ b/app/src/main/java/ru/myitschool/work/ui/qr/result/QrResultFragment.java @@ -31,46 +31,35 @@ public class QrResultFragment extends Fragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + binding = FragmentQrResultBinding.bind(view); + viewModel = new ViewModelProvider(this).get(QrResultViewModel.class); - Log.d("status", String.valueOf(resultQr != null)); - - if (getView() != null && resultQr == null) { - Navigation.findNavController(getView()).navigate(R.id.action_qrResultFragment_to_qrScanFragment); - return; - } - - getParentFragmentManager().setFragmentResultListener(QrScanDestination.REQUEST_KEY, this, new FragmentResultListener() { + getParentFragmentManager().setFragmentResultListener("requestKey", this, new FragmentResultListener() { @Override public void onFragmentResult(@NonNull String requestKey, @NonNull Bundle result) { resultQr = QrScanDestination.INSTANCE.getDataIfExist(result); + + viewModel.stateLiveData.observe(getViewLifecycleOwner(), state -> { + if (state.getErrorMessage() == null && state.isOpened()) { + binding.result.setText(R.string.door_opened); + } else if (state.getErrorMessage() != null) { + binding.result.setText(R.string.error); + Toast.makeText(getContext(), state.getErrorMessage(), Toast.LENGTH_SHORT).show(); + } else { + binding.result.setText(R.string.error); + Toast.makeText(getContext(), "error", Toast.LENGTH_SHORT).show(); + } + }); + + SharedPreferences sharedPreferences = getContext().getSharedPreferences("login", Context.MODE_PRIVATE); + String login = sharedPreferences.getString("login", null); + + if (login != null) { + viewModel.update(login, resultQr); + } } }); - Log.d("status", String.valueOf(resultQr != null)); - - binding = FragmentQrResultBinding.bind(view); - - viewModel = new ViewModelProvider(this).get(QrResultViewModel.class); - viewModel.stateLiveData.observe(getViewLifecycleOwner(), state -> { - if (state.getErrorMessage() == null && state.isOpened()) { - binding.result.setText(R.string.door_opened); - } else if (state.getErrorMessage() != null) { - binding.result.setText(R.string.error); - Toast.makeText(getContext(), state.getErrorMessage(), Toast.LENGTH_SHORT).show(); - } else { - binding.result.setText(R.string.error); - Toast.makeText(getContext(), "error", Toast.LENGTH_SHORT).show(); - } - }); - - if (getContext() != null) { - SharedPreferences sharedPreferences = getContext().getSharedPreferences("login", Context.MODE_PRIVATE); - String login = sharedPreferences.getString("login", null); - if (login != null && resultQr != null) { - viewModel.update(login, resultQr); - } - } - binding.close.setOnClickListener(v -> { if (getView() != null) { Navigation.findNavController(getView()).navigate( diff --git a/app/src/main/java/ru/myitschool/work/ui/qr/result/QrResultViewModel.java b/app/src/main/java/ru/myitschool/work/ui/qr/result/QrResultViewModel.java index b7f0491..ebe5989 100644 --- a/app/src/main/java/ru/myitschool/work/ui/qr/result/QrResultViewModel.java +++ b/app/src/main/java/ru/myitschool/work/ui/qr/result/QrResultViewModel.java @@ -10,12 +10,9 @@ import ru.myitschool.work.data.UserRepositoryImplementation; import ru.myitschool.work.domain.entities.QrEntity; import ru.myitschool.work.domain.entities.Status; import ru.myitschool.work.domain.qr.PushQrUseCase; -import ru.myitschool.work.ui.profile.UserViewModel; public class QrResultViewModel extends ViewModel { - private final MutableLiveData mutableStateLiveData = new MutableLiveData( - new State(null, false) - ); + private final MutableLiveData mutableStateLiveData = new MutableLiveData(); public final LiveData stateLiveData = mutableStateLiveData; public final PushQrUseCase pushQrUseCase = new PushQrUseCase( @@ -31,12 +28,13 @@ public class QrResultViewModel extends ViewModel { private State fromStatus(Status status) { return new State( status.getErrors() != null ? status.getErrors().getLocalizedMessage(): null, - status.getValue() != null ? status.getValue(): false + status.getValue() != null ? status.getValue() : false ); } public class State { + @Nullable private final String errorMessage; private final boolean isOpened; diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index aae9be6..e4d99c3 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -14,14 +14,17 @@ + + android:id="@+id/action_qrScanFragment_to_userFragment" + app:destination="@id/userFragment" /> - \ No newline at end of file