summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2023-01-17 16:41:39 +0100
committerThomas <tschneider.ac@gmail.com>2023-01-17 16:41:39 +0100
commit3b30708954e4e9cb32f6145f333755276ae3976f (patch)
treed2c25e8360dc72ee3f61e1213591a4020d708e25
parente0e2f7789b2da828d6562923e00cf67ffb47e83d (diff)
Some fixes
-rw-r--r--app/src/main/java/app/fedilab/android/activities/AboutActivity.java2
-rw-r--r--app/src/main/java/app/fedilab/android/activities/ComposeActivity.java16
-rw-r--r--app/src/main/java/app/fedilab/android/activities/PartnerShipActivity.java2
-rw-r--r--app/src/main/java/app/fedilab/android/activities/ProfileActivity.java70
-rw-r--r--app/src/main/java/app/fedilab/android/client/endpoints/MastodonAccountsService.java3
-rw-r--r--app/src/main/java/app/fedilab/android/client/entities/api/RelationShip.java4
-rw-r--r--app/src/main/java/app/fedilab/android/helper/CrossActionHelper.java2
-rw-r--r--app/src/main/java/app/fedilab/android/helper/Helper.java2
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/AccountAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/SuggestionAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/viewmodel/mastodon/AccountsVM.java12
-rw-r--r--app/src/main/res/menu/activity_profile.xml5
-rw-r--r--app/src/main/res/menu/option_toot.xml131
-rw-r--r--app/src/main/res/values-night/themes.xml8
-rw-r--r--app/src/main/res/values/strings.xml2
-rw-r--r--app/src/main/res/values/themes.xml4
-rw-r--r--src/fdroid/fastlane/metadata/android/en/changelogs/469.txt2
18 files changed, 193 insertions, 78 deletions
diff --git a/app/src/main/java/app/fedilab/android/activities/AboutActivity.java b/app/src/main/java/app/fedilab/android/activities/AboutActivity.java
index f71715050..25965d478 100644
--- a/app/src/main/java/app/fedilab/android/activities/AboutActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/AboutActivity.java
@@ -113,7 +113,7 @@ public class AboutActivity extends BaseBarActivity {
if (relationShips != null && relationShips.size() > 0) {
if (!relationShips.get(0).following) {
binding.accountFollow.setVisibility(View.VISIBLE);
- binding.accountFollow.setOnClickListener(v -> accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false)
+ binding.accountFollow.setOnClickListener(v -> accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false, null)
.observe(AboutActivity.this, relationShip -> binding.accountFollow.setVisibility(View.GONE)));
}
}
diff --git a/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java b/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java
index 36040bb31..0b80a0ee1 100644
--- a/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java
@@ -65,6 +65,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
+import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;
@@ -641,7 +642,20 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
}
}
if (statusReply.language != null && !statusReply.language.isEmpty()) {
- statusDraftList.get(0).language = statusReply.language;
+ Set<String> storedLanguages = sharedpreferences.getStringSet(getString(R.string.SET_SELECTED_LANGUAGE), null);
+ if (storedLanguages == null || storedLanguages.size() == 0) {
+ statusDraftList.get(0).language = statusReply.language;
+ } else {
+ if (storedLanguages.contains(statusReply.language)) {
+ statusDraftList.get(0).language = statusReply.language;
+ } else {
+ String currentCode = sharedpreferences.getString(getString(R.string.SET_COMPOSE_LANGUAGE) + account.user_id + account.instance, Locale.getDefault().getLanguage());
+ if (currentCode.isEmpty()) {
+ currentCode = "EN";
+ }
+ statusDraftList.get(0).language = currentCode;
+ }
+ }
}
//StatusDraftList at this point should only have one element
statusList.addAll(statusDraftList);
diff --git a/app/src/main/java/app/fedilab/android/activities/PartnerShipActivity.java b/app/src/main/java/app/fedilab/android/activities/PartnerShipActivity.java
index 6df015f6a..f525363c3 100644
--- a/app/src/main/java/app/fedilab/android/activities/PartnerShipActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/PartnerShipActivity.java
@@ -93,7 +93,7 @@ public class PartnerShipActivity extends BaseBarActivity {
if (relationShips != null && relationShips.size() > 0) {
if (!relationShips.get(0).following) {
binding.accountFollow.setVisibility(View.VISIBLE);
- binding.accountFollow.setOnClickListener(v -> accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false)
+ binding.accountFollow.setOnClickListener(v -> accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false, null)
.observe(PartnerShipActivity.this, relationShip -> binding.accountFollow.setVisibility(View.GONE)));
}
}
diff --git a/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java b/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java
index 7e9bf5302..ce62c6718 100644
--- a/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java
@@ -83,6 +83,7 @@ import app.fedilab.android.client.entities.api.Field;
import app.fedilab.android.client.entities.api.IdentityProof;
import app.fedilab.android.client.entities.api.MastodonList;
import app.fedilab.android.client.entities.api.RelationShip;
+import app.fedilab.android.client.entities.app.Languages;
import app.fedilab.android.client.entities.app.Pinned;
import app.fedilab.android.client.entities.app.PinnedTimeline;
import app.fedilab.android.client.entities.app.RemoteInstance;
@@ -467,7 +468,7 @@ public class ProfileActivity extends BaseActivity {
Toasty.info(ProfileActivity.this, getString(R.string.nothing_to_do), Toast.LENGTH_LONG).show();
} else if (doAction == action.FOLLOW) {
binding.accountFollow.setEnabled(false);
- accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false)
+ accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false, null)
.observe(ProfileActivity.this, relationShip -> {
this.relationship = relationShip;
updateAccount();
@@ -660,7 +661,7 @@ public class ProfileActivity extends BaseActivity {
binding.accountNotification.setOnClickListener(v -> {
if (relationship != null && relationship.following) {
relationship.notifying = !relationship.notifying;
- accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, relationship.showing_reblogs, relationship.notifying)
+ accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, relationship.showing_reblogs, relationship.notifying, relationship.languages)
.observe(ProfileActivity.this, relationShip -> {
this.relationship = relationShip;
updateAccount();
@@ -726,6 +727,7 @@ public class ProfileActivity extends BaseActivity {
menu.findItem(R.id.action_direct_message).setVisible(false);
menu.findItem(R.id.action_add_to_list).setVisible(false);
menu.findItem(R.id.action_mute_home).setVisible(false);
+ menu.findItem(R.id.action_subscribed_language).setVisible(false);
} else {
menu.findItem(R.id.action_block).setVisible(true);
menu.findItem(R.id.action_mute).setVisible(true);
@@ -739,6 +741,7 @@ public class ProfileActivity extends BaseActivity {
menu.findItem(R.id.action_hide_boost).setVisible(false);
menu.findItem(R.id.action_endorse).setVisible(false);
menu.findItem(R.id.action_mute_home).setVisible(false);
+ menu.findItem(R.id.action_subscribed_language).setVisible(false);
}
if (relationship.blocking) {
menu.findItem(R.id.action_block).setTitle(R.string.action_unblock);
@@ -898,13 +901,70 @@ public class ProfileActivity extends BaseActivity {
.observe(ProfileActivity.this, relationShip -> this.relationship = relationShip);
}
return true;
+ } else if (itemId == R.id.action_subscribed_language) {
+ if (relationship != null) {
+ List<String> subscribedLanguages = relationship.languages;
+ Set<String> storedLanguages = sharedpreferences.getStringSet(getString(R.string.SET_SELECTED_LANGUAGE), null);
+ List<Languages.Language> languages = Languages.get(ProfileActivity.this);
+ if (languages == null) {
+ return true;
+ }
+ String[] codesArr;
+ String[] languagesArr;
+ boolean[] presentArr;
+ if (storedLanguages != null && storedLanguages.size() > 0) {
+ int i = 0;
+ codesArr = new String[storedLanguages.size()];
+ languagesArr = new String[storedLanguages.size()];
+ presentArr = new boolean[storedLanguages.size()];
+ for (String code : storedLanguages) {
+ for (Languages.Language language : languages) {
+ if (language.code.equalsIgnoreCase(code)) {
+ languagesArr[i] = language.language;
+ }
+ }
+ codesArr[i] = code;
+ presentArr[i] = subscribedLanguages != null && subscribedLanguages.contains(code);
+ i++;
+ }
+ } else {
+ codesArr = new String[languages.size()];
+ presentArr = new boolean[languages.size()];
+ languagesArr = new String[languages.size()];
+ int i = 0;
+ for (Languages.Language language : languages) {
+ codesArr[i] = language.code;
+ languagesArr[i] = language.language;
+ if (subscribedLanguages != null && subscribedLanguages.contains(language.code)) {
+ presentArr[i] = true;
+ }
+ i++;
+ }
+ }
+ AlertDialog.Builder builder = new MaterialAlertDialogBuilder(ProfileActivity.this, Helper.dialogStyle());
+ builder.setTitle(getString(R.string.filter_languages));
+ builder.setMultiChoiceItems(languagesArr, presentArr, (dialog, which, isChecked) -> {
+ List<String> languagesFilter = new ArrayList<>();
+ for (int i = 0; i < codesArr.length; i++) {
+ if (presentArr[i]) {
+ languagesFilter.add(codesArr[i]);
+ }
+ }
+
+ accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, relationship.showing_reblogs, relationship.notifying, languagesFilter)
+ .observe(ProfileActivity.this, relationShip -> this.relationship = relationShip);
+ });
+ builder.setNegativeButton(R.string.close, (dialog, which) -> dialog.dismiss());
+ builder.create().show();
+ }
+ return true;
} else if (itemId == R.id.action_hide_boost) {
if (relationship != null)
if (relationship.showing_reblogs) {
- accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, false, relationship.notifying)
+ accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, false, relationship.notifying, relationship.languages)
.observe(ProfileActivity.this, relationShip -> this.relationship = relationShip);
} else {
- accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, relationship.notifying)
+ accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, relationship.notifying, relationship.languages)
.observe(ProfileActivity.this, relationShip -> this.relationship = relationShip);
}
return true;
@@ -949,7 +1009,7 @@ public class ProfileActivity extends BaseActivity {
}
builderSingle.setMultiChoiceItems(listsArray, presentArray, (dialog, which, isChecked) -> {
if (relationship == null || !relationship.following) {
- accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false)
+ accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false, null)
.observe(ProfileActivity.this, newRelationShip -> {
if (newRelationShip != null) {
relationship = newRelationShip;
diff --git a/app/src/main/java/app/fedilab/android/client/endpoints/MastodonAccountsService.java b/app/src/main/java/app/fedilab/android/client/endpoints/MastodonAccountsService.java
index b7cba8995..7d2eb2fd9 100644
--- a/app/src/main/java/app/fedilab/android/client/endpoints/MastodonAccountsService.java
+++ b/app/src/main/java/app/fedilab/android/client/endpoints/MastodonAccountsService.java
@@ -174,7 +174,8 @@ public interface MastodonAccountsService {
@Header("Authorization") String app_token,
@Path("id") String id,
@Field("reblogs") boolean reblogs,
- @Field("notify") boolean notify
+ @Field("notify") boolean notify,
+ @Field("languages[]") List<String> languages
);
//Follow account
diff --git a/app/src/main/java/app/fedilab/android/client/entities/api/RelationShip.java b/app/src/main/java/app/fedilab/android/client/entities/api/RelationShip.java
index 1849605b2..fbfa93223 100644
--- a/app/src/main/java/app/fedilab/android/client/entities/api/RelationShip.java
+++ b/app/src/main/java/app/fedilab/android/client/entities/api/RelationShip.java
@@ -16,6 +16,8 @@ package app.fedilab.android.client.entities.api;
import com.google.gson.annotations.SerializedName;
+import java.util.List;
+
public class RelationShip {
@SerializedName("id")
@@ -40,6 +42,8 @@ public class RelationShip {
public boolean requested;
@SerializedName("domain_blocking")
public boolean domain_blocking;
+ @SerializedName("languages")
+ public List<String> languages;
@SerializedName("endorsed")
public boolean endorsed;
@SerializedName("note")
diff --git a/app/src/main/java/app/fedilab/android/helper/CrossActionHelper.java b/app/src/main/java/app/fedilab/android/helper/CrossActionHelper.java
index 9b28645c4..9e5de4405 100644
--- a/app/src/main/java/app/fedilab/android/helper/CrossActionHelper.java
+++ b/app/src/main/java/app/fedilab/android/helper/CrossActionHelper.java
@@ -203,7 +203,7 @@ public class CrossActionHelper {
break;
case FOLLOW_ACTION:
assert accountsVM != null;
- accountsVM.follow(ownerAccount.instance, ownerAccount.token, targetedAccount.id, true, false)
+ accountsVM.follow(ownerAccount.instance, ownerAccount.token, targetedAccount.id, true, false, null)
.observe((LifecycleOwner) context, relationShip -> Toasty.info(context, context.getString(R.string.toast_follow), Toasty.LENGTH_SHORT).show());
break;
case UNFOLLOW_ACTION:
diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java
index 63e2aa86d..1f46300b2 100644
--- a/app/src/main/java/app/fedilab/android/helper/Helper.java
+++ b/app/src/main/java/app/fedilab/android/helper/Helper.java
@@ -1861,7 +1861,7 @@ public class Helper {
if (!relationShips.get(0).following) {
binding.acccountContainer.setVisibility(View.VISIBLE);
binding.accountFollow.setVisibility(View.VISIBLE);
- binding.accountFollow.setOnClickListener(v -> accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false)
+ binding.accountFollow.setOnClickListener(v -> accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false, null)
.observe((LifecycleOwner) activity, relationShip -> binding.accountFollow.setVisibility(View.GONE)));
}
}
diff --git a/app/src/main/java/app/fedilab/android/ui/drawer/AccountAdapter.java b/app/src/main/java/app/fedilab/android/ui/drawer/AccountAdapter.java
index 604da1681..7b36fefda 100644
--- a/app/src/main/java/app/fedilab/android/ui/drawer/AccountAdapter.java
+++ b/app/src/main/java/app/fedilab/android/ui/drawer/AccountAdapter.java
@@ -229,7 +229,7 @@ public class AccountAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
Toasty.info(context, context.getString(R.string.nothing_to_do), Toast.LENGTH_LONG).show();
} else if (finalDoAction == ProfileActivity.action.FOLLOW) {
accountViewHolder.binding.followAction.setEnabled(false);
- accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false)
+ accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false, null)
.observe((LifecycleOwner) context, relationShip -> {
account.relationShip = relationShip;
adapter.notifyItemChanged(position);
diff --git a/app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java b/app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java
index 769eccac7..849d58731 100644
--- a/app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java
+++ b/app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java
@@ -49,7 +49,6 @@ import android.os.Looper;
import android.text.Html;
import android.text.SpannableString;
import android.text.TextUtils;
-import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@@ -693,7 +692,6 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
holder.binding.actionButtonMaths.setOnClickListener(v -> {
status.mathsShown = !status.mathsShown;
- Log.v(Helper.TAG, "notifyItemChanged: " + holder.getBindingAdapterPosition());
adapter.notifyItemChanged(holder.getBindingAdapterPosition());
});
holder.binding.actionButtonFavorite.setActiveImage(R.drawable.ic_round_star_24);
diff --git a/app/src/main/java/app/fedilab/android/ui/drawer/SuggestionAdapter.java b/app/src/main/java/app/fedilab/android/ui/drawer/SuggestionAdapter.java
index 58eb17123..4c6289b7b 100644
--- a/app/src/main/java/app/fedilab/android/ui/drawer/SuggestionAdapter.java
+++ b/app/src/main/java/app/fedilab/android/ui/drawer/SuggestionAdapter.java
@@ -112,7 +112,7 @@ public class SuggestionAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
holder.binding.followAction.setOnClickListener(v -> {
suggestionList.remove(position);
notifyItemRemoved(position);
- accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false);
+ accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false, null);
});
holder.binding.notInterested.setOnClickListener(view -> {
suggestionList.remove(position);
diff --git a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/AccountsVM.java b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/AccountsVM.java
index 1567a5024..b33897a41 100644
--- a/app/src/main/java/app/fedilab/android/viewmodel/mastodon/AccountsVM.java
+++ b/app/src/main/java/app/fedilab/android/viewmodel/mastodon/AccountsVM.java
@@ -602,21 +602,23 @@ public class AccountsVM extends AndroidViewModel {
/**
* Follow the given account. Can also be used to update whether to show reblogs or enable notifications.
*
- * @param id The id of the account
- * @param reblogs Receive this account's reblogs in home timeline? Defaults to true.
- * @param notify Receive notifications when this account posts a status? Defaults to false.
+ * @param id The id of the account
+ * @param reblogs Receive this account's reblogs in home timeline? Defaults to true.
+ * @param notify Receive notifications when this account posts a status? Defaults to false.
+ * @param languages Filter received statuses for these languages.
* @return {@link LiveData} containing the {@link RelationShip} to the given account
*/
- public LiveData<RelationShip> follow(@NonNull String instance, String token, @NonNull String id, boolean reblogs, boolean notify) {
+ public LiveData<RelationShip> follow(@NonNull String instance, String token, @NonNull String id, boolean reblogs, boolean notify, List<String> languages) {
relationShipMutableLiveData = new MutableLiveData<>();
MastodonAccountsService mastodonAccountsService = init(instance);
new Thread(() -> {
RelationShip relationShip = null;
- Call<RelationShip> followCall = mastodonAccountsService.follow(token, id, reblogs, notify);
+ Call<RelationShip> followCall = mastodonAccountsService.follow(token, id, reblogs, notify, languages);
if (followCall != null) {
try {
Response<RelationShip> followResponse = followCall.execute();
if (followResponse.isSuccessful()) {
+
relationShip = followResponse.body();
}
} catch (Exception e) {
diff --git a/app/src/main/res/menu/activity_profile.xml b/app/src/main/res/menu/activity_profile.xml
index cd17ac2c5..4f0c5af76 100644
--- a/app/src/main/res/menu/activity_profile.xml
+++ b/app/src/main/res/menu/activity_profile.xml
@@ -17,6 +17,11 @@
android:title="@string/action_open_in_web"
app:showAsAction="never" />
<item
+ android:id="@+id/action_subscribed_language"
+ android:icon="@drawable/ic_baseline_translate_24"
+ android:title="@string/action_change_subscribed_language"
+ app:showAsAction="never" />
+ <item
android:id="@+id/action_mute_home"
android:icon="@drawable/ic_baseline_volume_mute_24"
android:title="@string/mute_home"
diff --git a/app/src/main/res/menu/option_toot.xml b/app/src/main/res/menu/option_toot.xml
index 1d4e26ca7..20907ce03 100644
--- a/app/src/main/res/menu/option_toot.xml
+++ b/app/src/main/res/menu/option_toot.xml
@@ -18,60 +18,98 @@
android:title="@string/administration"
app:showAsAction="never" />
<item
- android:id="@+id/action_open_browser"
- android:title="@string/action_open_in_web"
- app:showAsAction="never" />
- <item
android:id="@+id/action_pin"
android:title="@string/action_pin"
app:showAsAction="never" />
+
<item
- android:id="@+id/action_share"
+ android:id="@+id/action_share_action"
android:title="@string/more_action_6"
- app:showAsAction="never" />
- <item
- android:id="@+id/action_custom_sharing"
- android:title="@string/settings_title_custom_sharing"
- android:visible="false"
- app:showAsAction="never" />
- <item
- android:id="@+id/action_copy_link"
- android:title="@string/copy_link"
- app:showAsAction="never" />
- <item
- android:id="@+id/action_mute_conversation"
- android:title="@string/mute_conversation"
- app:showAsAction="never" />
+ app:showAsAction="never">
+ <menu>
+
+ <item
+ android:id="@+id/action_share"
+ android:title="@string/more_action_6"
+ app:showAsAction="never" />
+ <item
+ android:id="@+id/action_mention"
+ android:title="@string/more_action_7"
+ app:showAsAction="never" />
+ <item
+ android:id="@+id/action_open_browser"
+ android:title="@string/action_open_in_web"
+ app:showAsAction="never" />
+ <item
+ android:id="@+id/action_open_with"
+ android:title="@string/open_with_account"
+ app:showAsAction="never" />
+ <item
+ android:id="@+id/action_copy_link"
+ android:title="@string/copy_link"
+ app:showAsAction="never" />
+ <item
+ android:id="@+id/action_copy"
+ android:title="@string/more_action_5"
+ app:showAsAction="never" />
+ <item
+ android:id="@+id/action_custom_sharing"
+ android:title="@string/settings_title_custom_sharing"
+ android:visible="false"
+ app:showAsAction="never" />
+ </menu>
+ </item>
+
<item
- android:id="@+id/action_mute"
+ android:id="@+id/action_mute_menu"
android:title="@string/more_action_1"
- app:showAsAction="never" />
- <item
- android:id="@+id/action_mute_home"
- android:title="@string/mute_home"
- app:showAsAction="never" />
+ app:showAsAction="never">
+ <menu>
+ <item
+ android:id="@+id/action_mute"
+ android:title="@string/more_action_1"
+ app:showAsAction="never" />
+ <item
+ android:id="@+id/action_mute_conversation"
+ android:title="@string/mute_conversation"
+ app:showAsAction="never" />
+ <item
+ android:id="@+id/action_mute_home"
+ android:title="@string/mute_home"
+ app:showAsAction="never" />
+ <item
+ android:id="@+id/action_timed_mute"
+ android:title="@string/more_action_8"
+ app:showAsAction="never" />
+ </menu>
+ </item>
+
<item
- android:id="@+id/action_timed_mute"
- android:title="@string/more_action_8"
- app:showAsAction="never" />
+ android:id="@+id/action_block_menu"
+ android:title="@string/more_action_3"
+ app:showAsAction="never">
+ <menu>
+ <item
+ android:id="@+id/action_block"
+ android:title="@string/more_action_2"
+ app:showAsAction="never" />
+ <item
+ android:id="@+id/action_report"
+ android:title="@string/more_action_3"
+ app:showAsAction="never" />
+ <item
+ android:id="@+id/action_block_domain"
+ android:title="@string/block_domain"
+ app:showAsAction="never" />
+ </menu>
+ </item>
+
<item
android:id="@+id/action_schedule_boost"
android:title="@string/schedule_boost"
app:showAsAction="never" />
<item
- android:id="@+id/action_block"
- android:title="@string/more_action_2"
- app:showAsAction="never" />
- <item
- android:id="@+id/action_report"
- android:title="@string/more_action_3"
- app:showAsAction="never" />
- <item
- android:id="@+id/action_block_domain"
- android:title="@string/block_domain"
- app:showAsAction="never" />
- <item
android:id="@+id/action_redraft"
android:title="@string/more_action_9"
app:showAsAction="never" />
@@ -79,16 +117,5 @@
android:id="@+id/action_remove"
android:title="@string/more_action_4"
app:showAsAction="never" />
- <item
- android:id="@+id/action_copy"
- android:title="@string/more_action_5"
- app:showAsAction="never" />
- <item
- android:id="@+id/action_mention"
- android:title="@string/more_action_7"
- app:showAsAction="never" />
- <item
- android:id="@+id/action_open_with"
- android:title="@string/open_with_account"
- app:showAsAction="never" />
+
</menu>
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index a77b7b9ad..b2a1a6bbb 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -100,7 +100,7 @@
<item name="android:windowTranslucentNavigation">true</item>
</style>
- <style name="AppThemeAlertDialog" parent="ThemeOverlay.Material3.MaterialAlertDialog">
+ <style name="AppThemeAlertDialog" parent="Theme.Material3.Dark.Dialog.Alert">
<item name="linkColor">@color/md_theme_dark_primary</item>
<item name="colorPrimary">@color/md_theme_dark_primary</item>
<item name="colorOnPrimary">@color/md_theme_dark_onPrimary</item>
@@ -223,7 +223,7 @@
<item name="android:windowTranslucentNavigation">true</item>
</style>
- <style name="SolarizedAlertDialog" parent="ThemeOverlay.Material3.MaterialAlertDialog">
+ <style name="SolarizedAlertDialog" parent="Theme.Material3.Dark.Dialog.Alert">
<item name="linkColor">@color/solarized_md_theme_dark_onPrimaryContainer</item>
<item name="colorPrimary">@color/solarized_md_theme_dark_primary</item>
<item name="colorOnPrimary">@color/solarized_md_theme_dark_onPrimary</item>
@@ -339,7 +339,7 @@
<item name="android:windowTranslucentNavigation">true</item>
</style>
- <style name="BlackAlertDialog" parent="ThemeOverlay.Material3.MaterialAlertDialog">
+ <style name="BlackAlertDialog" parent="Theme.Material3.Dark.Dialog.Alert">
<item name="linkColor">@color/black_200</item>
<item name="colorPrimary">@color/dracula_comment</item>
<item name="colorOnPrimary">@color/white</item>
@@ -454,7 +454,7 @@
<item name="android:windowTranslucentNavigation">true</item>
</style>
- <style name="DraculaAlertDialog" parent="ThemeOverlay.Material3.MaterialAlertDialog">
+ <style name="DraculaAlertDialog" parent="Theme.Material3.Dark.Dialog.Alert">
<item name="linkColor">@color/dracula_pink</item>
<item name="colorPrimary">@color/dracula_comment</item>
<item name="colorOnPrimary">@color/dracula_foreground</item>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d6cf0ce1f..58ed3f43c 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -2227,4 +2227,6 @@
<string name="set_maths_support">Write formula</string>
<string name="maths_format">Maths format</string>
<string name="hide_single_media_with_card">Hide single media when there is a link preview</string>
+ <string name="action_change_subscribed_language">Change subscribed languages</string>
+ <string name="filter_languages">Filter languages</string>
</resources> \ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 25c4b30ac..a24a2e637 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -100,7 +100,7 @@
<item name="android:windowTranslucentNavigation">true