Houston we don't have a problem
This commit is contained in:
parent
669e2e43ae
commit
b74169da95
@ -1,5 +1,7 @@
|
|||||||
package ru.myitschool.work.data;
|
package ru.myitschool.work.data;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
@ -6,7 +6,7 @@ import com.google.gson.annotations.SerializedName;
|
|||||||
|
|
||||||
public class QrDto {
|
public class QrDto {
|
||||||
@Nullable
|
@Nullable
|
||||||
@SerializedName("code")
|
@SerializedName("value")
|
||||||
public String code;
|
public String code;
|
||||||
|
|
||||||
public QrDto(@Nullable String code) {
|
public QrDto(@Nullable String code) {
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package ru.myitschool.work.domain.qr;
|
package ru.myitschool.work.domain.qr;
|
||||||
|
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
@ -3,11 +3,13 @@ package ru.myitschool.work.ui.profile;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.fragment.app.FragmentResultListener;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
import androidx.navigation.Navigation;
|
import androidx.navigation.Navigation;
|
||||||
|
|
||||||
@ -16,6 +18,7 @@ import com.squareup.picasso.Picasso;
|
|||||||
import ru.myitschool.work.R;
|
import ru.myitschool.work.R;
|
||||||
import ru.myitschool.work.databinding.FragmentUserBinding;
|
import ru.myitschool.work.databinding.FragmentUserBinding;
|
||||||
import ru.myitschool.work.domain.entities.UserEntity;
|
import ru.myitschool.work.domain.entities.UserEntity;
|
||||||
|
import ru.myitschool.work.ui.qr.scan.QrScanDestination;
|
||||||
import ru.myitschool.work.utils.Utils;
|
import ru.myitschool.work.utils.Utils;
|
||||||
|
|
||||||
public class UserFragment extends Fragment {
|
public class UserFragment extends Fragment {
|
||||||
@ -59,10 +62,8 @@ public class UserFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
binding.scan.setOnClickListener(v -> {
|
binding.scan.setOnClickListener(v -> {
|
||||||
if (getView() != null) {
|
|
||||||
Navigation.findNavController(getView()).navigate(
|
Navigation.findNavController(getView()).navigate(
|
||||||
R.id.action_userFragment_to_qrResultFragment);
|
R.id.action_userFragment_to_qrScanFragment);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
binding.logout.setOnClickListener(v -> {
|
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);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,46 +31,35 @@ public class QrResultFragment extends Fragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
|
binding = FragmentQrResultBinding.bind(view);
|
||||||
|
viewModel = new ViewModelProvider(this).get(QrResultViewModel.class);
|
||||||
|
|
||||||
Log.d("status", String.valueOf(resultQr != null));
|
getParentFragmentManager().setFragmentResultListener("requestKey", this, new FragmentResultListener() {
|
||||||
|
|
||||||
if (getView() != null && resultQr == null) {
|
|
||||||
Navigation.findNavController(getView()).navigate(R.id.action_qrResultFragment_to_qrScanFragment);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
getParentFragmentManager().setFragmentResultListener(QrScanDestination.REQUEST_KEY, this, new FragmentResultListener() {
|
|
||||||
@Override
|
@Override
|
||||||
public void onFragmentResult(@NonNull String requestKey, @NonNull Bundle result) {
|
public void onFragmentResult(@NonNull String requestKey, @NonNull Bundle result) {
|
||||||
resultQr = QrScanDestination.INSTANCE.getDataIfExist(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 -> {
|
binding.close.setOnClickListener(v -> {
|
||||||
if (getView() != null) {
|
if (getView() != null) {
|
||||||
Navigation.findNavController(getView()).navigate(
|
Navigation.findNavController(getView()).navigate(
|
||||||
|
@ -10,12 +10,9 @@ import ru.myitschool.work.data.UserRepositoryImplementation;
|
|||||||
import ru.myitschool.work.domain.entities.QrEntity;
|
import ru.myitschool.work.domain.entities.QrEntity;
|
||||||
import ru.myitschool.work.domain.entities.Status;
|
import ru.myitschool.work.domain.entities.Status;
|
||||||
import ru.myitschool.work.domain.qr.PushQrUseCase;
|
import ru.myitschool.work.domain.qr.PushQrUseCase;
|
||||||
import ru.myitschool.work.ui.profile.UserViewModel;
|
|
||||||
|
|
||||||
public class QrResultViewModel extends ViewModel {
|
public class QrResultViewModel extends ViewModel {
|
||||||
private final MutableLiveData<State> mutableStateLiveData = new MutableLiveData<State>(
|
private final MutableLiveData<State> mutableStateLiveData = new MutableLiveData<State>();
|
||||||
new State(null, false)
|
|
||||||
);
|
|
||||||
public final LiveData<State> stateLiveData = mutableStateLiveData;
|
public final LiveData<State> stateLiveData = mutableStateLiveData;
|
||||||
|
|
||||||
public final PushQrUseCase pushQrUseCase = new PushQrUseCase(
|
public final PushQrUseCase pushQrUseCase = new PushQrUseCase(
|
||||||
@ -31,12 +28,13 @@ public class QrResultViewModel extends ViewModel {
|
|||||||
private State fromStatus(Status<Boolean> status) {
|
private State fromStatus(Status<Boolean> status) {
|
||||||
return new State(
|
return new State(
|
||||||
status.getErrors() != null ? status.getErrors().getLocalizedMessage(): null,
|
status.getErrors() != null ? status.getErrors().getLocalizedMessage(): null,
|
||||||
status.getValue() != null ? status.getValue(): false
|
status.getValue() != null ? status.getValue() : false
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class State {
|
public class State {
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private final String errorMessage;
|
private final String errorMessage;
|
||||||
private final boolean isOpened;
|
private final boolean isOpened;
|
||||||
|
@ -14,14 +14,17 @@
|
|||||||
<action
|
<action
|
||||||
android:id="@+id/action_userFragment_to_qrResultFragment"
|
android:id="@+id/action_userFragment_to_qrResultFragment"
|
||||||
app:destination="@id/qrResultFragment" />
|
app:destination="@id/qrResultFragment" />
|
||||||
|
<action
|
||||||
|
android:id="@+id/action_userFragment_to_qrScanFragment"
|
||||||
|
app:destination="@id/qrScanFragment" />
|
||||||
</fragment>
|
</fragment>
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/qrScanFragment"
|
android:id="@+id/qrScanFragment"
|
||||||
android:name="ru.myitschool.work.ui.qr.scan.QrScanFragment"
|
android:name="ru.myitschool.work.ui.qr.scan.QrScanFragment"
|
||||||
android:label="QrScanFragment" >
|
android:label="QrScanFragment" >
|
||||||
<action
|
<action
|
||||||
android:id="@+id/action_qrScanFragment_to_qrResultFragment"
|
android:id="@+id/action_qrScanFragment_to_userFragment"
|
||||||
app:destination="@id/qrResultFragment" />
|
app:destination="@id/userFragment" />
|
||||||
</fragment>
|
</fragment>
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/loginFragment"
|
android:id="@+id/loginFragment"
|
||||||
@ -38,8 +41,5 @@
|
|||||||
<action
|
<action
|
||||||
android:id="@+id/action_qrResultFragment_to_userFragment"
|
android:id="@+id/action_qrResultFragment_to_userFragment"
|
||||||
app:destination="@id/userFragment" />
|
app:destination="@id/userFragment" />
|
||||||
<action
|
|
||||||
android:id="@+id/action_qrResultFragment_to_qrScanFragment"
|
|
||||||
app:destination="@id/qrScanFragment" />
|
|
||||||
</fragment>
|
</fragment>
|
||||||
</navigation>
|
</navigation>
|
Loading…
x
Reference in New Issue
Block a user