use of com.keylesspalace.tusky.entity.Status in project Tusky by tuskyapp.
the class ReportActivity method fetchRecentStatuses.
private void fetchRecentStatuses(String accountId) {
Callback<List<Status>> callback = new Callback<List<Status>>() {
@Override
public void onResponse(Call<List<Status>> call, Response<List<Status>> response) {
if (!response.isSuccessful()) {
onFetchStatusesFailure(new Exception(response.message()));
return;
}
List<Status> statusList = response.body();
List<ReportAdapter.ReportStatus> itemList = new ArrayList<>();
for (Status status : statusList) {
if (status.getReblog() == null) {
ReportAdapter.ReportStatus item = new ReportAdapter.ReportStatus(status.getId(), status.getContent(), false);
itemList.add(item);
}
}
adapter.addItems(itemList);
}
@Override
public void onFailure(Call<List<Status>> call, Throwable t) {
onFetchStatusesFailure((Exception) t);
}
};
mastodonApi.accountStatuses(accountId, null, null, null, null).enqueue(callback);
}
use of com.keylesspalace.tusky.entity.Status in project Tusky by Vavassor.
the class NotificationHelper method getStatusReplyIntent.
private static PendingIntent getStatusReplyIntent(String action, Context context, Notification body, AccountEntity account) {
Status status = body.getStatus();
String citedLocalAuthor = status.getAccount().getLocalUsername();
String citedText = status.getContent().toString();
String inReplyToId = status.getId();
Status actionableStatus = status.getActionableStatus();
Status.Visibility replyVisibility = actionableStatus.getVisibility();
String contentWarning = actionableStatus.getSpoilerText();
List<Status.Mention> mentions = actionableStatus.getMentions();
List<String> mentionedUsernames = new ArrayList<>();
mentionedUsernames.add(actionableStatus.getAccount().getUsername());
for (Status.Mention mention : mentions) {
mentionedUsernames.add(mention.getUsername());
}
mentionedUsernames.removeAll(Collections.singleton(account.getUsername()));
mentionedUsernames = new ArrayList<>(new LinkedHashSet<>(mentionedUsernames));
Intent replyIntent = new Intent(context, SendStatusBroadcastReceiver.class).setAction(action).putExtra(KEY_CITED_AUTHOR_LOCAL, citedLocalAuthor).putExtra(KEY_CITED_TEXT, citedText).putExtra(KEY_SENDER_ACCOUNT_ID, account.getId()).putExtra(KEY_SENDER_ACCOUNT_IDENTIFIER, account.getIdentifier()).putExtra(KEY_SENDER_ACCOUNT_FULL_NAME, account.getFullName()).putExtra(KEY_NOTIFICATION_ID, notificationId).putExtra(KEY_CITED_STATUS_ID, inReplyToId).putExtra(KEY_VISIBILITY, replyVisibility).putExtra(KEY_SPOILER, contentWarning).putExtra(KEY_MENTIONS, mentionedUsernames.toArray(new String[0]));
return PendingIntent.getBroadcast(context.getApplicationContext(), notificationId, replyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
}
use of com.keylesspalace.tusky.entity.Status in project Tusky by Vavassor.
the class NotificationsFragment method onFavourite.
@Override
public void onFavourite(final boolean favourite, final int position) {
final Notification notification = notifications.get(position).asRight();
final Status status = notification.getStatus();
timelineCases.favourite(status.getId(), favourite).observeOn(AndroidSchedulers.mainThread()).to(autoDisposable(from(this))).subscribe((newStatus) -> setFavouriteForStatus(status.getId(), favourite), (t) -> Log.d(getClass().getSimpleName(), "Failed to favourite status: " + status.getId(), t));
}
use of com.keylesspalace.tusky.entity.Status in project Tusky by Vavassor.
the class NotificationsFragment method updateStatus.
private void updateStatus(String statusId, Function<Status, Status> mapper) {
int index = CollectionsKt.indexOfFirst(this.notifications, (s) -> s.isRight() && s.asRight().getStatus() != null && s.asRight().getStatus().getId().equals(statusId));
if (index == -1)
return;
// We have quite some graph here:
//
// Notification --------> Status
// ^
// |
// StatusViewData
// ^
// |
// NotificationViewData -----+
//
// So if we have "new" status we need to update all references to be sure that data is
// up-to-date:
// 1. update status
// 2. update notification
// 3. update statusViewData
// 4. update notificationViewData
Status oldStatus = notifications.get(index).asRight().getStatus();
NotificationViewData.Concrete oldViewData = (NotificationViewData.Concrete) this.notifications.getPairedItem(index);
Status newStatus = mapper.apply(oldStatus);
Notification newNotification = this.notifications.get(index).asRight().copyWithStatus(newStatus);
StatusViewData.Concrete newStatusViewData = Objects.requireNonNull(oldViewData.getStatusViewData()).copyWithStatus(newStatus);
NotificationViewData.Concrete newViewData = oldViewData.copyWithStatus(newStatusViewData);
notifications.set(index, new Either.Right<>(newNotification));
notifications.setPairedItem(index, newViewData);
updateAdapter();
}
use of com.keylesspalace.tusky.entity.Status in project Tusky by Vavassor.
the class NotificationsFragment method onViewThread.
@Override
public void onViewThread(int position) {
Notification notification = notifications.get(position).asRight();
Status status = notification.getStatus();
if (status == null)
return;
;
super.viewThread(status.getActionableId(), status.getActionableStatus().getUrl());
}
Aggregations