Skip to content

Commit 361c9d3

Browse files
author
VKolisnichenko1
committed
feat: TASK-7 working with favourite screen logic
1 parent 76c517e commit 361c9d3

File tree

8 files changed

+43
-23
lines changed

8 files changed

+43
-23
lines changed

app/src/main/java/com/android/gitapi/domain/model/ProjectItemModel.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33

44
public class ProjectItemModel {
5-
private long id;
5+
private int id;
66
private String ownerUser;
77
private String description;
88
private String stars;
@@ -14,7 +14,7 @@ public class ProjectItemModel {
1414
private String htmlUrl;
1515
private boolean isFavourite = false;
1616

17-
public ProjectItemModel(long id, String ownerUser, String description, String stars, String avatarUrl, String repositoryName, String createdAt, String language, long forks, String htmlUrl) {
17+
public ProjectItemModel(int id, String ownerUser, String description, String stars, String avatarUrl, String repositoryName, String createdAt, String language, long forks, String htmlUrl) {
1818
this.id = id;
1919
this.ownerUser = ownerUser;
2020
this.description = description;
@@ -38,14 +38,6 @@ public void setFavourite(boolean favourite) {
3838
isFavourite = favourite;
3939
}
4040

41-
public long getId() {
42-
return id;
43-
}
44-
45-
public void setId(long id) {
46-
this.id = id;
47-
}
48-
4941
public String getOwnerUser() {
5042
return ownerUser;
5143
}
@@ -118,6 +110,14 @@ public void setHtmlUrl(String htmlUrl) {
118110
this.htmlUrl = htmlUrl;
119111
}
120112

113+
public void setId(int id) {
114+
this.id = id;
115+
}
116+
117+
public int getId() {
118+
return id;
119+
}
120+
121121
@Override
122122
public String toString() {
123123
return "ProjectItemModel{" +

app/src/main/java/com/android/gitapi/domain/repository/DataBaseRepository.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package com.android.gitapi.domain.repository;
22

3-
import androidx.lifecycle.LiveData;
4-
53
import com.android.gitapi.domain.database.entity.RepositoryEntity;
64

75
import java.util.List;

app/src/main/java/com/android/gitapi/domain/usecase/AddFavouriteUseCase.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public AddFavouriteUseCase(DataBaseRepository dataBaseRepository) {
2222
protected Completable buildUseCaseSingle(ProjectItemModel itemModel) {
2323
return Completable.fromAction(() -> {
2424
RepositoryEntity repositoryEntity = new RepositoryEntity();
25+
repositoryEntity.setId(itemModel.getId());
2526
repositoryEntity.setOwnerUser(itemModel.getOwnerUser());
2627
repositoryEntity.setDescription(itemModel.getDescription());
2728
repositoryEntity.setRepositoryName(itemModel.getRepositoryName());

app/src/main/java/com/android/gitapi/presentation/details/DetailsFragment.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
4848
}
4949

5050
@Override
51-
public void onStart() {
52-
super.onStart();
51+
public void onResume() {
52+
super.onResume();
5353
TabLayoutRepository.getInstance().setIsShowTabLayoutEvent(false);
5454
}
5555

app/src/main/java/com/android/gitapi/presentation/di/ViewModelModule.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.android.gitapi.presentation.di;
22

33
import com.android.gitapi.domain.di.UseCaseModule;
4+
import com.android.gitapi.domain.repository.DataBaseRepository;
45
import com.android.gitapi.domain.usecase.AddFavouriteUseCase;
56
import com.android.gitapi.domain.usecase.DeleteFavouriteUseCase;
67
import com.android.gitapi.domain.usecase.GetFavouritesUseCase;
@@ -44,8 +45,8 @@ public DetailsViewModel provideDetailsViewModel() {
4445
}
4546

4647
@Provides
47-
public FavouritesViewModel provideFavouritesViewModel(GetFavouritesUseCase getFavouritesUseCase) {
48-
return new FavouritesViewModel(getFavouritesUseCase);
48+
public FavouritesViewModel provideFavouritesViewModel(GetFavouritesUseCase getFavouritesUseCase, DataBaseRepository dataBaseRepository) {
49+
return new FavouritesViewModel(getFavouritesUseCase, dataBaseRepository);
4950
}
5051

5152
}

app/src/main/java/com/android/gitapi/presentation/favourites/FavouritesFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ protected void setObservers() {
8484

8585
@Override
8686
public void onFavouriteClick(ProjectItemModel projectItemModel) {
87-
87+
viewModel.onFavouriteClick(projectItemModel);
8888
}
8989

9090
@Override

app/src/main/java/com/android/gitapi/presentation/favourites/FavouritesViewModel.java

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import com.android.gitapi.domain.database.entity.RepositoryEntity;
88
import com.android.gitapi.domain.model.ProjectItemModel;
9+
import com.android.gitapi.domain.repository.DataBaseRepository;
910
import com.android.gitapi.domain.usecase.GetFavouritesUseCase;
1011

1112
import java.util.ArrayList;
@@ -15,6 +16,8 @@
1516

1617
public class FavouritesViewModel extends ViewModel {
1718
GetFavouritesUseCase favouritesUseCase;
19+
DataBaseRepository dataBaseRepository;
20+
1821

1922
private final MutableLiveData<List<ProjectItemModel>> items = new MutableLiveData<>();
2023
private final ObservableBoolean observableBooleanProgress = new ObservableBoolean(false);
@@ -33,8 +36,9 @@ public ObservableBoolean getObservableBooleanProgress() {
3336
}
3437

3538
@Inject
36-
public FavouritesViewModel(GetFavouritesUseCase favouritesUseCase) {
39+
public FavouritesViewModel(GetFavouritesUseCase favouritesUseCase, DataBaseRepository dataBaseRepository) {
3740
this.favouritesUseCase = favouritesUseCase;
41+
this.dataBaseRepository = dataBaseRepository;
3842
}
3943

4044
void fetchFavourites() {
@@ -51,13 +55,30 @@ void fetchFavourites() {
5155
}
5256

5357
private void setObservableBooleanEmptyList(int listSize) {
54-
if (listSize > 0) {
55-
observableBooleanEmptyList.set(false);
56-
} else {
57-
observableBooleanEmptyList.set(true);
58+
observableBooleanEmptyList.set(listSize <= 0);
59+
}
60+
61+
void onFavouriteClick(ProjectItemModel projectItemModel) {
62+
String repositoryNameToMatch = projectItemModel.getRepositoryName();
63+
64+
List<RepositoryEntity> favorites = favouritesUseCase.execute(null);
65+
66+
RepositoryEntity itemToRemove = null;
67+
for (RepositoryEntity item : favorites) {
68+
if (repositoryNameToMatch.equals(item.getRepositoryName())) {
69+
itemToRemove = item;
70+
break;
71+
}
72+
}
73+
74+
if (itemToRemove != null) {
75+
favorites.remove(itemToRemove);
76+
dataBaseRepository.deleteRepository(repositoryNameToMatch);
77+
fetchFavourites();
5878
}
5979
}
6080

81+
6182
private ProjectItemModel parseFavourites(RepositoryEntity itemModel) {
6283
ProjectItemModel projectItemModel = new ProjectItemModel();
6384
projectItemModel.setOwnerUser(itemModel.getOwnerUser());

app/src/main/java/com/android/gitapi/presentation/repositorylist/RepositoryListViewModel.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,6 @@ public void onFavouriteClick(ProjectItemModel itemModel) {
172172
.subscribe(
173173
() -> {
174174
repositoryEntities = getFavouritesUseCase.execute(null);
175-
Log.e("showInfo", repositoryEntities.toString());
176175
},
177176
error -> {
178177
Log.e("addError", Objects.requireNonNull(error.getMessage()));

0 commit comments

Comments
 (0)