Loading app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Card.java +17 −0 Original line number Diff line number Diff line Loading @@ -14,11 +14,25 @@ package app.fedilab.android.mastodon.client.entities.api; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see <http://www.gnu.org/licenses>. */ import androidx.annotation.Nullable; import com.google.gson.annotations.SerializedName; import java.io.Serializable; import java.util.List; public class Card implements Serializable { public static class PreviewCardAuthor implements Serializable { @SerializedName("name") public String name; @SerializedName("url") public String url; @Nullable @SerializedName("account") public Account account; } @SerializedName("url") public String url; @SerializedName("title") Loading Loading @@ -47,4 +61,7 @@ public class Card implements Serializable { public String embed_url; @SerializedName("blurhash") public String blurhash; @Nullable @SerializedName("authors") public List<PreviewCardAuthor> authors; } app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +36 −0 Original line number Diff line number Diff line Loading @@ -160,6 +160,7 @@ import app.fedilab.android.mastodon.activities.StatusInfoActivity; import app.fedilab.android.mastodon.activities.TimelineActivity; import app.fedilab.android.mastodon.activities.admin.AdminAccountActivity; import app.fedilab.android.mastodon.client.entities.api.Attachment; import app.fedilab.android.mastodon.client.entities.api.Card; import app.fedilab.android.mastodon.client.entities.api.Field; import app.fedilab.android.mastodon.client.entities.api.Filter; import app.fedilab.android.mastodon.client.entities.api.Notification; Loading Loading @@ -1026,6 +1027,41 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.card.setOnClickListener(v -> { SpannableHelper.linkClickAction(context, statusToDeal.card.url); }); Card.PreviewCardAuthor author = null; if (statusToDeal.card.authors != null && !statusToDeal.card.authors.isEmpty()) { author = statusToDeal.card.authors.get(0); } if (author != null && (author.account != null || author.name != null)) { holder.binding.cardAuthorSeparator.setVisibility(View.VISIBLE); holder.binding.cardAuthorContainer.setVisibility(View.VISIBLE); if (author.account != null) { String displayName = author.account.display_name != null && !author.account.display_name.isEmpty() ? author.account.display_name : author.name; holder.binding.cardAuthorName.setText(context.getString(R.string.more_from, displayName)); holder.binding.cardAuthorAvatar.setVisibility(View.VISIBLE); MastodonHelper.loadPPMastodon(holder.binding.cardAuthorAvatar, author.account); app.fedilab.android.mastodon.client.entities.api.Account finalAccount = author.account; holder.binding.cardAuthorContainer.setOnClickListener(v -> { Intent intent = new Intent(context, ProfileActivity.class); Bundle args = new Bundle(); args.putSerializable(Helper.ARG_ACCOUNT, finalAccount); new CachedBundle(context).insertBundle(args, Helper.getCurrentAccount(context), bundleId -> { Bundle bundle = new Bundle(); bundle.putLong(Helper.ARG_INTENT_ID, bundleId); intent.putExtras(bundle); context.startActivity(intent); }); }); } else { holder.binding.cardAuthorName.setText(context.getString(R.string.more_from, author.name)); holder.binding.cardAuthorAvatar.setVisibility(View.GONE); holder.binding.cardAuthorContainer.setOnClickListener(null); holder.binding.cardAuthorContainer.setClickable(false); } } else { holder.binding.cardAuthorSeparator.setVisibility(View.GONE); holder.binding.cardAuthorContainer.setVisibility(View.GONE); } holder.binding.card.setVisibility(View.VISIBLE); } else { holder.binding.card.setVisibility(View.GONE); Loading app/src/main/res/layouts/mastodon/layout/drawer_status.xml +40 −0 Original line number Diff line number Diff line Loading @@ -458,6 +458,46 @@ android:textAppearance="@style/TextAppearance.AppCompat.Caption" tools:text="https://domain.test" /> <View android:id="@+id/card_author_separator" android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginTop="6dp" android:background="?android:attr/listDivider" android:visibility="gone" tools:visibility="visible" /> <androidx.appcompat.widget.LinearLayoutCompat android:id="@+id/card_author_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" android:paddingTop="6dp" android:paddingBottom="2dp" android:visibility="gone" tools:visibility="visible"> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/card_author_avatar" android:layout_width="24dp" android:layout_height="24dp" android:contentDescription="@string/profile_picture" tools:src="@tools:sample/avatars" /> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/card_author_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:ellipsize="end" android:maxLines="1" android:textColor="?colorPrimary" android:textSize="13sp" tools:text="More from Author" /> </androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat> Loading app/src/main/res/layouts/mastodon/layout/popup_status_theme.xml +36 −0 Original line number Diff line number Diff line Loading @@ -266,6 +266,42 @@ android:text="https://domain.test" android:textAppearance="@style/TextAppearance.AppCompat.Caption" /> <View android:id="@+id/card_author_separator" android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginTop="6dp" android:background="?android:attr/listDivider" android:visibility="gone" /> <androidx.appcompat.widget.LinearLayoutCompat android:id="@+id/card_author_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" android:paddingTop="6dp" android:paddingBottom="2dp" android:visibility="gone"> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/card_author_avatar" android:layout_width="24dp" android:layout_height="24dp" android:contentDescription="@string/profile_picture" /> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/card_author_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:ellipsize="end" android:maxLines="1" android:textColor="?colorPrimary" android:textSize="13sp" /> </androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat> Loading app/src/main/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -1974,6 +1974,7 @@ <string name="toast_pin">The message has been pinned</string> <string name="pinned">Pinned</string> <string name="card_picture">Card picture</string> <string name="more_from">More from %1$s</string> <string name="set_live_translate_title">Translate messages</string> <string name="set_live_translate">Force translation to a specific language. Choose first value to reset to device settings</string> <string name="edit_message">Edit message</string> Loading Loading
app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Card.java +17 −0 Original line number Diff line number Diff line Loading @@ -14,11 +14,25 @@ package app.fedilab.android.mastodon.client.entities.api; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see <http://www.gnu.org/licenses>. */ import androidx.annotation.Nullable; import com.google.gson.annotations.SerializedName; import java.io.Serializable; import java.util.List; public class Card implements Serializable { public static class PreviewCardAuthor implements Serializable { @SerializedName("name") public String name; @SerializedName("url") public String url; @Nullable @SerializedName("account") public Account account; } @SerializedName("url") public String url; @SerializedName("title") Loading Loading @@ -47,4 +61,7 @@ public class Card implements Serializable { public String embed_url; @SerializedName("blurhash") public String blurhash; @Nullable @SerializedName("authors") public List<PreviewCardAuthor> authors; }
app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +36 −0 Original line number Diff line number Diff line Loading @@ -160,6 +160,7 @@ import app.fedilab.android.mastodon.activities.StatusInfoActivity; import app.fedilab.android.mastodon.activities.TimelineActivity; import app.fedilab.android.mastodon.activities.admin.AdminAccountActivity; import app.fedilab.android.mastodon.client.entities.api.Attachment; import app.fedilab.android.mastodon.client.entities.api.Card; import app.fedilab.android.mastodon.client.entities.api.Field; import app.fedilab.android.mastodon.client.entities.api.Filter; import app.fedilab.android.mastodon.client.entities.api.Notification; Loading Loading @@ -1026,6 +1027,41 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.card.setOnClickListener(v -> { SpannableHelper.linkClickAction(context, statusToDeal.card.url); }); Card.PreviewCardAuthor author = null; if (statusToDeal.card.authors != null && !statusToDeal.card.authors.isEmpty()) { author = statusToDeal.card.authors.get(0); } if (author != null && (author.account != null || author.name != null)) { holder.binding.cardAuthorSeparator.setVisibility(View.VISIBLE); holder.binding.cardAuthorContainer.setVisibility(View.VISIBLE); if (author.account != null) { String displayName = author.account.display_name != null && !author.account.display_name.isEmpty() ? author.account.display_name : author.name; holder.binding.cardAuthorName.setText(context.getString(R.string.more_from, displayName)); holder.binding.cardAuthorAvatar.setVisibility(View.VISIBLE); MastodonHelper.loadPPMastodon(holder.binding.cardAuthorAvatar, author.account); app.fedilab.android.mastodon.client.entities.api.Account finalAccount = author.account; holder.binding.cardAuthorContainer.setOnClickListener(v -> { Intent intent = new Intent(context, ProfileActivity.class); Bundle args = new Bundle(); args.putSerializable(Helper.ARG_ACCOUNT, finalAccount); new CachedBundle(context).insertBundle(args, Helper.getCurrentAccount(context), bundleId -> { Bundle bundle = new Bundle(); bundle.putLong(Helper.ARG_INTENT_ID, bundleId); intent.putExtras(bundle); context.startActivity(intent); }); }); } else { holder.binding.cardAuthorName.setText(context.getString(R.string.more_from, author.name)); holder.binding.cardAuthorAvatar.setVisibility(View.GONE); holder.binding.cardAuthorContainer.setOnClickListener(null); holder.binding.cardAuthorContainer.setClickable(false); } } else { holder.binding.cardAuthorSeparator.setVisibility(View.GONE); holder.binding.cardAuthorContainer.setVisibility(View.GONE); } holder.binding.card.setVisibility(View.VISIBLE); } else { holder.binding.card.setVisibility(View.GONE); Loading
app/src/main/res/layouts/mastodon/layout/drawer_status.xml +40 −0 Original line number Diff line number Diff line Loading @@ -458,6 +458,46 @@ android:textAppearance="@style/TextAppearance.AppCompat.Caption" tools:text="https://domain.test" /> <View android:id="@+id/card_author_separator" android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginTop="6dp" android:background="?android:attr/listDivider" android:visibility="gone" tools:visibility="visible" /> <androidx.appcompat.widget.LinearLayoutCompat android:id="@+id/card_author_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" android:paddingTop="6dp" android:paddingBottom="2dp" android:visibility="gone" tools:visibility="visible"> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/card_author_avatar" android:layout_width="24dp" android:layout_height="24dp" android:contentDescription="@string/profile_picture" tools:src="@tools:sample/avatars" /> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/card_author_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:ellipsize="end" android:maxLines="1" android:textColor="?colorPrimary" android:textSize="13sp" tools:text="More from Author" /> </androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat> Loading
app/src/main/res/layouts/mastodon/layout/popup_status_theme.xml +36 −0 Original line number Diff line number Diff line Loading @@ -266,6 +266,42 @@ android:text="https://domain.test" android:textAppearance="@style/TextAppearance.AppCompat.Caption" /> <View android:id="@+id/card_author_separator" android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginTop="6dp" android:background="?android:attr/listDivider" android:visibility="gone" /> <androidx.appcompat.widget.LinearLayoutCompat android:id="@+id/card_author_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" android:paddingTop="6dp" android:paddingBottom="2dp" android:visibility="gone"> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/card_author_avatar" android:layout_width="24dp" android:layout_height="24dp" android:contentDescription="@string/profile_picture" /> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/card_author_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:ellipsize="end" android:maxLines="1" android:textColor="?colorPrimary" android:textSize="13sp" /> </androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat> Loading
app/src/main/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -1974,6 +1974,7 @@ <string name="toast_pin">The message has been pinned</string> <string name="pinned">Pinned</string> <string name="card_picture">Card picture</string> <string name="more_from">More from %1$s</string> <string name="set_live_translate_title">Translate messages</string> <string name="set_live_translate">Force translation to a specific language. Choose first value to reset to device settings</string> <string name="edit_message">Edit message</string> Loading