Skip to content

Commit 462841a

Browse files
Merge pull request #2736 from nextcloud/base-note-fragment-npe-checks
BaseNoteFragment NPE Checks
2 parents b7a475b + f5bd9fa commit 462841a

File tree

4 files changed

+49
-13
lines changed

4 files changed

+49
-13
lines changed

app/src/main/java/it/niedermann/owncloud/notes/edit/BaseNoteFragment.java

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException;
3333
import com.nextcloud.android.sso.exceptions.NoCurrentAccountSelectedException;
3434
import com.nextcloud.android.sso.helper.SingleAccountHelper;
35+
import com.owncloud.android.lib.common.utils.Log_OC;
3536

3637
import java.util.ArrayList;
3738
import java.util.Calendar;
@@ -141,7 +142,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
141142
requireActivity().invalidateOptionsMenu();
142143
}
143144
} catch (NextcloudFilesAppAccountNotFoundException | NoCurrentAccountSelectedException e) {
144-
e.printStackTrace();
145+
Log_OC.e(TAG, e.getLocalizedMessage());
145146
}
146147
});
147148
setHasOptionsMenu(true);
@@ -240,16 +241,26 @@ public boolean onOptionsItemSelected(MenuItem item) {
240241
repo.updateNoteAndSync(localAccount, originalNote, null, null, null);
241242
}
242243
});
243-
listener.close();
244+
245+
if (listener != null) {
246+
listener.close();
247+
}
244248
return true;
245249
} else if (itemId == R.id.menu_delete) {
246250
repo.deleteNoteAndSync(localAccount, note.getId());
247-
listener.close();
251+
252+
if (listener != null) {
253+
listener.close();
254+
}
248255
return true;
249256
} else if (itemId == R.id.menu_favorite) {
250257
note.setFavorite(!note.getFavorite());
251258
repo.toggleFavoriteAndSync(localAccount, note);
252-
listener.onNoteUpdated(note);
259+
260+
if (listener != null) {
261+
listener.onNoteUpdated(note);
262+
}
263+
253264
prepareFavoriteOption(item);
254265
return true;
255266
} else if (itemId == R.id.menu_category) {
@@ -288,22 +299,35 @@ public boolean onOptionsItemSelected(MenuItem item) {
288299
}
289300

290301
protected void shareNote() {
302+
if (note == null) {
303+
Log_OC.w(TAG, "Note is null in shareNote");
304+
return;
305+
}
306+
291307
ShareUtil.openShareDialog(requireContext(), note.getTitle(), note.getContent());
292308
}
293309

294310
@CallSuper
295311
protected void onNoteLoaded(Note note) {
312+
if (note == null) {
313+
Log_OC.w(TAG, "Note is null in onNoteLoaded");
314+
return;
315+
}
316+
296317
this.originalScrollY = note.getScrollY();
297318
scrollToY(originalScrollY);
298319
final var scrollView = getScrollView();
299-
if (scrollView != null) {
300-
scrollView.setOnScrollChangeListener((View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) -> {
301-
if (scrollY > 0) {
302-
note.setScrollY(scrollY);
303-
}
304-
onScroll(scrollY, oldScrollY);
305-
});
320+
if (scrollView == null) {
321+
Log_OC.w(TAG, "Scroll view is null, onNoteLoaded");
322+
return;
306323
}
324+
325+
scrollView.setOnScrollChangeListener((View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) -> {
326+
if (scrollY > 0) {
327+
note.setScrollY(scrollY);
328+
}
329+
onScroll(scrollY, oldScrollY);
330+
});
307331
}
308332

309333
/**

app/src/main/java/it/niedermann/owncloud/notes/edit/NoteDirectEditFragment.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,13 @@ class NoteDirectEditFragment : BaseNoteFragment(), Branded {
148148
disposables.add(timeoutDisposable)
149149
}
150150

151-
override fun onNoteLoaded(note: Note) {
151+
override fun onNoteLoaded(note: Note?) {
152152
super.onNoteLoaded(note)
153+
if (note == null) {
154+
Log_OC.w(TAG, "Note is null, onNoteLoaded")
155+
return
156+
}
157+
153158
Log.d(TAG, "onNoteLoaded() called")
154159
val newNoteParam = arguments?.getSerializable(PARAM_NEWNOTE) as Note?
155160
if (newNoteParam != null || note.remoteId == null) {

app/src/main/java/it/niedermann/owncloud/notes/edit/NoteEditFragment.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333

3434
import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton;
3535
import com.google.android.material.floatingactionbutton.FloatingActionButton;
36+
import com.owncloud.android.lib.common.utils.Log_OC;
3637

3738
import it.niedermann.owncloud.notes.R;
3839
import it.niedermann.owncloud.notes.branding.BrandingUtil;
@@ -182,7 +183,8 @@ public void onResume() {
182183
@Override
183184
protected void onNoteLoaded(Note note) {
184185
super.onNoteLoaded(note);
185-
if (binding == null) {
186+
if (binding == null || note == null) {
187+
Log_OC.w(TAG, "Note is null, onNoteLoaded");
186188
return;
187189
}
188190

app/src/main/java/it/niedermann/owncloud/notes/edit/NotePreviewFragment.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,11 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
137137
@Override
138138
protected void onNoteLoaded(Note note) {
139139
super.onNoteLoaded(note);
140+
if (note == null) {
141+
Log_OC.w(TAG, "Note is null, onNoteLoaded");
142+
return;
143+
}
144+
140145
noteLoaded = true;
141146
registerInternalNoteLinkHandler();
142147

0 commit comments

Comments
 (0)