fedilab-Android-App/app/src/main/java/app/fedilab/android/client/entities/api/Status.java

145 lines
4.7 KiB
Java
Raw Normal View History

2022-05-24 10:12:04 +02:00
package app.fedilab.android.client.entities.api;
2022-04-27 15:20:42 +02:00
/* Copyright 2021 Thomas Schneider
*
* This file is a part of Fedilab
*
* This program is free software; you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* Fedilab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along with Fedilab; if not,
* see <http://www.gnu.org/licenses>. */
2022-07-18 11:43:23 +02:00
import android.content.Context;
2022-04-27 15:20:42 +02:00
import android.text.Spannable;
2022-07-18 11:43:23 +02:00
import android.view.View;
2022-04-27 15:20:42 +02:00
2022-05-14 17:41:35 +02:00
import androidx.annotation.NonNull;
2022-07-25 15:17:48 +02:00
import androidx.annotation.Nullable;
2022-05-14 17:41:35 +02:00
2022-04-27 15:20:42 +02:00
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
2022-07-18 11:43:23 +02:00
import java.lang.ref.WeakReference;
2022-04-27 15:20:42 +02:00
import java.util.Date;
import java.util.List;
2022-07-18 11:43:23 +02:00
import app.fedilab.android.helper.SpannableHelper;
2022-05-14 17:41:35 +02:00
public class Status implements Serializable, Cloneable {
2022-04-27 15:20:42 +02:00
@SerializedName("id")
public String id;
@SerializedName("created_at")
public Date created_at;
@SerializedName("in_reply_to_id")
public String in_reply_to_id;
@SerializedName("in_reply_to_account_id")
public String in_reply_to_account_id;
@SerializedName("sensitive")
public boolean sensitive;
@SerializedName("spoiler_text")
public String spoiler_text;
@SerializedName("text")
public String text;
@SerializedName("visibility")
public String visibility;
@SerializedName("language")
public String language;
@SerializedName("uri")
public String uri;
@SerializedName("url")
public String url;
@SerializedName("replies_count")
public int replies_count;
@SerializedName("reblogs_count")
public int reblogs_count;
@SerializedName("favourites_count")
public int favourites_count;
@SerializedName("favourited")
public boolean favourited;
@SerializedName("reblogged")
public boolean reblogged;
@SerializedName("muted")
public boolean muted;
@SerializedName("bookmarked")
public boolean bookmarked;
@SerializedName("pinned")
public boolean pinned;
@SerializedName("content")
public String content;
@SerializedName("reblog")
public Status reblog;
@SerializedName("application")
public App application;
@SerializedName("account")
public Account account;
@SerializedName("media_attachments")
public List<Attachment> media_attachments;
@SerializedName("mentions")
public List<Mention> mentions;
@SerializedName("tags")
public List<Tag> tags;
@SerializedName("emojis")
public List<Emoji> emojis;
@SerializedName("card")
public Card card;
@SerializedName("poll")
public Poll poll;
2022-07-19 15:49:47 +02:00
@SerializedName("pleroma")
public Pleroma pleroma;
2022-04-27 15:20:42 +02:00
2022-07-25 15:17:48 +02:00
@Override
public boolean equals(@Nullable Object obj) {
boolean same = false;
if (obj instanceof Status) {
same = this.id.equals(((Status) obj).id);
}
return same;
}
2022-05-14 17:41:35 +02:00
public Attachment art_attachment;
2022-04-27 15:20:42 +02:00
public boolean isExpended = false;
public boolean isTruncated = true;
public boolean isFetchMore = false;
2022-06-11 18:19:37 +02:00
public boolean isFetchMoreHidden = false;
2022-04-27 15:20:42 +02:00
public boolean isMediaDisplayed = false;
public boolean isMediaObfuscated = true;
public boolean isChecked = false;
public String translationContent;
public boolean translationShown;
public transient boolean isFocused = false;
public transient boolean setCursorToEnd = false;
public transient int cursorPosition = 0;
public transient boolean submitted = false;
2022-07-18 11:43:23 +02:00
//Some extra spannable element - They will be filled automatically when fetching the status
2022-07-18 14:13:12 +02:00
public synchronized Spannable getSpanContent(Context context, WeakReference<View> viewWeakReference) {
2022-07-18 14:39:47 +02:00
return SpannableHelper.convert(context, content, this, null, null, true, viewWeakReference);
2022-07-18 11:43:23 +02:00
}
public Spannable getSpanContentNitter() {
2022-07-18 14:13:12 +02:00
return SpannableHelper.convertNitter(content);
2022-07-18 11:43:23 +02:00
}
2022-07-18 14:13:12 +02:00
public synchronized Spannable getSpanSpoiler(Context context, WeakReference<View> viewWeakReference) {
2022-07-18 14:39:47 +02:00
return SpannableHelper.convert(context, spoiler_text, this, null, null, true, viewWeakReference);
2022-07-18 11:43:23 +02:00
}
2022-07-18 14:13:12 +02:00
public synchronized Spannable getSpanTranslate(Context context, WeakReference<View> viewWeakReference) {
2022-07-18 14:39:47 +02:00
return SpannableHelper.convert(context, translationContent, this, null, null, true, viewWeakReference);
2022-07-18 11:43:23 +02:00
}
2022-06-21 17:09:34 +02:00
2022-05-14 17:41:35 +02:00
@NonNull
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
2022-04-27 15:20:42 +02:00
}