Search in sources :

Example 31 with Status

use of com.keylesspalace.tusky.entity.Status in project Tusky by Vavassor.

the class TimelineAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
    if (position < statuses.size()) {
        StatusViewHolder holder = (StatusViewHolder) viewHolder;
        Status status = statuses.get(position);
        holder.setupWithStatus(status, statusListener);
    }
}
Also used : Status(com.keylesspalace.tusky.entity.Status)

Example 32 with Status

use of com.keylesspalace.tusky.entity.Status in project Tusky by tuskyapp.

the class TimelineFragment method onReblog.

@Override
public void onReblog(final boolean reblog, final int position) {
    final Status status = statuses.get(position).getAsRight();
    timelineCases.reblogWithCallback(status, reblog, new Callback<Status>() {

        @Override
        public void onResponse(@NonNull Call<Status> call, @NonNull Response<Status> response) {
            if (response.isSuccessful()) {
                status.setReblogged(reblog);
                if (status.getReblog() != null) {
                    status.getReblog().setReblogged(reblog);
                }
                Pair<StatusViewData.Concrete, Integer> actual = findStatusAndPosition(position, status);
                if (actual == null)
                    return;
                StatusViewData newViewData = new StatusViewData.Builder(actual.first).setReblogged(reblog).createStatusViewData();
                statuses.setPairedItem(actual.second, newViewData);
                adapter.changeItem(actual.second, newViewData, false);
            }
        }

        @Override
        public void onFailure(@NonNull Call<Status> call, @NonNull Throwable t) {
            Log.d(TAG, "Failed to reblog status " + status.getId(), t);
        }
    });
}
Also used : Status(com.keylesspalace.tusky.entity.Status) StatusViewData(com.keylesspalace.tusky.viewdata.StatusViewData) Pair(android.support.v4.util.Pair)

Example 33 with Status

use of com.keylesspalace.tusky.entity.Status in project Tusky by tuskyapp.

the class TimelineFragment method onLoadMore.

@Override
public void onLoadMore(int position) {
    // check bounds before accessing list,
    if (statuses.size() >= position && position > 0) {
        Status fromStatus = statuses.get(position - 1).getAsRightOrNull();
        Status toStatus = statuses.get(position + 1).getAsRightOrNull();
        if (fromStatus == null || toStatus == null) {
            Log.e(TAG, "Failed to load more at " + position + ", wrong placeholder position");
            return;
        }
        sendFetchTimelineRequest(fromStatus.getId(), toStatus.getId(), FetchEnd.MIDDLE, position);
        StatusViewData newViewData = new StatusViewData.Placeholder(true);
        statuses.setPairedItem(position, newViewData);
        adapter.changeItem(position, newViewData, false);
    } else {
        Log.e(TAG, "error loading more");
    }
}
Also used : Status(com.keylesspalace.tusky.entity.Status) StatusViewData(com.keylesspalace.tusky.viewdata.StatusViewData)

Example 34 with Status

use of com.keylesspalace.tusky.entity.Status in project Tusky by tuskyapp.

the class TimelineFragment method addItems.

private void addItems(List<Status> newStatuses, @Nullable String fromId) {
    if (ListUtils.isEmpty(newStatuses)) {
        return;
    }
    int end = statuses.size();
    Status last = statuses.get(end - 1).getAsRightOrNull();
    // types by ID anyway and we should change equals() for Status, I think, so this makes sense
    if (last != null && !findStatus(newStatuses, last.getId())) {
        statuses.addAll(listStatusList(newStatuses));
        List<StatusViewData> newViewDatas = statuses.getPairedCopy().subList(statuses.size() - newStatuses.size(), statuses.size());
        if (BuildConfig.DEBUG && newStatuses.size() != newViewDatas.size()) {
            String error = String.format(Locale.getDefault(), "Incorrectly got statusViewData sublist." + " newStatuses.size == %d newViewDatas.size == %d, statuses.size == %d", newStatuses.size(), newViewDatas.size(), statuses.size());
            throw new AssertionError(error);
        }
        if (fromId != null) {
            bottomId = fromId;
        }
        adapter.addItems(newViewDatas);
    }
}
Also used : Status(com.keylesspalace.tusky.entity.Status) StatusViewData(com.keylesspalace.tusky.viewdata.StatusViewData)

Example 35 with Status

use of com.keylesspalace.tusky.entity.Status in project Tusky by tuskyapp.

the class NotificationsFragment method onReblog.

@Override
public void onReblog(final boolean reblog, final int position) {
    final Notification notification = notifications.get(position).getAsRight();
    final Status status = notification.getStatus();
    timelineCases.reblogWithCallback(status, reblog, new Callback<Status>() {

        @Override
        public void onResponse(@NonNull Call<Status> call, @NonNull retrofit2.Response<Status> response) {
            if (response.isSuccessful()) {
                status.setReblogged(reblog);
                if (status.getReblog() != null) {
                    status.getReblog().setReblogged(reblog);
                }
                NotificationViewData.Concrete viewdata = (NotificationViewData.Concrete) notifications.getPairedItem(position);
                StatusViewData.Builder viewDataBuilder = new StatusViewData.Builder(viewdata.getStatusViewData());
                viewDataBuilder.setReblogged(reblog);
                NotificationViewData.Concrete newViewData = new NotificationViewData.Concrete(viewdata.getType(), viewdata.getId(), viewdata.getAccount(), viewDataBuilder.createStatusViewData(), viewdata.isExpanded());
                notifications.setPairedItem(position, newViewData);
                adapter.updateItemWithNotify(position, newViewData, false);
            }
        }

        @Override
        public void onFailure(@NonNull Call<Status> call, @NonNull Throwable t) {
            Log.d(getClass().getSimpleName(), "Failed to reblog status: " + status.getId(), t);
        }
    });
}
Also used : Status(com.keylesspalace.tusky.entity.Status) StatusViewData(com.keylesspalace.tusky.viewdata.StatusViewData) Notification(com.keylesspalace.tusky.entity.Notification) NotificationViewData(com.keylesspalace.tusky.viewdata.NotificationViewData)

Aggregations

Status (com.keylesspalace.tusky.entity.Status)48 StatusViewData (com.keylesspalace.tusky.viewdata.StatusViewData)13 Notification (com.keylesspalace.tusky.entity.Notification)10 Intent (android.content.Intent)4 ArrayList (java.util.ArrayList)4 Either (com.keylesspalace.tusky.util.Either)3 NotificationViewData (com.keylesspalace.tusky.viewdata.NotificationViewData)3 List (java.util.List)3 Context (android.content.Context)2 Pair (android.support.v4.util.Pair)2 TextView (android.widget.TextView)2 AccountEntity (com.keylesspalace.tusky.db.AccountEntity)2 PendingIntent (android.app.PendingIntent)1 ClipData (android.content.ClipData)1 ClipboardManager (android.content.ClipboardManager)1 BitmapDrawable (android.graphics.drawable.BitmapDrawable)1 ColorDrawable (android.graphics.drawable.ColorDrawable)1 Drawable (android.graphics.drawable.Drawable)1 Spanned (android.text.Spanned)1 TextUtils (android.text.TextUtils)1