From 64fc052c5540b806b6ec7de29e01132c38c57d5c Mon Sep 17 00:00:00 2001 From: FineFindus Date: Mon, 22 May 2023 14:52:04 +0200 Subject: [PATCH] feat: show extended description in info --- .../instance/GetExtendedDescription.java | 12 +++++++ .../fragments/InstanceInfoFragment.java | 32 +++++++++++++++++-- .../android/model/ExtendedDescription.java | 22 +++++++++++++ 3 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 mastodon/src/main/java/org/joinmastodon/android/api/requests/instance/GetExtendedDescription.java create mode 100644 mastodon/src/main/java/org/joinmastodon/android/model/ExtendedDescription.java diff --git a/mastodon/src/main/java/org/joinmastodon/android/api/requests/instance/GetExtendedDescription.java b/mastodon/src/main/java/org/joinmastodon/android/api/requests/instance/GetExtendedDescription.java new file mode 100644 index 000000000..5ce739a62 --- /dev/null +++ b/mastodon/src/main/java/org/joinmastodon/android/api/requests/instance/GetExtendedDescription.java @@ -0,0 +1,12 @@ +package org.joinmastodon.android.api.requests.instance; + +import org.joinmastodon.android.api.MastodonAPIRequest; +import org.joinmastodon.android.model.ExtendedDescription; +import org.joinmastodon.android.model.Instance; + +public class GetExtendedDescription extends MastodonAPIRequest{ + public GetExtendedDescription(){ + super(HttpMethod.GET, "/instance/extended_description", ExtendedDescription.class); + } + +} diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/InstanceInfoFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/InstanceInfoFragment.java index e66c7a83f..b7dbceeca 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/InstanceInfoFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/InstanceInfoFragment.java @@ -23,12 +23,14 @@ import androidx.recyclerview.widget.LinearLayoutManager; import org.joinmastodon.android.GlobalUserPreferences; import org.joinmastodon.android.R; +import org.joinmastodon.android.api.requests.instance.GetExtendedDescription; import org.joinmastodon.android.api.requests.instance.GetInstance; import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.fragments.onboarding.InstanceRulesFragment; import org.joinmastodon.android.model.Account; import org.joinmastodon.android.model.AccountField; import org.joinmastodon.android.model.Attachment; +import org.joinmastodon.android.model.ExtendedDescription; import org.joinmastodon.android.model.Instance; import org.joinmastodon.android.model.TimelineDefinition; import org.joinmastodon.android.ui.BetterItemAnimator; @@ -64,6 +66,7 @@ import me.grishka.appkit.views.UsableRecyclerView; public class InstanceInfoFragment extends LoaderFragment { private Instance instance; + private String extendedDescription; private CoverImageView cover; private TextView uri, description; @@ -102,6 +105,7 @@ public class InstanceInfoFragment extends LoaderFragment { account= AccountSessionManager.getInstance().getAccount(accountID).self; targetDomain=getArguments().getString("instanceDomain"); loadData(); + loadExtendedDescription(); } @Override @@ -166,10 +170,33 @@ public class InstanceInfoFragment extends LoaderFragment { } }) - //hack to get instance url for local and remote accounts .execNoAuth(targetDomain); } + private void loadExtendedDescription() { + new GetExtendedDescription() + .setCallback(new SimpleCallback<>(this){ + @Override + public void onSuccess(ExtendedDescription result){ + if (getActivity() == null || result == null || TextUtils.isEmpty(result.content)) return; + extendedDescription = result.content; + updateDescription(); + + } + }) + .execNoAuth(targetDomain); + } + + private void updateDescription() { + if (instance == null || description == null) + return; + + description.setText(HtmlParser.parse(TextUtils.isEmpty(extendedDescription) ? + TextUtils.isEmpty(instance.description) ? instance.shortDescription : instance.description + : extendedDescription, + account.emojis, Collections.emptyList(), Collections.emptyList(), accountID)); + } + @Override public void onRefresh(){ if(refreshing) @@ -232,8 +259,7 @@ public class InstanceInfoFragment extends LoaderFragment { uri.setText(instance.title); setTitle(instance.title); - CharSequence parsedDescription = HtmlParser.parse(TextUtils.isEmpty(instance.description) ? instance.shortDescription : instance.description, account.emojis, Collections.emptyList(), Collections.emptyList(), accountID); - description.setText(parsedDescription); + updateDescription(); fields.clear(); diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/ExtendedDescription.java b/mastodon/src/main/java/org/joinmastodon/android/model/ExtendedDescription.java new file mode 100644 index 000000000..923d499a1 --- /dev/null +++ b/mastodon/src/main/java/org/joinmastodon/android/model/ExtendedDescription.java @@ -0,0 +1,22 @@ +package org.joinmastodon.android.model; + +import org.joinmastodon.android.api.RequiredField; +import org.parceler.Parcel; + +import java.util.List; + +@Parcel +public class ExtendedDescription extends BaseModel{ + @RequiredField + public String content; + @RequiredField + public String updatedAt; + + @Override + public String toString() { + return "ExtendedDescription{" + + "content='" + content + '\'' + + ", updatedAt='" + updatedAt + '\'' + + '}'; + } +}