From b22a25e7af738e8f77ba9e8686d95bc7dba01913 Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 15 Jun 2023 18:12:29 +0200 Subject: [PATCH 01/12] workaround for proguard errors re: sk22#572 --- mastodon/build.gradle | 16 ++++------------ mastodon/proguard-rules.pro | 6 ++++++ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/mastodon/build.gradle b/mastodon/build.gradle index ae2820599..83991b6fe 100644 --- a/mastodon/build.gradle +++ b/mastodon/build.gradle @@ -23,8 +23,8 @@ android { buildTypes { release { -// minifyEnabled true -// shrinkResources true + minifyEnabled true + shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug{ @@ -32,16 +32,8 @@ android { versionNameSuffix '-debug' applicationIdSuffix '.debug' } - githubRelease{ - initWith release - } - playRelease{ - initWith release - // TODO: fix proguard rules and re-enable these -// minifyEnabled true -// shrinkResources true - versionNameSuffix '-play' - } + githubRelease { initWith release } + playRelease { initWith release } } compileOptions { sourceCompatibility JavaVersion.VERSION_17 diff --git a/mastodon/proguard-rules.pro b/mastodon/proguard-rules.pro index cf75550f0..f12799a6f 100644 --- a/mastodon/proguard-rules.pro +++ b/mastodon/proguard-rules.pro @@ -30,6 +30,9 @@ *; } +# i don't know how proguard works +-keep class org.joinmastodon.android.** { *; } + # Keep all enums for debugging purposes -keepnames public enum * { *; @@ -79,3 +82,6 @@ -keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken ##---------------End: proguard configuration for Gson ---------- + + +-dontobfuscate From b463ef65ceec657fd53a43df238e39af8cf73b0f Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 15 Jun 2023 18:13:59 +0200 Subject: [PATCH 02/12] fix parceler complaining about private class member --- .../src/main/java/org/joinmastodon/android/model/Filter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/Filter.java b/mastodon/src/main/java/org/joinmastodon/android/model/Filter.java index 019d249a6..58f958f2d 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/Filter.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/Filter.java @@ -27,7 +27,7 @@ public class Filter extends BaseModel{ public FilterAction filterAction; @SerializedName("context") - private List _context; + protected List _context; private transient Pattern pattern; From 6595a088fbb50bf1a65bd60634f619a87f8158aa Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 15 Jun 2023 19:21:26 +0200 Subject: [PATCH 03/12] support exclusive lists closes sk22#576 --- .../api/requests/lists/CreateList.java | 4 +- .../api/requests/lists/UpdateList.java | 3 +- .../events/ListUpdatedCreatedEvent.java | 4 +- .../android/fragments/HomeTabFragment.java | 1 + .../fragments/ListTimelineFragment.java | 16 +++--- .../android/fragments/ListsFragment.java | 14 ++++-- .../android/model/ListTimeline.java | 2 + .../android/model/TimelineDefinition.java | 12 +++-- ...istTimelineEditor.java => ListEditor.java} | 22 ++++++--- .../res/drawable/ic_fluent_rss_24_regular.xml | 5 ++ .../main/res/layout/list_timeline_editor.xml | 49 +++++++++++++++++++ mastodon/src/main/res/values/strings_sk.xml | 4 ++ 12 files changed, 112 insertions(+), 24 deletions(-) rename mastodon/src/main/java/org/joinmastodon/android/ui/views/{ListTimelineEditor.java => ListEditor.java} (76%) create mode 100644 mastodon/src/main/res/drawable/ic_fluent_rss_24_regular.xml diff --git a/mastodon/src/main/java/org/joinmastodon/android/api/requests/lists/CreateList.java b/mastodon/src/main/java/org/joinmastodon/android/api/requests/lists/CreateList.java index f30dde544..1ec4204e5 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/api/requests/lists/CreateList.java +++ b/mastodon/src/main/java/org/joinmastodon/android/api/requests/lists/CreateList.java @@ -4,16 +4,18 @@ import org.joinmastodon.android.api.MastodonAPIRequest; import org.joinmastodon.android.model.ListTimeline; public class CreateList extends MastodonAPIRequest { - public CreateList(String title, ListTimeline.RepliesPolicy repliesPolicy) { + public CreateList(String title, boolean exclusive, ListTimeline.RepliesPolicy repliesPolicy) { super(HttpMethod.POST, "/lists", ListTimeline.class); Request req = new Request(); req.title = title; + req.exclusive = exclusive; req.repliesPolicy = repliesPolicy; setRequestBody(req); } public static class Request { public String title; + public boolean exclusive; public ListTimeline.RepliesPolicy repliesPolicy; } } diff --git a/mastodon/src/main/java/org/joinmastodon/android/api/requests/lists/UpdateList.java b/mastodon/src/main/java/org/joinmastodon/android/api/requests/lists/UpdateList.java index 0a6814277..64073fd3d 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/api/requests/lists/UpdateList.java +++ b/mastodon/src/main/java/org/joinmastodon/android/api/requests/lists/UpdateList.java @@ -4,10 +4,11 @@ import org.joinmastodon.android.api.MastodonAPIRequest; import org.joinmastodon.android.model.ListTimeline; public class UpdateList extends MastodonAPIRequest { - public UpdateList(String id, String title, ListTimeline.RepliesPolicy repliesPolicy) { + public UpdateList(String id, String title, boolean exclusive, ListTimeline.RepliesPolicy repliesPolicy) { super(HttpMethod.PUT, "/lists/" + id, ListTimeline.class); CreateList.Request req = new CreateList.Request(); req.title = title; + req.exclusive = exclusive; req.repliesPolicy = repliesPolicy; setRequestBody(req); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/events/ListUpdatedCreatedEvent.java b/mastodon/src/main/java/org/joinmastodon/android/events/ListUpdatedCreatedEvent.java index 89efffda2..26e0081e6 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/events/ListUpdatedCreatedEvent.java +++ b/mastodon/src/main/java/org/joinmastodon/android/events/ListUpdatedCreatedEvent.java @@ -6,10 +6,12 @@ public class ListUpdatedCreatedEvent { public final String id; public final String title; public final ListTimeline.RepliesPolicy repliesPolicy; + public final boolean exclusive; - public ListUpdatedCreatedEvent(String id, String title, ListTimeline.RepliesPolicy repliesPolicy) { + public ListUpdatedCreatedEvent(String id, String title, boolean exclusive, ListTimeline.RepliesPolicy repliesPolicy) { this.id = id; this.title = title; + this.exclusive = exclusive; this.repliesPolicy = repliesPolicy; } } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java index 98d0516cc..d9b4a38e7 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java @@ -492,6 +492,7 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab } else if ((list = listItems.get(id)) != null) { args.putString("listID", list.id); args.putString("listTitle", list.title); + args.putBoolean("listIsExclusive", list.exclusive); if (list.repliesPolicy != null) args.putInt("repliesPolicy", list.repliesPolicy.ordinal()); Nav.go(getActivity(), ListTimelineFragment.class, args); } else if ((hashtag = hashtagsItems.get(id)) != null) { diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelineFragment.java index 0e03a19e6..bc931f919 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelineFragment.java @@ -24,7 +24,7 @@ import org.joinmastodon.android.model.Status; import org.joinmastodon.android.model.TimelineDefinition; import org.joinmastodon.android.ui.M3AlertDialogBuilder; import org.joinmastodon.android.ui.utils.UiUtils; -import org.joinmastodon.android.ui.views.ListTimelineEditor; +import org.joinmastodon.android.ui.views.ListEditor; import org.joinmastodon.android.utils.StatusFilterPredicate; import java.util.List; @@ -36,12 +36,12 @@ import me.grishka.appkit.api.ErrorResponse; import me.grishka.appkit.api.SimpleCallback; import me.grishka.appkit.utils.V; - public class ListTimelineFragment extends PinnableStatusListFragment { private String listID; private String listTitle; @Nullable private ListTimeline.RepliesPolicy repliesPolicy; + private boolean exclusive; @Override protected boolean wantsComposeButton() { @@ -54,6 +54,7 @@ public class ListTimelineFragment extends PinnableStatusListFragment { Bundle args = getArguments(); listID = args.getString("listID"); listTitle = args.getString("listTitle"); + exclusive = args.getBoolean("listIsExclusive"); repliesPolicy = ListTimeline.RepliesPolicy.values()[args.getInt("repliesPolicy", 0)]; setTitle(listTitle); @@ -88,8 +89,8 @@ public class ListTimelineFragment extends PinnableStatusListFragment { public boolean onOptionsItemSelected(MenuItem item) { if (super.onOptionsItemSelected(item)) return true; if (item.getItemId() == R.id.edit) { - ListTimelineEditor editor = new ListTimelineEditor(getContext()); - editor.applyList(listTitle, repliesPolicy); + ListEditor editor = new ListEditor(getContext()); + editor.applyList(listTitle, exclusive, repliesPolicy); new M3AlertDialogBuilder(getActivity()) .setTitle(R.string.sk_edit_list_title) .setIcon(R.drawable.ic_fluent_people_28_regular) @@ -97,14 +98,15 @@ public class ListTimelineFragment extends PinnableStatusListFragment { .setPositiveButton(R.string.save, (d, which) -> { String newTitle = editor.getTitle().trim(); setTitle(newTitle); - new UpdateList(listID, newTitle, editor.getRepliesPolicy()).setCallback(new Callback<>() { + new UpdateList(listID, newTitle, editor.isExclusive(), editor.getRepliesPolicy()).setCallback(new Callback<>() { @Override public void onSuccess(ListTimeline list) { if (getActivity() == null) return; setTitle(list.title); listTitle = list.title; repliesPolicy = list.repliesPolicy; - E.post(new ListUpdatedCreatedEvent(listID, listTitle, repliesPolicy)); + exclusive = list.exclusive; + E.post(new ListUpdatedCreatedEvent(listID, listTitle, exclusive, repliesPolicy)); } @Override @@ -127,7 +129,7 @@ public class ListTimelineFragment extends PinnableStatusListFragment { @Override protected TimelineDefinition makeTimelineDefinition() { - return TimelineDefinition.ofList(listID, listTitle); + return TimelineDefinition.ofList(listID, listTitle, exclusive); } @Override diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ListsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ListsFragment.java index 243a104c6..6f28eb95a 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ListsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ListsFragment.java @@ -27,7 +27,7 @@ import org.joinmastodon.android.events.ListUpdatedCreatedEvent; import org.joinmastodon.android.model.ListTimeline; import org.joinmastodon.android.ui.DividerItemDecoration; import org.joinmastodon.android.ui.M3AlertDialogBuilder; -import org.joinmastodon.android.ui.views.ListTimelineEditor; +import org.joinmastodon.android.ui.views.ListEditor; import org.joinmastodon.android.utils.ProvidesAssistContent; import java.util.ArrayList; @@ -91,18 +91,18 @@ public class ListsFragment extends RecyclerFragment implements Scr @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.create) { - ListTimelineEditor editor = new ListTimelineEditor(getContext()); + ListEditor editor = new ListEditor(getContext()); new M3AlertDialogBuilder(getActivity()) .setTitle(R.string.sk_create_list_title) .setIcon(R.drawable.ic_fluent_people_add_28_regular) .setView(editor) .setPositiveButton(R.string.sk_create, (d, which) -> - new CreateList(editor.getTitle(), editor.getRepliesPolicy()).setCallback(new Callback<>() { + new CreateList(editor.getTitle(), editor.isExclusive(), editor.getRepliesPolicy()).setCallback(new Callback<>() { @Override public void onSuccess(ListTimeline list) { data.add(0, list); adapter.notifyItemRangeInserted(0, 1); - E.post(new ListUpdatedCreatedEvent(list.id, list.title, list.repliesPolicy)); + E.post(new ListUpdatedCreatedEvent(list.id, list.title, list.exclusive, list.repliesPolicy)); } @Override @@ -185,6 +185,7 @@ public class ListsFragment extends RecyclerFragment implements Scr if (item.id.equals(event.id)) { item.title = event.title; item.repliesPolicy = event.repliesPolicy; + item.exclusive = event.exclusive; adapter.notifyItemChanged(i); break; } @@ -242,7 +243,9 @@ public class ListsFragment extends RecyclerFragment implements Scr @Override public void onBind(ListTimeline item) { title.setText(item.title); - title.setCompoundDrawablesRelativeWithIntrinsicBounds(itemView.getContext().getDrawable(R.drawable.ic_fluent_people_24_regular), null, null, null); + title.setCompoundDrawablesRelativeWithIntrinsicBounds(itemView.getContext().getDrawable( + item.exclusive ? R.drawable.ic_fluent_rss_24_regular : R.drawable.ic_fluent_people_24_regular + ), null, null, null); if (profileAccountId != null) { Boolean checked = userInList.get(item.id); listToggle.setVisibility(View.VISIBLE); @@ -263,6 +266,7 @@ public class ListsFragment extends RecyclerFragment implements Scr args.putString("account", accountID); args.putString("listID", item.id); args.putString("listTitle", item.title); + args.putBoolean("listIsExclusive", item.exclusive); if (item.repliesPolicy != null) args.putInt("repliesPolicy", item.repliesPolicy.ordinal()); Nav.go(getActivity(), ListTimelineFragment.class, args); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/ListTimeline.java b/mastodon/src/main/java/org/joinmastodon/android/model/ListTimeline.java index 9344756da..4bd06e935 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/ListTimeline.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/ListTimeline.java @@ -14,6 +14,7 @@ public class ListTimeline extends BaseModel { @RequiredField public String title; public RepliesPolicy repliesPolicy; + public boolean exclusive; @NonNull @Override @@ -22,6 +23,7 @@ public class ListTimeline extends BaseModel { "id='" + id + '\'' + ", title='" + title + '\'' + ", repliesPolicy=" + repliesPolicy + + ", exclusive=" + exclusive + '}'; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/TimelineDefinition.java b/mastodon/src/main/java/org/joinmastodon/android/model/TimelineDefinition.java index 32b4d0da3..24d51b203 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/TimelineDefinition.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/TimelineDefinition.java @@ -30,18 +30,20 @@ public class TimelineDefinition { private @Nullable String listId; private @Nullable String listTitle; + private boolean listIsExclusive; private @Nullable String hashtagName; - public static TimelineDefinition ofList(String listId, String listTitle) { + public static TimelineDefinition ofList(String listId, String listTitle, boolean listIsExclusive) { TimelineDefinition def = new TimelineDefinition(TimelineType.LIST); def.listId = listId; def.listTitle = listTitle; + def.listIsExclusive = listIsExclusive; return def; } public static TimelineDefinition ofList(ListTimeline list) { - return ofList(list.id, list.title); + return ofList(list.id, list.title, list.exclusive); } public static TimelineDefinition ofHashtag(String hashtag) { @@ -99,7 +101,7 @@ public class TimelineDefinition { case LOCAL -> Icon.LOCAL; case FEDERATED -> Icon.FEDERATED; case POST_NOTIFICATIONS -> Icon.POST_NOTIFICATIONS; - case LIST -> Icon.LIST; + case LIST -> listIsExclusive ? Icon.EXCLUSIVE_LIST : Icon.LIST; case HASHTAG -> Icon.HASHTAG; case BUBBLE -> Icon.BUBBLE; }; @@ -155,6 +157,7 @@ public class TimelineDefinition { def.title = title; def.listId = listId; def.listTitle = listTitle; + def.listIsExclusive = listIsExclusive; def.hashtagName = hashtagName; def.icon = icon == null ? null : Icon.values()[icon.ordinal()]; return def; @@ -164,6 +167,7 @@ public class TimelineDefinition { if (type == TimelineType.LIST) { args.putString("listTitle", title); args.putString("listID", listId); + args.putBoolean("listIsExclusive", listIsExclusive); } else if (type == TimelineType.HASHTAG) { args.putString("hashtag", hashtagName); } @@ -179,6 +183,7 @@ public class TimelineDefinition { CITY(R.drawable.ic_fluent_city_24_regular, R.string.sk_icon_city), IMAGE(R.drawable.ic_fluent_image_24_regular, R.string.sk_icon_image), NEWS(R.drawable.ic_fluent_news_24_regular, R.string.sk_icon_news), + FEED(R.drawable.ic_fluent_rss_24_regular, R.string.sk_icon_feed), COLOR_PALETTE(R.drawable.ic_fluent_color_24_regular, R.string.sk_icon_color_palette), CAT(R.drawable.ic_fluent_animal_cat_24_regular, R.string.sk_icon_cat), DOG(R.drawable.ic_fluent_animal_dog_24_regular, R.string.sk_icon_dog), @@ -233,6 +238,7 @@ public class TimelineDefinition { FEDERATED(R.drawable.ic_fluent_earth_24_regular, R.string.sk_timeline_federated, true), POST_NOTIFICATIONS(R.drawable.ic_fluent_chat_24_regular, R.string.sk_timeline_posts, true), LIST(R.drawable.ic_fluent_people_24_regular, R.string.sk_list, true), + EXCLUSIVE_LIST(R.drawable.ic_fluent_rss_24_regular, R.string.sk_exclusive_list, true), HASHTAG(R.drawable.ic_fluent_number_symbol_24_regular, R.string.sk_hashtag, true), BUBBLE(R.drawable.ic_fluent_circle_24_regular, R.string.sk_timeline_bubble, true); diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/views/ListTimelineEditor.java b/mastodon/src/main/java/org/joinmastodon/android/ui/views/ListEditor.java similarity index 76% rename from mastodon/src/main/java/org/joinmastodon/android/ui/views/ListTimelineEditor.java rename to mastodon/src/main/java/org/joinmastodon/android/ui/views/ListEditor.java index e4438199e..1ebe466d2 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/views/ListTimelineEditor.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/views/ListEditor.java @@ -9,6 +9,7 @@ import android.view.MenuItem; import android.widget.Button; import android.widget.LinearLayout; import android.widget.PopupMenu; +import android.widget.Switch; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -16,18 +17,20 @@ import androidx.annotation.Nullable; import org.joinmastodon.android.R; import org.joinmastodon.android.model.ListTimeline; -public class ListTimelineEditor extends LinearLayout { +public class ListEditor extends LinearLayout { private ListTimeline.RepliesPolicy policy = null; private final TextInputFrameLayout input; private final Button button; + private final Switch exclusiveSwitch; @SuppressLint("ClickableViewAccessibility") - public ListTimelineEditor(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + public ListEditor(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); LayoutInflater.from(context).inflate(R.layout.list_timeline_editor, this); button = findViewById(R.id.button); input = findViewById(R.id.input); + exclusiveSwitch = findViewById(R.id.exclusive_checkbox); PopupMenu popupMenu = new PopupMenu(context, button, Gravity.CENTER_HORIZONTAL); popupMenu.inflate(R.menu.list_reply_policies); @@ -36,12 +39,15 @@ public class ListTimelineEditor extends LinearLayout { button.setOnTouchListener(popupMenu.getDragToOpenListener()); button.setOnClickListener(v->popupMenu.show()); input.getEditText().setHint(context.getString(R.string.sk_list_name_hint)); + findViewById(R.id.exclusive) + .setOnClickListener(v -> exclusiveSwitch.setChecked(!exclusiveSwitch.isChecked())); setRepliesPolicy(ListTimeline.RepliesPolicy.LIST); } - public void applyList(String title, @Nullable ListTimeline.RepliesPolicy policy) { + public void applyList(String title, boolean exclusive, @Nullable ListTimeline.RepliesPolicy policy) { input.getEditText().setText(title); + exclusiveSwitch.setChecked(exclusive); if (policy != null) setRepliesPolicy(policy); } @@ -53,6 +59,10 @@ public class ListTimelineEditor extends LinearLayout { return policy; } + public boolean isExclusive() { + return exclusiveSwitch.isChecked(); + } + public void setRepliesPolicy(@NonNull ListTimeline.RepliesPolicy policy) { this.policy = policy; switch (policy) { @@ -73,15 +83,15 @@ public class ListTimelineEditor extends LinearLayout { return true; } - public ListTimelineEditor(Context context, AttributeSet attrs, int defStyleAttr) { + public ListEditor(Context context, AttributeSet attrs, int defStyleAttr) { this(context, attrs, defStyleAttr, 0); } - public ListTimelineEditor(Context context, AttributeSet attrs) { + public ListEditor(Context context, AttributeSet attrs) { this(context, attrs, 0); } - public ListTimelineEditor(Context context) { + public ListEditor(Context context) { this(context, null); } } diff --git a/mastodon/src/main/res/drawable/ic_fluent_rss_24_regular.xml b/mastodon/src/main/res/drawable/ic_fluent_rss_24_regular.xml new file mode 100644 index 000000000..bd74d83a1 --- /dev/null +++ b/mastodon/src/main/res/drawable/ic_fluent_rss_24_regular.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/mastodon/src/main/res/layout/list_timeline_editor.xml b/mastodon/src/main/res/layout/list_timeline_editor.xml index 2a1c6a385..31362bd4f 100644 --- a/mastodon/src/main/res/layout/list_timeline_editor.xml +++ b/mastodon/src/main/res/layout/list_timeline_editor.xml @@ -39,4 +39,53 @@ android:id="@+id/input" android:layout_width="match_parent" android:layout_height="wrap_content" /> + + + + + + + + + + + + \ No newline at end of file diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 68e378e6d..dccf9cca8 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -227,6 +227,7 @@ Human Globe Pin + Feed Edit timeline Edit timelines ALT @@ -305,4 +306,7 @@ nobody others “Forward report” switch default + Exclusive list + Make list exclusive + Members of an exclusive list will not show up on your home timeline – if your instance supports it. \ No newline at end of file From 94eb6b57753e08ce3481f420c8b6d94185677ad2 Mon Sep 17 00:00:00 2001 From: sk Date: Thu, 15 Jun 2023 19:21:44 +0200 Subject: [PATCH 04/12] one less thing for parceler to complain about --- mastodon/src/main/java/org/joinmastodon/android/model/Poll.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/Poll.java b/mastodon/src/main/java/org/joinmastodon/android/model/Poll.java index 739a79f71..a622a6d37 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/Poll.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/Poll.java @@ -13,7 +13,7 @@ public class Poll extends BaseModel{ @RequiredField public String id; public Instant expiresAt; - private boolean expired; + protected boolean expired; public boolean multiple; public int votersCount; public int votesCount; From 77734e8e0c516aeef3f9f92baf263b9d1ca472f6 Mon Sep 17 00:00:00 2001 From: a_mento Date: Wed, 14 Jun 2023 21:07:15 +0000 Subject: [PATCH 05/12] Translated using Weblate (Basque) Currently translated at 94.0% (287 of 305 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/eu/ --- .../src/main/res/values-eu-rES/strings_sk.xml | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/mastodon/src/main/res/values-eu-rES/strings_sk.xml b/mastodon/src/main/res/values-eu-rES/strings_sk.xml index bf1a574eb..449f19d41 100644 --- a/mastodon/src/main/res/values-eu-rES/strings_sk.xml +++ b/mastodon/src/main/res/values-eu-rES/strings_sk.xml @@ -41,9 +41,9 @@ Dagoeneko laster-marka da Beste kontu baten gogokoa %s bezela dago gogokoetan - Beste kontu batekin bultzatua + Bultzatu beste kontu batekin %s bezela bultzatua - Dagoeneko bultzatua izan da + Jada bultzatu da Erantzun beste kontu batekin Itzuli Desgaitu fitxen arteko joan-etorria @@ -75,9 +75,9 @@ Ezabatu denak Ziur al zaude jakinarazpen guztiak ezabatu nahi dituzula\? Fedibertsoan bilatzen - Bultzada desegin + Desegin bultzada Honen inguruan argitaratu - Bultzada ikusgarria + Bultzatu ikusgarritasunarekin Jarraitzen dituzun Hashtag-ak Kopiatu link-a argitaratzeko %s-n bilatzen @@ -219,7 +219,7 @@ ALT Editatua Editatutako argitalpenak - Bultzatutako bidalketa editatu + Bultzatutako bidalketa editatu da Emaitzarik ez Zirriborroa gorde\? Ez dago testu alternatiborik eskuragarri @@ -232,7 +232,7 @@ Testu alternatiboa falta da Bilatzen… Zirriborro honetako aldaketak gorde edo argitaratu nahi dituzu\? - Gehitu \"re:\" hasieran edukiaren abisuen erantzunetan + Gehitu \"re:\" edukiaren abisuen erantzunen hasieran Iragazita: %s Zabaldu Itxi @@ -267,8 +267,23 @@ Jarraitzen ditudanei eginiko erantzunak \"Honi erantzunez\" abatarraren gaineko lerroa Erakutsi haria - Bultzada/erantzun lerro trinkoa + Bultzada-/erantzun-lerro trinkoa %s aipatzen Niri eginiko erantzunak %s-(r)i erantzun + Hauexek dira zure instantziako administratzaileek saretik aukeratutako azken bidalketak. + Edukiaren mota + Zehaztu gabea + Testu arrunta + HTML + Markdown + BBCode + MFM + Gaitu bidalketaren formateatzea + Markdown bezalako eduki-mota ezartzea ahalbidetzen du bidalketa bat sortzerakoan. Gogoan izan instantzia guztiek ez dutela hau baimentzen. + Eduki-mota lehenetsia + Berretsi bultzatu aurretik + %s bezala erreakzionatuta + erreakzionatuta + Burbuila \ No newline at end of file From 8fcc27d2b3aafcb66d31ab7843b3746952ca0046 Mon Sep 17 00:00:00 2001 From: LucasGGamerM Date: Wed, 14 Jun 2023 12:17:50 +0000 Subject: [PATCH 06/12] Translated using Weblate (Portuguese (Brazil)) Currently translated at 85.2% (260 of 305 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/ --- .../src/main/res/values-pt-rBR/strings_sk.xml | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/mastodon/src/main/res/values-pt-rBR/strings_sk.xml b/mastodon/src/main/res/values-pt-rBR/strings_sk.xml index 31930c14f..48485e6b1 100644 --- a/mastodon/src/main/res/values-pt-rBR/strings_sk.xml +++ b/mastodon/src/main/res/values-pt-rBR/strings_sk.xml @@ -78,8 +78,8 @@ Limpar todas as notificações Excluir tudo Procurando no Fediverso - Desfazer reblog - Reblogar com visibilidade + Desfazer impulso + Impulsionar com visibilidade Hashtags que você segue Copiar link da publicação Procurando em %s @@ -94,8 +94,8 @@ Já salvo Já favoritado Responder com outra conta - Já reblogado - Reblogar com outra conta + Já impulsionado + Impulsionar com outra conta Agendar Rascunho Publicações não enviadas @@ -115,7 +115,7 @@ Marcar como rascunho Salvo em %s Favoritado em %s - Reblogou como %s + Impulsionou como %s Padronizar ícone para todas as notificações Publique sobre isso Rascunhar ou agendar @@ -192,7 +192,7 @@ Anexar arquivo editado Publicações editadas - Editarem uma publicação reblogada + Editarem uma publicação impulsionada Trem Sem texto descritivo Pelo menos um anexo não contém uma descrição. @@ -253,4 +253,18 @@ Mostrar menos Adicionar \"re:\" nas respostas com Avisos de Conteúdo Modo espectador + Basicamente, a linha do tempo local com adição de postagens de uma lista de outras instâncias selecionadas pelos administradores da sua instância. +\nNa palavra dos desenvolvedores do Akkoma: \"O conceito de \"bolha\", onde administradores da instância podem escolher instâncias fortemente relacionadas e produzir uma \"comunidade de comunidades\", pode-se dizer\" + Esses são as publicações mais recentes da rede com curadoria dos administradores da sua instância. + se inscreveu + Citando %s + Visibilidade das respostas + Todas as respostas + Respostas para meus seguidores + Respostas para mim + reagiu com %s + reagiu + Usuários se inscrevendo + Novas relatórios + reportado \ No newline at end of file From cf3d6afffc8cbfe5112398ab41643be95eb42b7c Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Wed, 14 Jun 2023 08:27:53 +0000 Subject: [PATCH 07/12] Translated using Weblate (Ukrainian) Currently translated at 100.0% (305 of 305 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/ --- mastodon/src/main/res/values-uk-rUA/strings_sk.xml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml index 7b0f65318..7737168d5 100644 --- a/mastodon/src/main/res/values-uk-rUA/strings_sk.xml +++ b/mastodon/src/main/res/values-uk-rUA/strings_sk.xml @@ -254,7 +254,7 @@ Розгорнути Згорнути Виправити вкладення\? - Префікс «re:» під час відповіді CW + Префікс CW під час відповіді Згортати надто довгі дописи Деякі вкладення не повністю завантажилися. Режим глядача @@ -296,5 +296,13 @@ віддалена інформація недоступна Завантажити інформацію з віддалених серверів Спробуйте отримати точніші списки підписників, вподобань і поширень, завантаживши інформацію з джерела. - Не вдалося завантажити профіль на ваш домашній сервер. + Не вдалося завантажити профіль через %s + Виявити ті самі CW у відповідях від + нікого + автора + будь-кого + усіх + нікого + іншим + Усталений перемикач “Пересилати звіт” \ No newline at end of file From 0c014dcf0f825138c7a345db31b2ebec4367a8c1 Mon Sep 17 00:00:00 2001 From: Alfika07 Date: Tue, 13 Jun 2023 16:43:37 +0000 Subject: [PATCH 08/12] Translated using Weblate (Hungarian) Currently translated at 40.3% (123 of 305 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/hu/ --- mastodon/src/main/res/values-hu-rHU/strings_sk.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-hu-rHU/strings_sk.xml b/mastodon/src/main/res/values-hu-rHU/strings_sk.xml index af5cb9891..158c18fb0 100644 --- a/mastodon/src/main/res/values-hu-rHU/strings_sk.xml +++ b/mastodon/src/main/res/values-hu-rHU/strings_sk.xml @@ -13,7 +13,7 @@ Törlés és újraszövegezés Pin a profilhoz Hozzászólás rögzítése a profilhoz - Pinning poszt… + Bejegyzés kitűzése… Unpin a profilból Hozzászólás feloldása a profilból Unpinning poszt… @@ -124,4 +124,7 @@ Több választási lehetőség engedélyezése Lapok közötti lapozás letiltása Az alkalmazásról + %s említése + Válasz láthatósága + Összes válasz \ No newline at end of file From 7cf01e89b862e1e8534f32077ef172c26d19431f Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Wed, 14 Jun 2023 08:18:30 +0000 Subject: [PATCH 09/12] Translated using Weblate (Ukrainian) Currently translated at 100.0% (18 of 18 strings) Translation: Megalodon/metadata Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/uk/ --- metadata/uk/changelogs/93.txt | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 metadata/uk/changelogs/93.txt diff --git a/metadata/uk/changelogs/93.txt b/metadata/uk/changelogs/93.txt new file mode 100644 index 000000000..7da197d29 --- /dev/null +++ b/metadata/uk/changelogs/93.txt @@ -0,0 +1,8 @@ +- Удосконалений, чіткіший перегляд тем +- Відкривайте облікові записи/дописи, поділившись вебсайтом з Megalodon +- Завантажуйте списки підписників/вибраного/... з початкового сервера +- Поліпшено сумісність з серверами, що не належать до Mastodon +- Можливість налаштувати тип вмісту допису +- Підтримка копіювання URL з Недавніх застосунків на пристроях Pixel +- Автовиявлення однакових CW у потоках +- Виправлення помилок та покращення інтерфейсу From b27a5a24310a26d31e8ebfa38b537f54133b8b0d Mon Sep 17 00:00:00 2001 From: abidin24 Date: Wed, 14 Jun 2023 08:50:54 +0000 Subject: [PATCH 10/12] Translated using Weblate (Arabic) Currently translated at 10.4% (32 of 305 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ar/ --- mastodon/src/main/res/values-ar/strings_sk.xml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/mastodon/src/main/res/values-ar/strings_sk.xml b/mastodon/src/main/res/values-ar/strings_sk.xml index f4183214f..1e9246d2e 100644 --- a/mastodon/src/main/res/values-ar/strings_sk.xml +++ b/mastodon/src/main/res/values-ar/strings_sk.xml @@ -14,4 +14,21 @@ قبول طلب المتابعة رفض طلب المتابعة قوائم بها %s + أتريد فك المنشور من ملفك الشخصي؟ + أتريد تثبيت هذا المنشور في ملفك الشخصي؟ + يثبت المنشور… + فك من ملفك الشخصي + فك المنشور من ملفك الشخصي + يفك المنشور… + وصف الصورة + أظهر الردود + اقتباس %s + كل الردود + ردود على متابِعي + ردود عليَّ + تحميل المنشورات الجديدة تلقائيًا + شغِّل إشعارات النشر لـ %s + عطل إشعارات النشر لـ %s + تحقق من وجود تحديثات + لا يتوفر تحديث \ No newline at end of file From b2149742289c9edf0db987ffd6e6b2730243d5cb Mon Sep 17 00:00:00 2001 From: EndermanCo Date: Tue, 13 Jun 2023 12:32:19 +0000 Subject: [PATCH 11/12] Translated using Weblate (Persian) Currently translated at 54.7% (167 of 305 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fa/ --- .../src/main/res/values-fa/strings_sk.xml | 98 ++++++++++++++++++- 1 file changed, 97 insertions(+), 1 deletion(-) diff --git a/mastodon/src/main/res/values-fa/strings_sk.xml b/mastodon/src/main/res/values-fa/strings_sk.xml index 9a1a43bbe..90b057fbf 100644 --- a/mastodon/src/main/res/values-fa/strings_sk.xml +++ b/mastodon/src/main/res/values-fa/strings_sk.xml @@ -61,7 +61,7 @@ HTML متن ساده بررسی برای به‌روزرسانی - کارساز از فرسته فقط محلی پشتیبانی می‌کند + پشتیبانی کارساز از ارسال فرسته فقط محلی نمایش تقویت‌ها فرسته‌های ویرایش شده مگالودون %s بارگیری شده و آماده نصب است. @@ -70,4 +70,100 @@ حذف پیش نویس پیش‌نویس پیش نویس ذخیره شد + حذف و بازنویسی + حذف و بازنویسی فرسته + آیا مطمئنید که می‌خواهید این فرسته را حذف و بازنویسی کنید؟ + آیا می‌خواهید این فرسته را به نمایه خود سنجاق کنید؟ + آیا می‌خواهید سنجاق این فرسته را بردارید؟ + سیاهه‌هایی با %s + مگالودون v%1$s (%2$d) + ترجیحات ارسال فرسته + با استفاده از %s ترجمه شده است + نمایش اصلی + example.social + حذف آگاهی + حذف آگاهی + %s از ترجمه پشتیبانی می‌کند! + رونوشت پیوند فرسته + قبلا برگزیده بوده است + برگزیدن با حساب دیگر + فرسته‌های ارسال نشده + تقویت با حساب دیگر + قبلا تقویت شده است + پاسخ با حساب دیگر + نشانک‌گذاری با حساب دیگر + هدایت به %s + زمان‌بندی + برنامه‌ریزی شده برای + فرسته برنامه‌ریزی شد + ذخیره پیش نویس؟ + ذخیره تغییرات؟ + علامت‌گذاری به عنوان پیش نویس + برنامه‌ریزی فرسته + پیش‌نویس نکن + اطلاعیه‌ها + درباره نمونه + ایجاد کردن + ایجاد سیاهه + اسم سیاهه + حذف سیاهه + سیاهه شما + محلی + حذف کردن + حذف فرسته برنامه‌ریزی شده + پیش نویس یا برنامه‌ریزی + برنامه‌ریزی نکن + هیچکس + خانه + خط زمانی‌ها + فرسته‌ها + افزودن + خط زمانی + سیاهه + برچسب + حذف کردن + نقشک + شهر + گربه + سگ + خرگوش + لاک‌پشت + تصویر + ربات + زبان + مکان + میکروفون + قهوه + اخبار + بازی + کد + قطار + موسیقی + مردم + سلامتی + گپ + کتاب + دوچرخه + نقشه + کوله پشتی + آتش + پیتزا + هدفون + انسان + سنجاق + ویرایش خط زمانی + دکمه \"مشاهده فرسته‌های جدید\" + فقط نمونه محلی + ویژگی های نمونه + گزارش‌های جدید + گزارش شد + در پاسخ + بازکردن در کاره + هیچکس + دیگران + برنامه‌ریزی یا پیش‌نویس + ویرایش سیاهه + ستاره + آیا مطمئنید که می‌خواهید این فرسته پیش نویس شده را حذف کنید؟ + گزارش تغییرات \ No newline at end of file From 8094d8c7a359b5384109a0a3f30e54b9b02decf4 Mon Sep 17 00:00:00 2001 From: LucasGGamerM Date: Thu, 15 Jun 2023 13:55:53 +0000 Subject: [PATCH 12/12] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (305 of 305 strings) Translation: Megalodon/values Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/ --- .../src/main/res/values-pt-rBR/strings_sk.xml | 44 +++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/mastodon/src/main/res/values-pt-rBR/strings_sk.xml b/mastodon/src/main/res/values-pt-rBR/strings_sk.xml index 48485e6b1..233c691e7 100644 --- a/mastodon/src/main/res/values-pt-rBR/strings_sk.xml +++ b/mastodon/src/main/res/values-pt-rBR/strings_sk.xml @@ -251,10 +251,9 @@ Corrigir anexos\? Habilite isso se sua instância inicial for executada no Glitch. Não é necessário para Hometown ou Akkoma. Mostrar menos - Adicionar \"re:\" nas respostas com Avisos de Conteúdo + Adicionar \"re:\" nos Avisos de Conteúdo em resposta a Modo espectador - Basicamente, a linha do tempo local com adição de postagens de uma lista de outras instâncias selecionadas pelos administradores da sua instância. -\nNa palavra dos desenvolvedores do Akkoma: \"O conceito de \"bolha\", onde administradores da instância podem escolher instâncias fortemente relacionadas e produzir uma \"comunidade de comunidades\", pode-se dizer\" + Bolha Esses são as publicações mais recentes da rede com curadoria dos administradores da sua instância. se inscreveu Citando %s @@ -267,4 +266,43 @@ Usuários se inscrevendo Novas relatórios reportado + Revelar Avisos de Conteúdo em respostas de + ninguém + autor + todo mundo + Não foi possível abrir no app + Compartilhar com conta + Compartilhar ou abrir com conta + informação remota indisponível + Falha em carregar o perfil via %s + Carregar informações de instâncias remotas + Tentar buscar listagens mais precisas de seguidores, curtidas e impulsos carregando a informação pela instância de origem. + todo mundo + ninguém + outros + Tipo de conteúdo + Não especificado + Texto simples + HTML + Markdown + BBCode + MFM + Habilitar formatação de publicação + Permite configurar um tipo de conteúdo como o Markdown na criação de uma publicação. Lembre-se que nem todas as instâncias suportam isso. + Tipo de conteúdo padrão + Permite pré-selecionar um tipo de conteúdo quando criar novas publicações, substituindo o valor definido em \"Preferências de publicação\". + \"Encaminhar denúncia\" interruptor padrão + Em resposta + Esconder botões de interação + Seguir em outra conta + Seguido como %s + Resposta enviada para %s + Em resposta a + Linha compacta resposta/impulsionar + Confirmar antes de impulsionar + Colapsar publicações muito longas + Esconder automaticamente o botão Escrever + Mostrar fio + Informação de instância temporariamente inacessível + Abrir no app \ No newline at end of file