Skip to content

Commit 0beeed4

Browse files
committed
fix: use postValue instead of setValue for temporary delete + clean up
1 parent 4ac086c commit 0beeed4

4 files changed

Lines changed: 43 additions & 35 deletions

File tree

app/src/main/java/com/hervekakiang/logbook/MyAppViewModel.java

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ private void updateAllData(MediatorLiveData<AllData> data) {
196196

197197
private void prepareListUEDTO(AllData allData, Integer hidden) {
198198

199-
if (allData == null) {
199+
if (allData == null || allData.ues == null || allData.ues.isEmpty()) {
200200
listUEDTO.postValue(Collections.emptyList());
201201
return;
202202
}
@@ -205,11 +205,6 @@ private void prepareListUEDTO(AllData allData, Integer hidden) {
205205
List<Matiere> matieres = allData.matieres();
206206
List<Seance> seances = allData.seances();
207207

208-
if (ues == null || matieres == null || seances == null) {
209-
listUEDTO.postValue(Collections.emptyList());
210-
return;
211-
}
212-
213208
Map<Integer, Integer> vhTotalParUE = calculVhTotalParUE(matieres);
214209
Map<Integer, Integer> vhDispenseParUE = calculVhDispenseParUE(matieres, seances);
215210

@@ -228,11 +223,11 @@ private void prepareListMatiereDTO() {
228223

229224
if (listMatieres.getValue() == null
230225
|| listMatieres.getValue().isEmpty()) {
231-
listMatiereDTO.setValue(Collections.emptyList());
226+
listMatiereDTO.postValue(Collections.emptyList());
232227
return;
233228
}
234229

235-
listMatiereDTO.setValue(Collections.emptyList());
230+
listMatiereDTO.postValue(Collections.emptyList());
236231

237232
List<Matiere> allMatieres = listMatieres.getValue();
238233
Map<Integer, Integer> vhDispenseParMatiere = calculVhDispenseParMatiere(listSeances.getValue());
@@ -248,21 +243,21 @@ private void prepareListMatiereDTO() {
248243
}
249244

250245
private void prepareListMatiereDTOForSelectedUE(Integer ueId, Integer hidden) {
251-
246+
List<MatiereListAdapter.MatiereDTO> matiereDTOS = listMatiereDTO.getValue();
252247
if (ueId == null || ueId == 0
253-
|| listMatieres.getValue() == null
254-
|| listMatieres.getValue().isEmpty()) {
255-
listMatiereDTOForCurrentUE.setValue(Collections.emptyList());
248+
|| matiereDTOS == null
249+
|| matiereDTOS.isEmpty()) {
250+
listMatiereDTOForCurrentUE.postValue(Collections.emptyList());
251+
Log.d("MYAPP::MyAppViewModel", "ListMatiereDTOForSelectedUE:ueId=" + ueId);
252+
Log.d("MYAPP::MyAppViewModel", "ListMatiereDTOForSelectedUE:matiereDTOS=" + matiereDTOS);
256253
return;
257254
}
258255

256+
listMatiereDTOForCurrentUE.postValue(Collections.emptyList());
259257
List<MatiereListAdapter.MatiereDTO> result = new ArrayList<>();
260-
261-
List<MatiereListAdapter.MatiereDTO> matiereDTOS = listMatiereDTO.getValue();
262-
if (matiereDTOS == null) return;
263-
listMatiereDTOForCurrentUE.setValue(Collections.emptyList());
264258
for (MatiereListAdapter.MatiereDTO matiereDTO : matiereDTOS) {
265259
if (matiereDTO.matiere().getUeId() == ueId){
260+
Log.d("MYAPP::MyAppViewModel", "ListMatiereDTOForSelectedUE:matiereDTO=" + matiereDTO.matiere().getId());
266261
if(hidden != null && matiereDTO.matiere().getId() == hidden) continue;
267262
result.add(matiereDTO);
268263
}
@@ -274,7 +269,7 @@ private void prepareListMatiereDTOForSelectedUE(Integer ueId, Integer hidden) {
274269
private void prepareCurrentMatiereDTO() {
275270
Integer matiereId = currentMatiereId.getValue();
276271
if (matiereId == null || matiereId == 0) {
277-
currentMatiereDTO.setValue(null);
272+
currentMatiereDTO.postValue(null);
278273
return;
279274
}
280275
List<MatiereListAdapter.MatiereDTO> matiereDTOS = listMatiereDTO.getValue();
@@ -288,10 +283,10 @@ private void prepareCurrentMatiereDTO() {
288283
}
289284
}
290285
if (matiereDTO == null) {
291-
currentMatiereDTO.setValue(null);
286+
currentMatiereDTO.postValue(null);
292287
return;
293288
}
294-
currentMatiereDTO.setValue(matiereDTO);
289+
currentMatiereDTO.postValue(matiereDTO);
295290
}
296291

297292
private Map<Integer, Integer> calculVhDispenseParMatiere(List<Seance> seances) {
@@ -307,12 +302,12 @@ private Map<Integer, Integer> calculVhDispenseParMatiere(List<Seance> seances) {
307302
}
308303

309304
private Map<Integer, Integer> calculVhDispenseParUE(List<Matiere> matieres, List<Seance> seances) {
305+
Map<Integer, Integer> vhDispenseParUE = new HashMap<>();
306+
if (seances == null) return vhDispenseParUE;
310307
Map<Integer, Integer> matiereToUe = new HashMap<>();
311308
for (Matiere m : matieres) {
312309
matiereToUe.put(m.getId(), m.getUeId());
313310
}
314-
Map<Integer, Integer> vhDispenseParUE = new HashMap<>();
315-
if (seances == null) return vhDispenseParUE;
316311
for (Seance s : seances) {
317312
Integer ueId = matiereToUe.get(s.getMatiereId());
318313
if (ueId != null) {
@@ -326,6 +321,7 @@ private Map<Integer, Integer> calculVhDispenseParUE(List<Matiere> matieres, List
326321

327322
private Map<Integer, Integer> calculVhTotalParUE(List<Matiere> matieres) {
328323
Map<Integer, Integer> vhTotalParUE = new HashMap<>();
324+
if (matieres == null) return vhTotalParUE;
329325
for (Matiere m : matieres) {
330326
int ueId = m.getUeId();
331327
Integer vh = vhTotalParUE.get(ueId);

app/src/main/java/com/hervekakiang/logbook/dashboard/DashboardFragment.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
6767
tvVhTotal.setText(format(stats.total()));
6868
int percentage = (stats.total() > 0) ? (stats.effectue() * 100) / stats.total() : 0;
6969
ObjectAnimator animator = ObjectAnimator.ofInt(progressBar, "progress", 0, percentage);
70-
animator.setDuration(1000);
70+
animator.setDuration(500);
7171
animator.setInterpolator(new FastOutSlowInInterpolator());
7272
animator.start();
7373
var percentageText = format(percentage) + "%";
@@ -83,13 +83,13 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
8383
recyclerView.setAdapter(mAdapter);
8484

8585
myAppViewModel.getListUEDTO().observe(getViewLifecycleOwner(), uedtos -> {
86+
mAdapter.submitList(uedtos);
8687
if (uedtos.isEmpty()) {
8788
recyclerView.setVisibility(View.GONE);
8889
layoutEmpty.setVisibility(View.VISIBLE);
8990
} else {
9091
recyclerView.setVisibility(View.VISIBLE);
9192
layoutEmpty.setVisibility(View.GONE);
92-
mAdapter.submitList(uedtos);
9393
}
9494

9595
});
@@ -110,8 +110,8 @@ public void onSwipeLeft(RecyclerView.ViewHolder viewHolder, int position) {
110110

111111
myAppViewModel.deleteUeTemporarily(item.ue().getId());
112112

113-
Snackbar.make(recyclerView, item.ue().getNom() + " supprimé", Snackbar.LENGTH_LONG)
114-
.setAction("Annulé", v -> myAppViewModel.unDeleteUe())
113+
Snackbar.make(recyclerView, "UE supprimée", Snackbar.LENGTH_LONG)
114+
.setAction("Annuler", v -> myAppViewModel.unDeleteUe())
115115
.addCallback(new Snackbar.Callback() {
116116
@Override
117117
public void onDismissed(Snackbar transientBottomBar, int event) {
@@ -120,7 +120,7 @@ public void onDismissed(Snackbar transientBottomBar, int event) {
120120
myAppViewModel.deleteUe(item.ue().getId());
121121
Toast.makeText(
122122
recyclerView.getContext(),
123-
item.ue().getNom() + " supprimé avec succès",
123+
"UE supprimée avec succès",
124124
Toast.LENGTH_LONG).show();
125125
}
126126
}

app/src/main/java/com/hervekakiang/logbook/db/MyDatabaseHelper.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ private void insertDefaultData(SQLiteDatabase db) {
101101
try {
102102
// UE
103103
db.execSQL("INSERT INTO " + TABLE_UE + " (" + UE_CODE + ", " + UE_NOM + ") VALUES ('UE_IA01', 'Intelligence Artificielle et Apprentissage')");
104-
// db.execSQL("INSERT INTO " + TABLE_UE + " (" + UE_CODE + ", " + UE_NOM + ") VALUES ('UE_DATA04', 'Big Data et Analytics')");
105104
db.execSQL("INSERT INTO " + TABLE_UE + " (" + UE_CODE + ", " + UE_NOM + ") VALUES ('UE_5G06', 'Réseaux 5G et Mobilité')");
106105
db.execSQL("INSERT INTO " + TABLE_UE + " (" + UE_CODE + ", " + UE_NOM + ") VALUES ('UE_WEB08', 'Développement Web et Interfaces')");
107106

app/src/main/java/com/hervekakiang/logbook/ue/UeDetailFragment.java

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -100,14 +100,21 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
100100

101101
myAppViewModel.getListMatiereDTOForCurrentUE().observe(getViewLifecycleOwner(), dtoList -> {
102102
String mt = "Matières (" + dtoList.size() + ")";
103+
Log.d("MYAPP::UeDetailFragment", "matiereList=" + dtoList.size());
103104
tvMatiereListTitle.setText(mt);
104-
if (dtoList.isEmpty()) {
105-
recyclerView.setVisibility(View.GONE);
106-
layoutEmpty.setVisibility(View.VISIBLE);
107-
} else {
105+
mAdapter.submitList(dtoList, () -> {
106+
Log.d("MYAPP::UeDetailFragment", "--submitList=" + dtoList.size());
107+
if (dtoList.isEmpty()) {
108+
Log.d("MYAPP::UeDetailFragment", "---dtoList.isEmpty()=" + dtoList.size());
109+
recyclerView.setVisibility(View.INVISIBLE);
110+
layoutEmpty.setVisibility(View.VISIBLE);
111+
}
112+
Log.d("MYAPP::UeDetailFragment", "----#####submitList=" + dtoList.size());
113+
});
114+
115+
if (!dtoList.isEmpty()) {
108116
recyclerView.setVisibility(View.VISIBLE);
109117
layoutEmpty.setVisibility(View.GONE);
110-
mAdapter.submitList(dtoList);
111118
}
112119
});
113120

@@ -132,24 +139,30 @@ public void onItemLongClick(MatiereListAdapter.MatiereDTO obj) {
132139
}
133140

134141
private BasicSwipeCallback getBasicSwipeCallback() {
142+
135143
BasicSwipeCallback.SwipeListener swipeListener = new BasicSwipeCallback.SwipeListener() {
136144
@Override
137145
public void onSwipeLeft(RecyclerView.ViewHolder viewHolder, int position) {
146+
138147
var item = mAdapter.getCurrentList().get(position);
148+
139149
myAppViewModel.deleteMatiereTemporarily(item.matiere().getId());
140-
Snackbar.make(recyclerView, "Matiere supprimée", Snackbar.LENGTH_LONG)
141-
.setAction("Annulé", v -> {
150+
151+
Snackbar.make(recyclerView, "Matière supprimée", Snackbar.LENGTH_LONG)
152+
.setAction("Annuler", v -> {
142153
myAppViewModel.unDeleteMatiere();
143154
}).addCallback(new Snackbar.Callback() {
144155
@Override
145156
public void onDismissed(Snackbar transientBottomBar, int event) {
146157
super.onDismissed(transientBottomBar, event);
158+
147159
if (event != DISMISS_EVENT_ACTION) {
148160
myAppViewModel.deleteMatiere(item.matiere().getId());
149161
Toast.makeText(
150162
recyclerView.getContext(),
151-
item.matiere().getNom() + " supprimé avec succès",
163+
"Matière supprimée avec succès",
152164
Toast.LENGTH_LONG).show();
165+
153166
}
154167
}
155168
})

0 commit comments

Comments
 (0)