From a1869c33c6948ce0c5adbfff99896ff65f0ce0f3 Mon Sep 17 00:00:00 2001 From: Rafael da Veiga Cabral Date: Mon, 1 Jun 2020 11:15:10 -0300 Subject: [PATCH 1/2] NY-10487: [AN]: Add synchronized to prevent race conditions --- .../decorators/UnreadDividerDecoration.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/adapters/decorators/UnreadDividerDecoration.java b/app/src/main/java/com/nynja/mobile/communicator/ui/adapters/decorators/UnreadDividerDecoration.java index 61d425d04a..897a578429 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/adapters/decorators/UnreadDividerDecoration.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/adapters/decorators/UnreadDividerDecoration.java @@ -78,15 +78,18 @@ public class UnreadDividerDecoration extends RecyclerView.ItemDecoration { int viewType = mChatAdapter.getItemViewType(position); if (viewType == ChatAdapter.Dummy) return; int height = 0; - final List items = mChatAdapter.getItems(); - if (!items.get(position).isLoadingMessage() && (position == 0 || (position + 1 <= mChatAdapter.getItemCount() - && items.get(position - 1).created != null && items.get(position).created != null - && !DateUtils.areSameDates(items.get(position - 1).created, items.get(position).created)))) { - final Long created = items.get(position).created; - if (created != null) { - String date = DateUtils.getChatTime(created, mContext); - mPaint.getTextBounds(date, 0, date.length(), mDateBbounds); - height = mDateBbounds.height() + mSpaceTop; + final List items = Collections.synchronizedList(mChatAdapter.getItems()); + synchronized (items) { + if (!items.get(position).isLoadingMessage() && (position == 0 + || (position + 1 <= mChatAdapter.getItemCount() && items.get(position - 1).created != null + && items.get(position).created != null && !DateUtils + .areSameDates(items.get(position - 1).created, items.get(position).created)))) { + final Long created = items.get(position).created; + if (created != null) { + String date = DateUtils.getChatTime(created, mContext); + mPaint.getTextBounds(date, 0, date.length(), mDateBbounds); + height = mDateBbounds.height() + mSpaceTop; + } } } if (mChatAdapter.mMyReadMessage >= 0 && mChatAdapter.mUnreadMessages > 0) { -- GitLab From 6fcc8bc1dbb4ae0aa176bbe3d53aad4f072fc835 Mon Sep 17 00:00:00 2001 From: Rafael da Veiga Cabral Date: Thu, 4 Jun 2020 19:50:17 -0300 Subject: [PATCH 2/2] NY-10487: [AN]: Protects from null pointer exception on file access --- .../java/com/nynja/mobile/communicator/utils/FileUtils.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/java/com/nynja/mobile/communicator/utils/FileUtils.java b/app/src/main/java/com/nynja/mobile/communicator/utils/FileUtils.java index f2b0e2d2a7..59dd1cef4b 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/utils/FileUtils.java +++ b/app/src/main/java/com/nynja/mobile/communicator/utils/FileUtils.java @@ -826,6 +826,9 @@ public class FileUtils { public static void removeFilesOlderThan(String folder, long older) { File directory = new File(folder); File[] files = directory.listFiles(); + if (files == null) { + return; + } long currentTime = System.currentTimeMillis(); for (int i = 0; i < files.length; i++) { -- GitLab