Compare commits
No commits in common. "main" and "release2" have entirely different histories.
@ -1,82 +0,0 @@
|
|||||||
kotlin version: 2.0.21
|
|
||||||
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:195)
|
|
||||||
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:128)
|
|
||||||
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:170)
|
|
||||||
at org.gradle.internal.Factories$1.create(Factories.java:31)
|
|
||||||
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:267)
|
|
||||||
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:131)
|
|
||||||
at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:136)
|
|
||||||
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:165)
|
|
||||||
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:134)
|
|
||||||
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-backups16499515935208141936
|
|
||||||
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:675)
|
|
||||||
at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:92)
|
|
||||||
at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1660)
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
@ -7,7 +7,6 @@ import java.util.List;
|
|||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import ru.myitschool.work.data.dto.HistoryDto;
|
import ru.myitschool.work.data.dto.HistoryDto;
|
||||||
import ru.myitschool.work.data.dto.PassingDto;
|
|
||||||
import ru.myitschool.work.data.dto.UserDto;
|
import ru.myitschool.work.data.dto.UserDto;
|
||||||
import ru.myitschool.work.data.network.RetrofitFactory;
|
import ru.myitschool.work.data.network.RetrofitFactory;
|
||||||
import ru.myitschool.work.data.source.CredentialsDataSource;
|
import ru.myitschool.work.data.source.CredentialsDataSource;
|
||||||
@ -67,7 +66,7 @@ public class UserRepositoryImpl implements UserRepository, SignUserRepository {
|
|||||||
final String username1 = history.username;
|
final String username1 = history.username;
|
||||||
final String time = history.time;
|
final String time = history.time;
|
||||||
final String type = history.type;
|
final String type = history.type;
|
||||||
final String code = history.code;
|
final Long code = history.code;
|
||||||
if (username1 != null && id1 != null){
|
if (username1 != null && id1 != null){
|
||||||
result1.add(new HistoryEntity(id1, username1, type, time, code));
|
result1.add(new HistoryEntity(id1, username1, type, time, code));
|
||||||
}
|
}
|
||||||
@ -78,14 +77,6 @@ public class UserRepositoryImpl implements UserRepository, SignUserRepository {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void createHistory(@NonNull String username, @NonNull String type, @NonNull String time, @NonNull String code, Consumer<Status<Void>> callback) {
|
|
||||||
userApi.postNewHistory(new PassingDto(username, type, time, code), username).enqueue(new CallToConsumer<>(
|
|
||||||
callback,
|
|
||||||
dto -> null
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void isExistUser(@NonNull String username, Consumer<Status<Void>> callback) {
|
public void isExistUser(@NonNull String username, Consumer<Status<Void>> callback) {
|
||||||
userApi.isExistUser(username).enqueue(new CallToConsumer<>(
|
userApi.isExistUser(username).enqueue(new CallToConsumer<>(
|
||||||
|
@ -23,6 +23,6 @@ public class HistoryDto {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@SerializedName("code")
|
@SerializedName("code")
|
||||||
public String code;
|
public Long code;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
package ru.myitschool.work.data.dto;
|
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
|
|
||||||
import com.google.gson.annotations.SerializedName;
|
|
||||||
|
|
||||||
public class PassingDto {
|
|
||||||
public PassingDto(@Nullable String username, @Nullable String time, @Nullable String type, @Nullable String code) {
|
|
||||||
this.username = username;
|
|
||||||
this.time = time;
|
|
||||||
this.type = type;
|
|
||||||
this.code = code;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@SerializedName("username")
|
|
||||||
public String username;
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@SerializedName("time")
|
|
||||||
public String time;
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@SerializedName("type")
|
|
||||||
public String type;
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@SerializedName("code")
|
|
||||||
public String code;
|
|
||||||
|
|
||||||
}
|
|
@ -30,7 +30,6 @@ public class UserDto {
|
|||||||
@SerializedName("authority")
|
@SerializedName("authority")
|
||||||
public String authority;
|
public String authority;
|
||||||
|
|
||||||
|
|
||||||
/*public UserDto(@Nullable String username, @Nullable String password, @Nullable String photo, @Nullable Long lastVisit, @Nullable Integer idUser, int status, @Nullable String position) {
|
/*public UserDto(@Nullable String username, @Nullable String password, @Nullable String photo, @Nullable Long lastVisit, @Nullable Integer idUser, int status, @Nullable String position) {
|
||||||
this.username = username;
|
this.username = username;
|
||||||
this.password = password;
|
this.password = password;
|
||||||
@ -102,7 +101,7 @@ public class UserDto {
|
|||||||
|
|
||||||
public void setStatus(int status) {
|
public void setStatus(int status) {
|
||||||
this.status = status;
|
this.status = status;
|
||||||
}*/
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ public class RetrofitFactory {
|
|||||||
|
|
||||||
|
|
||||||
private final Retrofit retrofit = new Retrofit.Builder()
|
private final Retrofit retrofit = new Retrofit.Builder()
|
||||||
.baseUrl("http://10.6.66.85:8080/")
|
.baseUrl("http://10.0.2.2:8080/")
|
||||||
.client(client.build())
|
.client(client.build())
|
||||||
.addConverterFactory(GsonConverterFactory.create())
|
.addConverterFactory(GsonConverterFactory.create())
|
||||||
.build();
|
.build();
|
||||||
|
@ -5,16 +5,17 @@ import java.util.List;
|
|||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.http.Body;
|
import retrofit2.http.Body;
|
||||||
import retrofit2.http.GET;
|
import retrofit2.http.GET;
|
||||||
|
import retrofit2.http.POST;
|
||||||
import retrofit2.http.Path;
|
import retrofit2.http.Path;
|
||||||
import ru.myitschool.work.data.dto.HistoryDto;
|
import ru.myitschool.work.data.dto.HistoryDto;
|
||||||
import ru.myitschool.work.data.dto.PassingDto;
|
|
||||||
import ru.myitschool.work.data.dto.UserDto;
|
import ru.myitschool.work.data.dto.UserDto;
|
||||||
|
import ru.myitschool.work.ui.History;
|
||||||
|
|
||||||
|
|
||||||
public interface UserApi {
|
public interface UserApi {
|
||||||
@GET("api/user")
|
@GET("api/user")
|
||||||
Call<List<UserDto>> getAllUsers();
|
Call<List<UserDto>> getAllUsers();
|
||||||
@GET("api/{username}/info")
|
@GET("api/user/{id}")
|
||||||
Call<UserDto> getUserByUsername(@Path("username") String Username);
|
Call<UserDto> getUserByUsername(@Path("username") String Username);
|
||||||
@GET("api/{username}/auth")
|
@GET("api/{username}/auth")
|
||||||
Call<Void> isExistUser(@Path("username") String username);
|
Call<Void> isExistUser(@Path("username") String username);
|
||||||
@ -22,8 +23,6 @@ public interface UserApi {
|
|||||||
Call<Void> login();
|
Call<Void> login();
|
||||||
@GET("api/{username}/passing")
|
@GET("api/{username}/passing")
|
||||||
Call<List<HistoryDto>> getAllUserHistory(@Path("username") String username);
|
Call<List<HistoryDto>> getAllUserHistory(@Path("username") String username);
|
||||||
@GET("api/{username}/passing/new")
|
|
||||||
Call<Void> postNewHistory(@Body PassingDto dto, @Path("username") String username);
|
|
||||||
/* @GET("api/history/{id}")
|
/* @GET("api/history/{id}")
|
||||||
Call<HistoryDto> getHistoryById(@Path("id") Integer id);
|
Call<HistoryDto> getHistoryById(@Path("id") Integer id);
|
||||||
*/
|
*/
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
package ru.myitschool.work.domain;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
|
|
||||||
import java.util.function.Consumer;
|
|
||||||
|
|
||||||
import ru.myitschool.work.domain.entities.Status;
|
|
||||||
|
|
||||||
public class CreateHistoryUseCase {
|
|
||||||
private final UserRepository repo;
|
|
||||||
|
|
||||||
public CreateHistoryUseCase(UserRepository repo) {
|
|
||||||
this.repo = repo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void execute(
|
|
||||||
@NonNull String username,
|
|
||||||
@NonNull String time,
|
|
||||||
@NonNull String type,
|
|
||||||
@NonNull String code,
|
|
||||||
Consumer<Status<Void>> callback
|
|
||||||
) {
|
|
||||||
repo.createHistory(username, time, type, code, callback);
|
|
||||||
}
|
|
||||||
}
|
|
@ -17,13 +17,6 @@ public interface UserRepository {
|
|||||||
//void getVolunteerCenterById(@NonNull Integer id, @NonNull Consumer<Status<HistoryEntity>> callback);
|
//void getVolunteerCenterById(@NonNull Integer id, @NonNull Consumer<Status<HistoryEntity>> callback);
|
||||||
//void isExist(@NonNull String username, @NonNull Consumer<Status<Void>> callback);
|
//void isExist(@NonNull String username, @NonNull Consumer<Status<Void>> callback);
|
||||||
//void register(@NonNull String id, @NonNull Consumer<Status<FullUserEntity>> callback);
|
//void register(@NonNull String id, @NonNull Consumer<Status<FullUserEntity>> callback);
|
||||||
void createHistory(
|
|
||||||
@NonNull String username,
|
|
||||||
@NonNull String type,
|
|
||||||
@NonNull String time,
|
|
||||||
@NonNull String code,
|
|
||||||
Consumer<Status<Void>> callback
|
|
||||||
);
|
|
||||||
|
|
||||||
// void login(@NonNull String username, @NonNull String password, @NonNull Consumer<Status<Void>> callback);
|
// void login(@NonNull String username, @NonNull String password, @NonNull Consumer<Status<Void>> callback);
|
||||||
}
|
}
|
@ -46,15 +46,15 @@ public class HistoryEntity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public String getCode() {
|
public Long getCode() {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCode(@Nullable String code) {
|
public void setCode(@Nullable Long code) {
|
||||||
this.code = code;
|
this.code = code;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HistoryEntity(@Nullable Long id, @Nullable String username, @Nullable String type, @Nullable String time, @Nullable String code) {
|
public HistoryEntity(@Nullable Long id, @Nullable String username, @Nullable String type, @Nullable String time, @Nullable Long code) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.username = username;
|
this.username = username;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
@ -76,6 +76,6 @@ public class HistoryEntity {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@SerializedName("code")
|
@SerializedName("code")
|
||||||
public String code;
|
public Long code;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
35
app/src/main/java/ru/myitschool/work/ui/ProfileFragment.java
Normal file
35
app/src/main/java/ru/myitschool/work/ui/ProfileFragment.java
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
package ru.myitschool.work.ui;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
|
import ru.myitschool.work.R;
|
||||||
|
import ru.myitschool.work.databinding.FragmentProfileBinding;
|
||||||
|
import ru.myitschool.work.databinding.FragmentResultBinding;
|
||||||
|
|
||||||
|
public class ProfileFragment extends Fragment {
|
||||||
|
FragmentProfileBinding binding;
|
||||||
|
SharedPreferences sharedPreferences;
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
|
binding = FragmentProfileBinding.inflate(inflater, container, false);
|
||||||
|
return super.onCreateView(inflater, container, savedInstanceState);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||||
|
super.onViewCreated(view, savedInstanceState);
|
||||||
|
sharedPreferences = getContext().getSharedPreferences(getString(R.string.app_name), Context.MODE_PRIVATE);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package ru.myitschool.work.ui.result;
|
package ru.myitschool.work.ui;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
@ -6,12 +6,10 @@ import android.os.Bundle;
|
|||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
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.lifecycle.ViewModelProvider;
|
|
||||||
import androidx.navigation.Navigation;
|
import androidx.navigation.Navigation;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -22,55 +20,35 @@ import retrofit2.Response;
|
|||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
import retrofit2.converter.gson.GsonConverterFactory;
|
import retrofit2.converter.gson.GsonConverterFactory;
|
||||||
import ru.myitschool.work.R;
|
import ru.myitschool.work.R;
|
||||||
import ru.myitschool.work.databinding.FragmentProfileBinding;
|
|
||||||
import ru.myitschool.work.databinding.FragmentResultBinding;
|
import ru.myitschool.work.databinding.FragmentResultBinding;
|
||||||
import ru.myitschool.work.domain.entities.UserEntity;
|
|
||||||
import ru.myitschool.work.ui.Door;
|
|
||||||
import ru.myitschool.work.ui.StoreAPI;
|
|
||||||
import ru.myitschool.work.ui.login.LoginViewModel;
|
|
||||||
import ru.myitschool.work.ui.profile.ProfileViewModel;
|
|
||||||
import ru.myitschool.work.utils.Constants;
|
import ru.myitschool.work.utils.Constants;
|
||||||
import ru.myitschool.work.utils.PreferenceManager;
|
|
||||||
|
|
||||||
public class ResultFragment extends Fragment {
|
public class ResultFragment extends Fragment {
|
||||||
FragmentResultBinding binding;
|
FragmentResultBinding binding;
|
||||||
PreferenceManager preferenceManager;
|
SharedPreferences sharedPreferences;
|
||||||
private ResultViewModel viewModel;
|
|
||||||
Door door;
|
Door door;
|
||||||
private String code;
|
|
||||||
|
|
||||||
/*public static ResultFragment newInstance(String data) {
|
public static ResultFragment newInstance(String data) {
|
||||||
ResultFragment fragment = new ResultFragment();
|
ResultFragment fragment = new ResultFragment();
|
||||||
Bundle args = new Bundle();
|
Bundle args = new Bundle();
|
||||||
args.putString(Constants.KEY_RESULT, data);
|
args.putString(Constants.KEY_RESULT, data);
|
||||||
fragment.setArguments(args);
|
fragment.setArguments(args);
|
||||||
return fragment;
|
return fragment;
|
||||||
}*/
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
binding = FragmentResultBinding.inflate(inflater, container, false);
|
binding = FragmentResultBinding.inflate(inflater, container, false);
|
||||||
return binding.getRoot();
|
return super.onCreateView(inflater, container, savedInstanceState);
|
||||||
}
|
}
|
||||||
|
|
||||||
@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);
|
||||||
super.onViewCreated(view, savedInstanceState);
|
sharedPreferences = getContext().getSharedPreferences(getString(R.string.app_name), Context.MODE_PRIVATE);
|
||||||
preferenceManager = new PreferenceManager(this.getContext());
|
|
||||||
|
|
||||||
viewModel = new ViewModelProvider(this).get(ResultViewModel.class);
|
if (getArguments() != null) {
|
||||||
code = preferenceManager.getString(Constants.KEY_RESULT);
|
|
||||||
if (code != null) {
|
|
||||||
Toast.makeText(this.getContext(), code, Toast.LENGTH_SHORT).show();
|
|
||||||
viewModel.postUserByUsername(preferenceManager.getString(Constants.KEY_USER_USERNAME), System.currentTimeMillis() + "", "Смартфон", code);
|
|
||||||
binding.result.setText(code);
|
|
||||||
}
|
|
||||||
subscribe();
|
|
||||||
|
|
||||||
//Toast.makeText(this.getContext(), "BAN", Toast.LENGTH_SHORT).show();
|
|
||||||
/*if (getArguments() != null) {
|
|
||||||
door = new Door(getArguments().getString(Constants.KEY_RESULT, ""));
|
door = new Door(getArguments().getString(Constants.KEY_RESULT, ""));
|
||||||
} else {
|
} else {
|
||||||
door = new Door("");
|
door = new Door("");
|
||||||
@ -83,19 +61,6 @@ public class ResultFragment extends Fragment {
|
|||||||
|
|
||||||
binding.close.setOnClickListener(view1 -> {
|
binding.close.setOnClickListener(view1 -> {
|
||||||
onClickClose(view);
|
onClickClose(view);
|
||||||
});*/
|
|
||||||
}
|
|
||||||
|
|
||||||
private void subscribe() {
|
|
||||||
viewModel.stateLiveData.observe(getViewLifecycleOwner(), state -> {
|
|
||||||
|
|
||||||
if (state.isLoading() == false) {
|
|
||||||
if (state.getSended() == true) {
|
|
||||||
binding.result.setText("Opened");
|
|
||||||
} else {
|
|
||||||
binding.result.setText("Not opened");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,7 +69,7 @@ public class ResultFragment extends Fragment {
|
|||||||
//getFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, new InformationFragment()).commit();
|
//getFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, new InformationFragment()).commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*private void patchDoor() {
|
private void patchDoor() {
|
||||||
Retrofit retrofit = new Retrofit.Builder()
|
Retrofit retrofit = new Retrofit.Builder()
|
||||||
.baseUrl(ru.myitschool.work.core.Constants.SERVER_ADDRESS)
|
.baseUrl(ru.myitschool.work.core.Constants.SERVER_ADDRESS)
|
||||||
.addConverterFactory(GsonConverterFactory.create())
|
.addConverterFactory(GsonConverterFactory.create())
|
||||||
@ -134,5 +99,5 @@ public class ResultFragment extends Fragment {
|
|||||||
binding.result.setText(getText(R.string.wrong));
|
binding.result.setText(getText(R.string.wrong));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}*/
|
}
|
||||||
}
|
}
|
@ -2,14 +2,11 @@ package ru.myitschool.work.ui;
|
|||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
import androidx.navigation.NavController;
|
import androidx.navigation.NavController;
|
||||||
import androidx.navigation.Navigation;
|
|
||||||
import androidx.navigation.fragment.NavHostFragment;
|
import androidx.navigation.fragment.NavHostFragment;
|
||||||
|
|
||||||
import ru.myitschool.work.R;
|
import ru.myitschool.work.R;
|
||||||
@ -17,7 +14,6 @@ import ru.myitschool.work.databinding.ActivityRootBinding;
|
|||||||
import ru.myitschool.work.databinding.FragmentProfileBinding;
|
import ru.myitschool.work.databinding.FragmentProfileBinding;
|
||||||
import ru.myitschool.work.domain.entities.UserEntity;
|
import ru.myitschool.work.domain.entities.UserEntity;
|
||||||
import ru.myitschool.work.ui.profile.ProfileViewModel;
|
import ru.myitschool.work.ui.profile.ProfileViewModel;
|
||||||
import ru.myitschool.work.ui.qr.scan.QrScanDestination;
|
|
||||||
import ru.myitschool.work.utils.PreferenceManager;
|
import ru.myitschool.work.utils.PreferenceManager;
|
||||||
|
|
||||||
public class RootActivity extends AppCompatActivity {
|
public class RootActivity extends AppCompatActivity {
|
||||||
@ -42,52 +38,19 @@ public class RootActivity extends AppCompatActivity {
|
|||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
binding.qrScan.setOnClickListener(view -> {
|
|
||||||
onClickScan();
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/*getSupportFragmentManager().setFragmentResultListener(QrScanDestination.REQUEST_KEY, this, (requestKey, result) -> {
|
|
||||||
String res = "";
|
|
||||||
if (result.get(requestKey) != null) {
|
|
||||||
res = result.get(requestKey).toString();
|
|
||||||
}
|
|
||||||
//Toast.makeText(getContext(), res, Toast.LENGTH_LONG).show();
|
|
||||||
|
|
||||||
|
|
||||||
Toast.makeText(this, "EEEEEEEEEEEEEEEEEEEE", Toast.LENGTH_SHORT).show();
|
|
||||||
|
|
||||||
//ResultFragment resFragment = ResultFragment.newInstance(res);
|
|
||||||
//Navigation.findNavController(view).navigate(R.id.action_informationFragment_to_resultFragment);
|
|
||||||
NavHostFragment navHostFragment =
|
|
||||||
(NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.root_fragment);
|
|
||||||
NavController navController = navHostFragment.getNavController();
|
|
||||||
navController.navigate(R.id.action_informationFragment_to_resultFragment);
|
|
||||||
//getFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, resFragment).commit();
|
|
||||||
});*/
|
|
||||||
}
|
|
||||||
|
|
||||||
private void onClickScan() {
|
|
||||||
NavHostFragment navHostFragment =
|
|
||||||
(NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.root_fragment);
|
|
||||||
NavController navController = navHostFragment.getNavController();
|
|
||||||
navController.navigate(R.id.action_informationFragment_to_qrScanFragment);
|
|
||||||
//getFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, new QrScanFragment()).commit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onClickNavHistory() {
|
private void onClickNavHistory() {
|
||||||
NavHostFragment navHostFragment =
|
NavHostFragment navHostFragment =
|
||||||
(NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.root_fragment);
|
(NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.root_fragment);
|
||||||
NavController navController = navHostFragment.getNavController();
|
NavController navController = navHostFragment.getNavController();
|
||||||
navController.navigate(R.id.action_profileFragment_to_informationFragment);
|
|
||||||
//navHostFragment.getChildFragmentManager().getFragments().get(0);
|
//navHostFragment.getChildFragmentManager().getFragments().get(0);
|
||||||
switch (navController.getCurrentDestination().getId()) {
|
switch (navController.getCurrentDestination().getId()) {
|
||||||
// case R.id.historyFragment:
|
// case R.id.historyFragment:
|
||||||
// navController.navigate(R.id.action_listFragment_to_mapFragment);
|
// navController.navigate(R.id.action_listFragment_to_mapFragment);
|
||||||
// break;
|
// break;
|
||||||
case R.id.profileFragment:
|
case R.id.profileFragment:
|
||||||
//navController.navigate(R.id.action_profileFragment_to_informationFragment);
|
navController.navigate(R.id.action_informationFragment_to_profileFragment);
|
||||||
//Navigation.findNavController(view).navigate(R.id.action_loginFragment_to_informationFragment);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Log.d("tagigi", navController.getCurrentDestination().getId() + "");
|
Log.d("tagigi", navController.getCurrentDestination().getId() + "");
|
||||||
@ -99,11 +62,10 @@ public class RootActivity extends AppCompatActivity {
|
|||||||
NavHostFragment navHostFragment =
|
NavHostFragment navHostFragment =
|
||||||
(NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.root_fragment);
|
(NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.root_fragment);
|
||||||
NavController navController = navHostFragment.getNavController();
|
NavController navController = navHostFragment.getNavController();
|
||||||
navController.navigate(R.id.action_informationFragment_to_profileFragment);
|
|
||||||
//navController.navigate(R.id.action_listFragment_to_profileFragment);
|
//navController.navigate(R.id.action_listFragment_to_profileFragment);
|
||||||
switch (navController.getCurrentDestination().getId()) {
|
switch (navController.getCurrentDestination().getId()) {
|
||||||
case R.id.informationFragment:
|
case R.id.informationFragment:
|
||||||
// navController.navigate(R.id.action_informationFragment_to_profileFragment);
|
navController.navigate(R.id.action_profileFragment_to_informationFragment);
|
||||||
break;
|
break;
|
||||||
// case R.id.profileFragment:
|
// case R.id.profileFragment:
|
||||||
// navController.navigate(R.id.action_mapFragment_to_profileFragment);
|
// navController.navigate(R.id.action_mapFragment_to_profileFragment);
|
||||||
|
@ -59,7 +59,7 @@ public class InformationFragment extends Fragment {
|
|||||||
//sharedPreferences = getContext().getSharedPreferences(getString(R.string.app_name), Context.MODE_PRIVATE);
|
//sharedPreferences = getContext().getSharedPreferences(getString(R.string.app_name), Context.MODE_PRIVATE);
|
||||||
preferenceManager = new PreferenceManager(this.getContext());
|
preferenceManager = new PreferenceManager(this.getContext());
|
||||||
username = preferenceManager.getString(Constants.KEY_USER_USERNAME);
|
username = preferenceManager.getString(Constants.KEY_USER_USERNAME);
|
||||||
//Toast.makeText(getContext(), username, Toast.LENGTH_SHORT).show();
|
Toast.makeText(getContext(), username, Toast.LENGTH_SHORT).show();
|
||||||
viewModel = new ViewModelProvider(this).get(InformationViewModel.class);
|
viewModel = new ViewModelProvider(this).get(InformationViewModel.class);
|
||||||
//getInformation();
|
//getInformation();
|
||||||
|
|
||||||
@ -67,9 +67,9 @@ public class InformationFragment extends Fragment {
|
|||||||
// onClickScan(view);
|
// onClickScan(view);
|
||||||
// });
|
// });
|
||||||
|
|
||||||
/*binding.logout.setOnClickListener(view2 -> {
|
binding.logout.setOnClickListener(view2 -> {
|
||||||
onClickLogout(view);
|
onClickLogout(view);
|
||||||
});*/
|
});
|
||||||
|
|
||||||
binding.refreshLayout.setOnRefreshListener(() -> {
|
binding.refreshLayout.setOnRefreshListener(() -> {
|
||||||
viewModel.load();
|
viewModel.load();
|
||||||
@ -80,9 +80,8 @@ public class InformationFragment extends Fragment {
|
|||||||
|
|
||||||
subscribe(viewModel, adapter, view);
|
subscribe(viewModel, adapter, view);
|
||||||
|
|
||||||
|
|
||||||
//getParentFragmentManager()
|
//getParentFragmentManager()
|
||||||
/*requireActivity().getSupportFragmentManager().setFragmentResultListener(QrScanDestination.REQUEST_KEY, getViewLifecycleOwner(), (requestKey, result) -> {
|
requireActivity().getSupportFragmentManager().setFragmentResultListener(QrScanDestination.REQUEST_KEY, getViewLifecycleOwner(), (requestKey, result) -> {
|
||||||
String res = "";
|
String res = "";
|
||||||
if (result.get(requestKey) != null) {
|
if (result.get(requestKey) != null) {
|
||||||
res = result.get(requestKey).toString();
|
res = result.get(requestKey).toString();
|
||||||
@ -90,12 +89,11 @@ public class InformationFragment extends Fragment {
|
|||||||
//Toast.makeText(getContext(), res, Toast.LENGTH_LONG).show();
|
//Toast.makeText(getContext(), res, Toast.LENGTH_LONG).show();
|
||||||
|
|
||||||
|
|
||||||
Toast.makeText(getContext(), "EEEEEEEEEEEEEEEEEEEE", Toast.LENGTH_SHORT).show();
|
|
||||||
|
|
||||||
//ResultFragment resFragment = ResultFragment.newInstance(res);
|
//ResultFragment resFragment = ResultFragment.newInstance(res);
|
||||||
Navigation.findNavController(view).navigate(R.id.action_informationFragment_to_resultFragment);
|
Navigation.findNavController(view).navigate(R.id.action_informationFragment_to_resultFragment);
|
||||||
//getFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, resFragment).commit();
|
//getFragmentManager().beginTransaction().replace(R.id.nav_host_fragment, resFragment).commit();
|
||||||
});*/
|
});
|
||||||
|
|
||||||
viewModel.changeSelectedUsername(username);
|
viewModel.changeSelectedUsername(username);
|
||||||
viewModel.load();
|
viewModel.load();
|
||||||
@ -250,9 +248,9 @@ public class InformationFragment extends Fragment {
|
|||||||
|
|
||||||
private void takeError() {
|
private void takeError() {
|
||||||
//binding.photo.setVisibility(View.GONE);
|
//binding.photo.setVisibility(View.GONE);
|
||||||
//binding.fullname.setVisibility(View.GONE);
|
binding.fullname.setVisibility(View.GONE);
|
||||||
//binding.lastEntry.setVisibility(View.GONE);
|
binding.lastEntry.setVisibility(View.GONE);
|
||||||
//binding.position.setVisibility(View.GONE);
|
binding.position.setVisibility(View.GONE);
|
||||||
//binding.logout.setVisibility(View.GONE);
|
//binding.logout.setVisibility(View.GONE);
|
||||||
//binding.scan.setVisibility(View.GONE);
|
//binding.scan.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
@ -58,11 +58,11 @@ public class LoginFragment extends Fragment {
|
|||||||
public void afterTextChanged(Editable s) {
|
public void afterTextChanged(Editable s) {
|
||||||
super.afterTextChanged(s);
|
super.afterTextChanged(s);
|
||||||
viewModel.changeUsername(s.toString());
|
viewModel.changeUsername(s.toString());
|
||||||
//if (binding.password.getText().length() >= 5 && binding.username.getText().length() >= 3 && binding.username.getText().toString().matches("[0-9a-zA-Z]+") && (binding.username.getText().toString().charAt(0) + "").matches("[0-9]+")) {
|
if (binding.password.getText().length() >= 5 && binding.username.getText().length() >= 3 && binding.username.getText().toString().matches("[0-9a-zA-Z]+") && (binding.username.getText().toString().charAt(0) + "").matches("[0-9]+")) {
|
||||||
binding.login.setEnabled(true);
|
binding.login.setEnabled(true);
|
||||||
//} else {
|
} else {
|
||||||
// binding.login.setEnabled(false);
|
binding.login.setEnabled(false);
|
||||||
//}
|
}
|
||||||
if (binding.error.getVisibility() == View.VISIBLE) {
|
if (binding.error.getVisibility() == View.VISIBLE) {
|
||||||
binding.error.setVisibility(View.GONE);
|
binding.error.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
@ -79,11 +79,11 @@ public class LoginFragment extends Fragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
|
||||||
viewModel.changePassword(charSequence.toString());
|
viewModel.changePassword(charSequence.toString());
|
||||||
//if (binding.password.getText().length() >= 5 && binding.username.getText().length() >= 3 && binding.username.getText().toString().matches("[0-9a-zA-Z]+") && (binding.username.getText().toString().charAt(0) + "").matches("[0-9]+")) {
|
if (binding.password.getText().length() >= 5 && binding.username.getText().length() >= 3 && binding.username.getText().toString().matches("[0-9a-zA-Z]+") && (binding.username.getText().toString().charAt(0) + "").matches("[0-9]+")) {
|
||||||
binding.login.setEnabled(true);
|
binding.login.setEnabled(true);
|
||||||
//} else {
|
} else {
|
||||||
// binding.login.setEnabled(false);
|
binding.login.setEnabled(false);
|
||||||
//}
|
}
|
||||||
if (binding.error.getVisibility() == View.VISIBLE) {
|
if (binding.error.getVisibility() == View.VISIBLE) {
|
||||||
binding.error.setVisibility(View.GONE);
|
binding.error.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
@ -107,17 +107,16 @@ public class LoginFragment extends Fragment {
|
|||||||
|
|
||||||
private void subscribe(LoginViewModel viewModel) {
|
private void subscribe(LoginViewModel viewModel) {
|
||||||
viewModel.errorLiveData.observe(getViewLifecycleOwner(), error -> {
|
viewModel.errorLiveData.observe(getViewLifecycleOwner(), error -> {
|
||||||
//Toast.makeText(getContext(), error, Toast.LENGTH_SHORT).show();
|
Toast.makeText(getContext(), error, Toast.LENGTH_SHORT).show();
|
||||||
});
|
});
|
||||||
|
|
||||||
viewModel.openListLiveData.observe(getViewLifecycleOwner(), username -> {
|
viewModel.openListLiveData.observe(getViewLifecycleOwner(), username -> {
|
||||||
final View view = getView();
|
final View view = getView();
|
||||||
//Toast.makeText(getContext(), "FFFFFFFFF", Toast.LENGTH_SHORT).show();
|
Toast.makeText(getContext(), "FFFFFFFFF", Toast.LENGTH_SHORT).show();
|
||||||
if (view == null) return;
|
if (view == null) return;
|
||||||
preferenceManager.putString(Constants.KEY_USER_USERNAME, username);
|
preferenceManager.putString(Constants.KEY_USER_USERNAME, username);
|
||||||
preferenceManager.putString(Constants.KEY_USER_ROLE, username);
|
preferenceManager.putString(Constants.KEY_USER_ROLE, username);
|
||||||
view.getRootView().findViewById(R.id.nav_view).setVisibility(View.VISIBLE);
|
view.getRootView().findViewById(R.id.nav_view).setVisibility(View.VISIBLE);
|
||||||
view.getRootView().findViewById(R.id.qr_scan).setVisibility(View.VISIBLE);
|
|
||||||
Navigation.findNavController(view).navigate(R.id.action_loginFragment_to_informationFragment);
|
Navigation.findNavController(view).navigate(R.id.action_loginFragment_to_informationFragment);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
package ru.myitschool.work.ui.profile;
|
package ru.myitschool.work.ui.profile;
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@ -13,7 +10,6 @@ import androidx.lifecycle.ViewModelProvider;
|
|||||||
import androidx.navigation.Navigation;
|
import androidx.navigation.Navigation;
|
||||||
|
|
||||||
import ru.myitschool.work.R;
|
import ru.myitschool.work.R;
|
||||||
import ru.myitschool.work.databinding.FragmentLoginBinding;
|
|
||||||
import ru.myitschool.work.databinding.FragmentProfileBinding;
|
import ru.myitschool.work.databinding.FragmentProfileBinding;
|
||||||
import ru.myitschool.work.domain.entities.HistoryEntity;
|
import ru.myitschool.work.domain.entities.HistoryEntity;
|
||||||
import ru.myitschool.work.domain.entities.UserEntity;
|
import ru.myitschool.work.domain.entities.UserEntity;
|
||||||
@ -33,45 +29,29 @@ public class ProfileFragment extends Fragment {
|
|||||||
super(R.layout.fragment_profile);
|
super(R.layout.fragment_profile);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
|
||||||
binding = FragmentProfileBinding.inflate(inflater, container, false);
|
|
||||||
return binding.getRoot();
|
|
||||||
}
|
|
||||||
|
|
||||||
@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 = FragmentProfileBinding.bind(view);
|
||||||
preferenceManager = new PreferenceManager(this.getContext());
|
preferenceManager = new PreferenceManager(this.getContext());
|
||||||
viewModel = new ViewModelProvider(this).get(ProfileViewModel.class);
|
viewModel = new ViewModelProvider(this).get(ProfileViewModel.class);
|
||||||
subscribe();
|
viewModel.stateLiveData.observe(getViewLifecycleOwner(), state -> {
|
||||||
|
final UserEntity userEntity = state.getUser();
|
||||||
|
|
||||||
|
binding.username.setText(userEntity.getUsername());
|
||||||
|
binding.position.setText(userEntity.getPosition());
|
||||||
|
binding.lastTime.setText(userEntity.getName());
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
binding.exit.setOnClickListener(view2 -> {
|
binding.exit.setOnClickListener(view2 -> {
|
||||||
preferenceManager.clear();
|
preferenceManager.clear();
|
||||||
view.getRootView().findViewById(R.id.nav_view).setVisibility(View.GONE);
|
view.getRootView().findViewById(R.id.nav_view).setVisibility(View.GONE);
|
||||||
view.getRootView().findViewById(R.id.qr_scan).setVisibility(View.GONE);
|
Navigation.findNavController(view).navigate(R.id.action_profileFragment_to_informationFragment);
|
||||||
Navigation.findNavController(view).navigate(R.id.action_profileFragment_to_loginFragment);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
viewModel.load(preferenceManager.getString(Constants.KEY_USER_USERNAME));
|
viewModel.load(preferenceManager.getString(Constants.KEY_USER_USERNAME));
|
||||||
|
|
||||||
//Toast.makeText(getContext(), "SSSSSSSSSSS", Toast.LENGTH_SHORT).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void subscribe() {
|
|
||||||
viewModel.stateLiveData.observe(getViewLifecycleOwner(), state -> {
|
|
||||||
final UserEntity userEntity = state.getUser();
|
|
||||||
|
|
||||||
if (state.isLoading() == false) {
|
|
||||||
if (state.getUser() != null && state.getErrorMessage() == null) {
|
|
||||||
binding.username.setText(userEntity.getUsername());
|
|
||||||
binding.position.setText(userEntity.getPosition());
|
|
||||||
binding.lastTime.setText(userEntity.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -32,46 +32,46 @@ public class ProfileViewModel extends ViewModel {
|
|||||||
);
|
);
|
||||||
|
|
||||||
public void load(@NonNull String username) {
|
public void load(@NonNull String username) {
|
||||||
mutableStateLiveData.setValue(new State(null, null, true));
|
mutableStateLiveData.setValue(new State(null, null, null, true));
|
||||||
postUserByUsername(username);
|
postUserByUsername(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void postUserByUsername(String username) {
|
private void postUserByUsername(String username) {
|
||||||
final String currentUsername = username;
|
final String currentUsername = username;
|
||||||
if (currentUsername == null || currentUsername.isEmpty()) {
|
if (currentUsername == null || currentUsername.isEmpty()) {
|
||||||
//mutableErrorLiveData.postValue("Login cannot be null");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
getUserByUsernameUseCase.execute(currentUsername, status -> {
|
isUserExistUseCase.execute(currentUsername, status -> {
|
||||||
if (status.getValue() == null || status.getErrors() != null) {
|
if (status.getValue() == null || status.getErrors() != null) {
|
||||||
Log.d("tagg", status.getErrors().toString());
|
Log.d("tagg", status.getErrors().toString());
|
||||||
//mutableErrorLiveData.postValue("Something wrong. Try later =(" + status.getErrors());
|
//mutableErrorLiveData.postValue("Something wrong. Try later =(" + status.getErrors());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//userCheckCompleted = true;
|
//userCheckCompleted = true;
|
||||||
if (status.getStatusCode() == 200 && status.getErrors() == null) {
|
/*if (status.getStatusCode() == 200) {
|
||||||
mutableStateLiveData.postValue(new ProfileViewModel.State(
|
if (status.getValue() != null) {
|
||||||
status.getErrors() != null ? status.getErrors().getLocalizedMessage() : null,
|
GetAllUserHistoryUseCase.execute(status.getValue().getStatus(), status2 -> {
|
||||||
status.getValue(),
|
Log.d("taggis", status.getStatusCode() + " " + status.getErrors());
|
||||||
false
|
if (status.getStatusCode() == 200 && status.getErrors() == null) {
|
||||||
));
|
mutableStateLiveData.postValue(new ProfileViewModel.State(
|
||||||
} else {
|
status.getErrors() != null ? status.getErrors().getLocalizedMessage() : null,
|
||||||
mutableStateLiveData.postValue(new State(
|
status.getValue(),
|
||||||
status.getErrors() != null ? status.getErrors().getLocalizedMessage() : null,
|
status2.getValue(),
|
||||||
null,
|
false
|
||||||
false
|
));
|
||||||
));
|
} else {
|
||||||
}
|
//mutableErrorLiveData.postValue("Something wrong");
|
||||||
//isNewAccount = !status.getValue();
|
}
|
||||||
//checkAuth();
|
});
|
||||||
/*if(isNewAccount) {
|
} else {
|
||||||
mutableStateLiveData.postValue(
|
mutableStateLiveData.postValue(new State(
|
||||||
new State(R.string.title_user_new, R.string.button_user_new, true)
|
status.getErrors() != null ? status.getErrors().getLocalizedMessage() : null,
|
||||||
);
|
status.getValue(),
|
||||||
} else {
|
null,
|
||||||
mutableStateLiveData.postValue(
|
false
|
||||||
new State(R.string.title_user_exist, R.string.button_user_exist, true)
|
));
|
||||||
);
|
}
|
||||||
}*/
|
}*/
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -85,12 +85,15 @@ public class ProfileViewModel extends ViewModel {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private final UserEntity user;
|
private final UserEntity user;
|
||||||
|
@Nullable
|
||||||
|
private final HistoryEntity historyEntity;
|
||||||
|
|
||||||
private final boolean isLoading;
|
private final boolean isLoading;
|
||||||
|
|
||||||
public State(@Nullable String errorMessage, @Nullable UserEntity user, boolean isLoading) {
|
public State(@Nullable String errorMessage, @Nullable UserEntity user, @Nullable HistoryEntity historyEntity, boolean isLoading) {
|
||||||
this.errorMessage = errorMessage;
|
this.errorMessage = errorMessage;
|
||||||
this.user = user;
|
this.user = user;
|
||||||
|
this.historyEntity = historyEntity;
|
||||||
this.isLoading = isLoading;
|
this.isLoading = isLoading;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,6 +107,11 @@ public class ProfileViewModel extends ViewModel {
|
|||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public HistoryEntity getVolunteerCenter() {
|
||||||
|
return historyEntity;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isLoading() {
|
public boolean isLoading() {
|
||||||
return isLoading;
|
return isLoading;
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,6 @@ import androidx.fragment.app.Fragment
|
|||||||
import androidx.fragment.app.setFragmentResult
|
import androidx.fragment.app.setFragmentResult
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import androidx.navigation.Navigation
|
|
||||||
import androidx.navigation.Navigation.findNavController
|
import androidx.navigation.Navigation.findNavController
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import com.google.mlkit.vision.barcode.BarcodeScanner
|
import com.google.mlkit.vision.barcode.BarcodeScanner
|
||||||
@ -22,8 +21,6 @@ import com.google.mlkit.vision.barcode.BarcodeScanning
|
|||||||
import com.google.mlkit.vision.barcode.common.Barcode
|
import com.google.mlkit.vision.barcode.common.Barcode
|
||||||
import ru.myitschool.work.R
|
import ru.myitschool.work.R
|
||||||
import ru.myitschool.work.databinding.FragmentQrScanBinding
|
import ru.myitschool.work.databinding.FragmentQrScanBinding
|
||||||
import ru.myitschool.work.utils.Constants
|
|
||||||
import ru.myitschool.work.utils.PreferenceManager
|
|
||||||
import ru.myitschool.work.utils.collectWhenStarted
|
import ru.myitschool.work.utils.collectWhenStarted
|
||||||
import ru.myitschool.work.utils.visibleOrGone
|
import ru.myitschool.work.utils.visibleOrGone
|
||||||
|
|
||||||
@ -34,7 +31,6 @@ class QrScanFragment : Fragment(R.layout.fragment_qr_scan) {
|
|||||||
|
|
||||||
private var barcodeScanner: BarcodeScanner? = null
|
private var barcodeScanner: BarcodeScanner? = null
|
||||||
private var isCameraInit: Boolean = false
|
private var isCameraInit: Boolean = false
|
||||||
private var preferenceManager: PreferenceManager? = null
|
|
||||||
private val permissionLauncher = registerForActivityResult(
|
private val permissionLauncher = registerForActivityResult(
|
||||||
ActivityResultContracts.RequestPermission()
|
ActivityResultContracts.RequestPermission()
|
||||||
) { isGranted -> viewModel.onPermissionResult(isGranted) }
|
) { isGranted -> viewModel.onPermissionResult(isGranted) }
|
||||||
@ -44,7 +40,6 @@ class QrScanFragment : Fragment(R.layout.fragment_qr_scan) {
|
|||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
_binding = FragmentQrScanBinding.bind(view)
|
_binding = FragmentQrScanBinding.bind(view)
|
||||||
preferenceManager = PreferenceManager(this.context)
|
|
||||||
sendResult(bundleOf())
|
sendResult(bundleOf())
|
||||||
subscribe(view)
|
subscribe(view)
|
||||||
initCallback()
|
initCallback()
|
||||||
@ -71,8 +66,7 @@ class QrScanFragment : Fragment(R.layout.fragment_qr_scan) {
|
|||||||
goBack(view)
|
goBack(view)
|
||||||
}
|
}
|
||||||
is QrScanViewModel.Action.CloseWithResult -> {
|
is QrScanViewModel.Action.CloseWithResult -> {
|
||||||
preferenceManager?.putString(Constants.KEY_RESULT, action.result)
|
sendResult(QrScanDestination.packToBundle(action.result))
|
||||||
//sendResult(QrScanDestination.packToBundle(action.result))
|
|
||||||
goBack(view)
|
goBack(view)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -121,8 +115,7 @@ class QrScanFragment : Fragment(R.layout.fragment_qr_scan) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun goBack(view: View) {
|
private fun goBack(view: View) {
|
||||||
Navigation.findNavController(view).navigate(R.id.action_qrScanFragment_to_resultFragment);
|
findNavController(view).navigate<Any>(R.id.action_qrScanFragment_to_informationFragment)
|
||||||
//findNavController(view).navigate<Any>(R.id.action_qrScanFragment_to_informationFragment)
|
|
||||||
/*findNavControllerOrNull()?.popBackStack()
|
/*findNavControllerOrNull()?.popBackStack()
|
||||||
?: requireActivity().onBackPressedDispatcher.onBackPressed()*/
|
?: requireActivity().onBackPressedDispatcher.onBackPressed()*/
|
||||||
}
|
}
|
||||||
|
@ -1,95 +0,0 @@
|
|||||||
package ru.myitschool.work.ui.result;
|
|
||||||
|
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import androidx.lifecycle.LiveData;
|
|
||||||
import androidx.lifecycle.MutableLiveData;
|
|
||||||
import androidx.lifecycle.ViewModel;
|
|
||||||
|
|
||||||
import ru.myitschool.work.data.UserRepositoryImpl;
|
|
||||||
import ru.myitschool.work.domain.CreateHistoryUseCase;
|
|
||||||
import ru.myitschool.work.domain.GetAllUserHistoryUseCase;
|
|
||||||
import ru.myitschool.work.domain.GetUserByUsernameUseCase;
|
|
||||||
import ru.myitschool.work.domain.entities.HistoryEntity;
|
|
||||||
import ru.myitschool.work.domain.entities.UserEntity;
|
|
||||||
import ru.myitschool.work.domain.sign.IsUserExistUseCase;
|
|
||||||
|
|
||||||
public class ResultViewModel extends ViewModel {
|
|
||||||
private final MutableLiveData<State> mutableStateLiveData = new MutableLiveData<>();
|
|
||||||
|
|
||||||
public final LiveData<State> stateLiveData = mutableStateLiveData;
|
|
||||||
|
|
||||||
public final GetUserByUsernameUseCase getUserByUsernameUseCase = new GetUserByUsernameUseCase(
|
|
||||||
UserRepositoryImpl.getInstance()
|
|
||||||
);
|
|
||||||
|
|
||||||
/*public final GetAllUserHistoryUseCase getAllUserHistoryListUseCase = new GetAllUserHistoryUseCase(
|
|
||||||
UserRepositoryImpl.getInstance()
|
|
||||||
);*/
|
|
||||||
private final IsUserExistUseCase isUserExistUseCase = new IsUserExistUseCase(
|
|
||||||
UserRepositoryImpl.getInstance()
|
|
||||||
);
|
|
||||||
|
|
||||||
private final CreateHistoryUseCase createHistoryUseCase = new CreateHistoryUseCase(
|
|
||||||
UserRepositoryImpl.getInstance()
|
|
||||||
);
|
|
||||||
|
|
||||||
public void load(@NonNull String username) {
|
|
||||||
//mutableStateLiveData.setValue(new State(null, null, true));
|
|
||||||
//postUserByUsername(username);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void postUserByUsername(String username, String time, String type, String code) {
|
|
||||||
final String currentUsername = username;
|
|
||||||
final String currentTime = time;
|
|
||||||
final String currentType = type;
|
|
||||||
final String currentCode = code;
|
|
||||||
mutableStateLiveData.setValue(new State(null, false, true));
|
|
||||||
if (currentUsername == null || currentUsername.isEmpty()) {
|
|
||||||
//mutableErrorLiveData.postValue("Login cannot be null");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
createHistoryUseCase.execute(currentUsername, currentTime, currentType, currentCode, status -> {
|
|
||||||
if (status.getStatusCode() == 201 && status.getErrors() == null) {
|
|
||||||
mutableStateLiveData.setValue(new State(null, true, false));
|
|
||||||
} else {
|
|
||||||
mutableStateLiveData.setValue(new State(null, false, false));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public class State {
|
|
||||||
@Nullable
|
|
||||||
private final String errorMessage;
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
private final boolean sended;
|
|
||||||
|
|
||||||
private final boolean isLoading;
|
|
||||||
|
|
||||||
public State(@Nullable String errorMessage, boolean sended, boolean isLoading) {
|
|
||||||
this.errorMessage = errorMessage;
|
|
||||||
this.sended = sended;
|
|
||||||
this.isLoading = isLoading;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public String getErrorMessage() {
|
|
||||||
return errorMessage;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public boolean getSended() {
|
|
||||||
return sended;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isLoading() {
|
|
||||||
return isLoading;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -5,10 +5,18 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/image"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:src="@drawable/iconmain"
|
||||||
|
app:layout_constraintEnd_toEndOf="@id/root_fragment"
|
||||||
|
app:layout_constraintHorizontal_bias="0.17"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<fragment
|
<fragment
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toBottomOf="@id/image"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
|
||||||
|
@ -5,15 +5,6 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/image"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:src="@drawable/iconmain"
|
|
||||||
app:layout_constraintEnd_toEndOf="@id/root_fragment"
|
|
||||||
app:layout_constraintHorizontal_bias="0.17"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
<EditText
|
<EditText
|
||||||
android:id="@+id/username"
|
android:id="@+id/username"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -24,15 +24,12 @@
|
|||||||
</fragment>
|
</fragment>
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/profileFragment"
|
android:id="@+id/profileFragment"
|
||||||
android:name="ru.myitschool.work.ui.profile.ProfileFragment"
|
android:name="ru.myitschool.work.ui.ProfileFragment"
|
||||||
android:label="ProfileFragment"
|
android:label="ProfileFragment"
|
||||||
tools:layout="@layout/fragment_profile">
|
tools:layout="@layout/fragment_profile">
|
||||||
<action
|
<action
|
||||||
android:id="@+id/action_profileFragment_to_informationFragment"
|
android:id="@+id/action_profileFragment_to_informationFragment"
|
||||||
app:destination="@id/informationFragment" />
|
app:destination="@id/informationFragment" />
|
||||||
<action
|
|
||||||
android:id="@+id/action_profileFragment_to_loginFragment"
|
|
||||||
app:destination="@id/loginFragment" />
|
|
||||||
</fragment>
|
</fragment>
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/loginFragment"
|
android:id="@+id/loginFragment"
|
||||||
@ -42,9 +39,6 @@
|
|||||||
<action
|
<action
|
||||||
android:id="@+id/action_loginFragment_to_informationFragment"
|
android:id="@+id/action_loginFragment_to_informationFragment"
|
||||||
app:destination="@id/informationFragment" />
|
app:destination="@id/informationFragment" />
|
||||||
<action
|
|
||||||
android:id="@+id/action_loginFragment_to_profileFragment"
|
|
||||||
app:destination="@id/profileFragment" />
|
|
||||||
<!-- <action-->
|
<!-- <action-->
|
||||||
<!-- android:id="@+id/action_signInFragment_to_signUpFragment" -->
|
<!-- android:id="@+id/action_signInFragment_to_signUpFragment" -->
|
||||||
<!-- app:destination="@id/signUpFragment" />-->
|
<!-- app:destination="@id/signUpFragment" />-->
|
||||||
@ -58,13 +52,10 @@
|
|||||||
<action
|
<action
|
||||||
android:id="@+id/action_qrScanFragment_to_informationFragment"
|
android:id="@+id/action_qrScanFragment_to_informationFragment"
|
||||||
app:destination="@id/informationFragment" />
|
app:destination="@id/informationFragment" />
|
||||||
<action
|
|
||||||
android:id="@+id/action_qrScanFragment_to_resultFragment"
|
|
||||||
app:destination="@id/resultFragment" />
|
|
||||||
</fragment>
|
</fragment>
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/resultFragment"
|
android:id="@+id/resultFragment"
|
||||||
android:name="ru.myitschool.work.ui.result.ResultFragment"
|
android:name="ru.myitschool.work.ui.ResultFragment"
|
||||||
android:label="ResultFragment"
|
android:label="ResultFragment"
|
||||||
tools:layout="@layout/fragment_qr_scan" >
|
tools:layout="@layout/fragment_qr_scan" >
|
||||||
<action
|
<action
|
||||||
|
@ -15,5 +15,5 @@
|
|||||||
|
|
||||||
<string name="time">Время:</string>
|
<string name="time">Время:</string>
|
||||||
<string name="type">Тип прохода:</string>
|
<string name="type">Тип прохода:</string>
|
||||||
<string name="code">Идентификатор: </string>
|
<string name="code">Идентификатор:</string>
|
||||||
</resources>
|
</resources>
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name="close_button">Close</string>
|
<string name="close_button" translatable="false">Close</string>
|
||||||
</resources>
|
</resources>
|
Loading…
x
Reference in New Issue
Block a user