Some improvements
This commit is contained in:
parent
ea8f497902
commit
a632618a66
|
@ -82,7 +82,7 @@ public class ContextActivity extends BaseActivity {
|
|||
focusedStatus = null; // or other values
|
||||
if (b != null)
|
||||
focusedStatus = (Status) b.getSerializable(Helper.ARG_STATUS);
|
||||
if (focusedStatus == null && currentAccount == null || currentAccount.mastodon_account == null) {
|
||||
if (focusedStatus == null || currentAccount == null || currentAccount.mastodon_account == null) {
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1787,10 +1787,6 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
|||
holder.timer.cancel();
|
||||
holder.timer = null;
|
||||
}
|
||||
if (holder.dateTimer != null) {
|
||||
holder.dateTimer.cancel();
|
||||
holder.dateTimer = null;
|
||||
}
|
||||
if (status.emojis != null && status.emojis.size() > 0) {
|
||||
holder.timer = new Timer();
|
||||
holder.timer.scheduleAtFixedRate(new TimerTask() {
|
||||
|
@ -1803,16 +1799,6 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
|||
}
|
||||
}, 100, 100);
|
||||
}
|
||||
holder.dateTimer = new Timer();
|
||||
holder.dateTimer.scheduleAtFixedRate(new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
Handler mainHandler = new Handler(Looper.getMainLooper());
|
||||
Runnable myRunnable = () -> holder.binding.dateShort.setText(Helper.dateDiff(context, status.created_at));
|
||||
mainHandler.post(myRunnable);
|
||||
|
||||
}
|
||||
}, 100, 10000);
|
||||
} else if (viewHolder.getItemViewType() == STATUS_ART) {
|
||||
StatusViewHolder holder = (StatusViewHolder) viewHolder;
|
||||
MastodonHelper.loadPPMastodon(holder.bindingArt.artPp, status.account);
|
||||
|
@ -1881,9 +1867,6 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
|||
if (holder instanceof StatusViewHolder && ((StatusViewHolder) holder).timer != null) {
|
||||
((StatusViewHolder) holder).timer.cancel();
|
||||
}
|
||||
if (holder instanceof StatusViewHolder && ((StatusViewHolder) holder).dateTimer != null) {
|
||||
((StatusViewHolder) holder).dateTimer.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
public interface FetchMoreCallBack {
|
||||
|
@ -1900,7 +1883,6 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
|||
DrawerStatusNotificationBinding bindingNotification;
|
||||
DrawerStatusArtBinding bindingArt;
|
||||
Timer timer;
|
||||
Timer dateTimer;
|
||||
|
||||
StatusViewHolder(DrawerStatusBinding itemView) {
|
||||
super(itemView.getRoot());
|
||||
|
|
|
@ -456,25 +456,28 @@ public class FragmentMastodonNotification extends Fragment implements Notificati
|
|||
}
|
||||
int position = 0;
|
||||
//We loop through messages already in the timeline
|
||||
for (Notification notificationsAlreadyPresent : this.notificationList) {
|
||||
//We compare the date of each status and we only add status having a date greater than the another, it is inserted at this position
|
||||
//Pinned messages are ignored because their date can be older
|
||||
if (notificationReceived.id.compareTo(notificationsAlreadyPresent.id) > 0) {
|
||||
if (this.notificationList != null) {
|
||||
notificationAdapter.notifyItemRangeChanged(0, this.notificationList.size());
|
||||
for (Notification notificationsAlreadyPresent : this.notificationList) {
|
||||
//We compare the date of each status and we only add status having a date greater than the another, it is inserted at this position
|
||||
//Pinned messages are ignored because their date can be older
|
||||
if (notificationReceived.id.compareTo(notificationsAlreadyPresent.id) > 0) {
|
||||
//We add the status to a list of id - thus we know it is already in the timeline
|
||||
idOfAddedNotifications.add(notificationReceived.id);
|
||||
this.notificationList.add(position, notificationReceived);
|
||||
notificationAdapter.notifyItemInserted(position);
|
||||
break;
|
||||
}
|
||||
position++;
|
||||
}
|
||||
//Statuses added at the bottom, we flag them by position = -2 for not dealing with them and fetch more
|
||||
if (position == this.notificationList.size()) {
|
||||
//We add the status to a list of id - thus we know it is already in the timeline
|
||||
idOfAddedNotifications.add(notificationReceived.id);
|
||||
this.notificationList.add(position, notificationReceived);
|
||||
notificationAdapter.notifyItemInserted(position);
|
||||
break;
|
||||
return NOTIFICATION__AT_THE_BOTTOM;
|
||||
}
|
||||
position++;
|
||||
}
|
||||
//Statuses added at the bottom, we flag them by position = -2 for not dealing with them and fetch more
|
||||
if (position == this.notificationList.size()) {
|
||||
//We add the status to a list of id - thus we know it is already in the timeline
|
||||
idOfAddedNotifications.add(notificationReceived.id);
|
||||
this.notificationList.add(position, notificationReceived);
|
||||
notificationAdapter.notifyItemInserted(position);
|
||||
return NOTIFICATION__AT_THE_BOTTOM;
|
||||
}
|
||||
return position;
|
||||
}
|
||||
|
|
|
@ -499,27 +499,31 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
|
|||
return STATUS_PRESENT;
|
||||
}
|
||||
int position = 0;
|
||||
//We loop through messages already in the timeline
|
||||
for (Status statusAlreadyPresent : this.statuses) {
|
||||
//We compare the date of each status and we only add status having a date greater than the another, it is inserted at this position
|
||||
//Pinned messages are ignored because their date can be older
|
||||
if (statusReceived.id.compareTo(statusAlreadyPresent.id) > 0 && !statusAlreadyPresent.pinned) {
|
||||
if (this.statuses != null) {
|
||||
statusAdapter.notifyItemRangeChanged(0, this.statuses.size());
|
||||
//We loop through messages already in the timeline
|
||||
for (Status statusAlreadyPresent : this.statuses) {
|
||||
//We compare the date of each status and we only add status having a date greater than the another, it is inserted at this position
|
||||
//Pinned messages are ignored because their date can be older
|
||||
if (statusReceived.id.compareTo(statusAlreadyPresent.id) > 0 && !statusAlreadyPresent.pinned) {
|
||||
//We add the status to a list of id - thus we know it is already in the timeline
|
||||
idOfAddedStatuses.add(statusReceived.id);
|
||||
this.statuses.add(position, statusReceived);
|
||||
statusAdapter.notifyItemInserted(position);
|
||||
break;
|
||||
}
|
||||
position++;
|
||||
}
|
||||
//Statuses added at the bottom, we flag them by position = -2 for not dealing with them and fetch more
|
||||
if (position == this.statuses.size()) {
|
||||
//We add the status to a list of id - thus we know it is already in the timeline
|
||||
idOfAddedStatuses.add(statusReceived.id);
|
||||
this.statuses.add(position, statusReceived);
|
||||
statusAdapter.notifyItemInserted(position);
|
||||
break;
|
||||
return STATUS_AT_THE_BOTTOM;
|
||||
}
|
||||
position++;
|
||||
}
|
||||
//Statuses added at the bottom, we flag them by position = -2 for not dealing with them and fetch more
|
||||
if (position == this.statuses.size()) {
|
||||
//We add the status to a list of id - thus we know it is already in the timeline
|
||||
idOfAddedStatuses.add(statusReceived.id);
|
||||
this.statuses.add(position, statusReceived);
|
||||
statusAdapter.notifyItemInserted(position);
|
||||
return STATUS_AT_THE_BOTTOM;
|
||||
}
|
||||
|
||||
return position;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue