Loading app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java +34 −8 Original line number Diff line number Diff line Loading @@ -213,7 +213,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana if (statusDraft == null) { statusDraft = ComposeAdapter.prepareDraft(statusList, composeAdapter, account.instance, account.user_id); } if (canBeSent(statusDraft)) { if (canBeSent(statusDraft) != 0) { if (promptSaveDraft) { AlertDialog.Builder alt_bld = new MaterialAlertDialogBuilder(ComposeActivity.this); alt_bld.setMessage(R.string.save_draft); Loading Loading @@ -394,8 +394,10 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana if (statusDraft == null) { statusDraft = ComposeAdapter.prepareDraft(statusList, composeAdapter, account.instance, account.user_id); } if (canBeSent(statusDraft)) { if (canBeSent(statusDraft) == 1) { MediaHelper.scheduleMessage(ComposeActivity.this, date -> storeDraft(true, date)); } else if (canBeSent(statusDraft) == -1) { Toasty.warning(ComposeActivity.this, getString(R.string.toot_error_no_media_description), Toasty.LENGTH_SHORT).show(); } else { Toasty.info(ComposeActivity.this, getString(R.string.toot_error_no_content), Toasty.LENGTH_SHORT).show(); } Loading Loading @@ -829,7 +831,18 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana statusDraft.user_id = account.user_id; } if (!canBeSent(statusDraft)) { if (canBeSent(statusDraft) != 1) { Handler mainHandler = new Handler(Looper.getMainLooper()); Runnable myRunnable = () -> { if (canBeSent(statusDraft) == -1) { Toasty.warning(ComposeActivity.this, getString(R.string.toot_error_no_media_description), Toasty.LENGTH_SHORT).show(); } else { Toasty.info(ComposeActivity.this, getString(R.string.toot_error_no_content), Toasty.LENGTH_SHORT).show(); } statusDrafts.get(statusDrafts.size() - 1).submitted = false; composeAdapter.notifyItemChanged(statusList.size() - 1); }; mainHandler.post(myRunnable); return; } if (statusDraft.id > 0) { Loading Loading @@ -915,22 +928,35 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana } private boolean canBeSent(StatusDraft statusDraft) { private int canBeSent(StatusDraft statusDraft) { if (statusDraft == null) { return false; return 0; } SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this); boolean checkAlt = sharedpreferences.getBoolean(getString(R.string.SET_MANDATORY_ALT_TEXT), false); if (checkAlt) { for (Status status : statusDraft.statusDraftList) { if (status.media_attachments != null && status.media_attachments.size() > 0) { for (Attachment attachment : status.media_attachments) { if (attachment.description == null || attachment.description.trim().isEmpty()) { return -1; } } } } } List<Status> statuses = statusDraft.statusDraftList; if (statuses == null || statuses.size() == 0) { return false; return 0; } Status statusCheck = statuses.get(0); if (statusCheck == null) { return false; return 0; } return (statusCheck.text != null && statusCheck.text.trim().length() != 0) || (statusCheck.media_attachments != null && statusCheck.media_attachments.size() != 0) || statusCheck.poll != null || (statusCheck.spoiler_text != null && statusCheck.spoiler_text.trim().length() != 0); || (statusCheck.spoiler_text != null && statusCheck.spoiler_text.trim().length() != 0) ? 1 : 0; } Loading app/src/main/java/app/fedilab/android/mastodon/services/CustomReceiver.java +0 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package app.fedilab.android.mastodon.services; import android.content.Context; import android.content.Intent; import android.util.Log; import androidx.annotation.NonNull; Loading @@ -24,7 +23,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.unifiedpush.android.connector.MessagingReceiver; import app.fedilab.android.mastodon.helper.Helper; import app.fedilab.android.mastodon.helper.NotificationsHelper; import app.fedilab.android.mastodon.helper.PushNotifications; Loading @@ -40,7 +38,6 @@ public class CustomReceiver extends MessagingReceiver { @Override public void onMessage(@NotNull Context context, @NotNull byte[] message, @NotNull String slug) { // Called when a new message is received. The message contains the full POST body of the push message Log.v(Helper.TAG, "onMessage: " + slug); new Thread(() -> { try { /*Notification notification = ECDHFedilab.decryptNotification(context, slug, message); Loading app/src/main/res/layouts/mastodon/values/strings.xml +1 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <resources> </resources> No newline at end of file app/src/main/res/values/strings.xml +6 −1 Original line number Diff line number Diff line Loading @@ -868,13 +868,14 @@ <string name="SET_DISPLAY_EMOJI" translatable="false">SET_DISPLAY_EMOJI</string> <string name="SET_AGGREGATE_NOTIFICATION" translatable="false">SET_AGGREGATE_NOTIFICATION</string> <string name="SET_DISPLAY_MEDIA_NOTIFICATION" translatable="false">SET_DISPLAY_MEDIA_NOTIFICATION</string> x <string name="SET_DISPLAY_CARD" translatable="false">SET_DISPLAY_CARD</string> <string name="SET_DISPLAY_VIDEO_PREVIEWS" translatable="false">SET_DISPLAY_VIDEO_PREVIEWS</string> <string name="SET_NOTIFICATION_ACTION" translatable="false">SET_NOTIFICATION_ACTION</string> <string name="SET_FEATURED_TAGS" translatable="false">SET_FEATURED_TAGS</string> <string name="SET_FEATURED_TAG_ACTION" translatable="false">SET_FEATURED_TAG_ACTION</string> <string name="SET_MANDATORY_ALT_TEXT" translatable="false">SET_MANDATORY_ALT_TEXT</string> <string name="SET_RETRIEVE_METADATA_IF_URL_FROM_EXTERAL" translatable="false">SET_RETRIEVE_METADATA_IF_URL_FROM_EXTERAL</string> <string name="SET_TRANSLATE_VALUES_RESET" translatable="false">SET_TRANSLATE_VALUES_RESET</string> <string-array name="SET_TRANSLATE_ENTRIES" translatable="false"> Loading Loading @@ -1905,4 +1906,8 @@ <string name="translator_domain">Translator domain</string> <string name="chat_timeline_for_direct">Chat timeline for direct messages</string> <string name="more_media">%1$s more media</string> <string name="set_alt_text_mandatory">Mandatory media descriptions</string> <string name="set_alt_text_mandatory_description">The message will not be sent if a description is missing with a media</string> <string name="toot_error_no_media_description">There are missing media descriptions</string> </resources> No newline at end of file app/src/main/res/xml/pref_compose.xml +8 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,14 @@ app:summary="@string/set_watermark_indication" app:title="@string/set_watermark" /> <SwitchPreferenceCompat app:defaultValue="false" app:iconSpaceReserved="false" app:key="@string/SET_MANDATORY_ALT_TEXT" app:singleLineTitle="false" app:summary="@string/set_alt_text_mandatory_description" app:title="@string/set_alt_text_mandatory" /> <EditTextPreference app:dependency="@string/SET_WATERMARK" app:key="@string/SET_WATERMARK_TEXT" Loading Loading
app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java +34 −8 Original line number Diff line number Diff line Loading @@ -213,7 +213,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana if (statusDraft == null) { statusDraft = ComposeAdapter.prepareDraft(statusList, composeAdapter, account.instance, account.user_id); } if (canBeSent(statusDraft)) { if (canBeSent(statusDraft) != 0) { if (promptSaveDraft) { AlertDialog.Builder alt_bld = new MaterialAlertDialogBuilder(ComposeActivity.this); alt_bld.setMessage(R.string.save_draft); Loading Loading @@ -394,8 +394,10 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana if (statusDraft == null) { statusDraft = ComposeAdapter.prepareDraft(statusList, composeAdapter, account.instance, account.user_id); } if (canBeSent(statusDraft)) { if (canBeSent(statusDraft) == 1) { MediaHelper.scheduleMessage(ComposeActivity.this, date -> storeDraft(true, date)); } else if (canBeSent(statusDraft) == -1) { Toasty.warning(ComposeActivity.this, getString(R.string.toot_error_no_media_description), Toasty.LENGTH_SHORT).show(); } else { Toasty.info(ComposeActivity.this, getString(R.string.toot_error_no_content), Toasty.LENGTH_SHORT).show(); } Loading Loading @@ -829,7 +831,18 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana statusDraft.user_id = account.user_id; } if (!canBeSent(statusDraft)) { if (canBeSent(statusDraft) != 1) { Handler mainHandler = new Handler(Looper.getMainLooper()); Runnable myRunnable = () -> { if (canBeSent(statusDraft) == -1) { Toasty.warning(ComposeActivity.this, getString(R.string.toot_error_no_media_description), Toasty.LENGTH_SHORT).show(); } else { Toasty.info(ComposeActivity.this, getString(R.string.toot_error_no_content), Toasty.LENGTH_SHORT).show(); } statusDrafts.get(statusDrafts.size() - 1).submitted = false; composeAdapter.notifyItemChanged(statusList.size() - 1); }; mainHandler.post(myRunnable); return; } if (statusDraft.id > 0) { Loading Loading @@ -915,22 +928,35 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana } private boolean canBeSent(StatusDraft statusDraft) { private int canBeSent(StatusDraft statusDraft) { if (statusDraft == null) { return false; return 0; } SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this); boolean checkAlt = sharedpreferences.getBoolean(getString(R.string.SET_MANDATORY_ALT_TEXT), false); if (checkAlt) { for (Status status : statusDraft.statusDraftList) { if (status.media_attachments != null && status.media_attachments.size() > 0) { for (Attachment attachment : status.media_attachments) { if (attachment.description == null || attachment.description.trim().isEmpty()) { return -1; } } } } } List<Status> statuses = statusDraft.statusDraftList; if (statuses == null || statuses.size() == 0) { return false; return 0; } Status statusCheck = statuses.get(0); if (statusCheck == null) { return false; return 0; } return (statusCheck.text != null && statusCheck.text.trim().length() != 0) || (statusCheck.media_attachments != null && statusCheck.media_attachments.size() != 0) || statusCheck.poll != null || (statusCheck.spoiler_text != null && statusCheck.spoiler_text.trim().length() != 0); || (statusCheck.spoiler_text != null && statusCheck.spoiler_text.trim().length() != 0) ? 1 : 0; } Loading
app/src/main/java/app/fedilab/android/mastodon/services/CustomReceiver.java +0 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package app.fedilab.android.mastodon.services; import android.content.Context; import android.content.Intent; import android.util.Log; import androidx.annotation.NonNull; Loading @@ -24,7 +23,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.unifiedpush.android.connector.MessagingReceiver; import app.fedilab.android.mastodon.helper.Helper; import app.fedilab.android.mastodon.helper.NotificationsHelper; import app.fedilab.android.mastodon.helper.PushNotifications; Loading @@ -40,7 +38,6 @@ public class CustomReceiver extends MessagingReceiver { @Override public void onMessage(@NotNull Context context, @NotNull byte[] message, @NotNull String slug) { // Called when a new message is received. The message contains the full POST body of the push message Log.v(Helper.TAG, "onMessage: " + slug); new Thread(() -> { try { /*Notification notification = ECDHFedilab.decryptNotification(context, slug, message); Loading
app/src/main/res/layouts/mastodon/values/strings.xml +1 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <resources> </resources> No newline at end of file
app/src/main/res/values/strings.xml +6 −1 Original line number Diff line number Diff line Loading @@ -868,13 +868,14 @@ <string name="SET_DISPLAY_EMOJI" translatable="false">SET_DISPLAY_EMOJI</string> <string name="SET_AGGREGATE_NOTIFICATION" translatable="false">SET_AGGREGATE_NOTIFICATION</string> <string name="SET_DISPLAY_MEDIA_NOTIFICATION" translatable="false">SET_DISPLAY_MEDIA_NOTIFICATION</string> x <string name="SET_DISPLAY_CARD" translatable="false">SET_DISPLAY_CARD</string> <string name="SET_DISPLAY_VIDEO_PREVIEWS" translatable="false">SET_DISPLAY_VIDEO_PREVIEWS</string> <string name="SET_NOTIFICATION_ACTION" translatable="false">SET_NOTIFICATION_ACTION</string> <string name="SET_FEATURED_TAGS" translatable="false">SET_FEATURED_TAGS</string> <string name="SET_FEATURED_TAG_ACTION" translatable="false">SET_FEATURED_TAG_ACTION</string> <string name="SET_MANDATORY_ALT_TEXT" translatable="false">SET_MANDATORY_ALT_TEXT</string> <string name="SET_RETRIEVE_METADATA_IF_URL_FROM_EXTERAL" translatable="false">SET_RETRIEVE_METADATA_IF_URL_FROM_EXTERAL</string> <string name="SET_TRANSLATE_VALUES_RESET" translatable="false">SET_TRANSLATE_VALUES_RESET</string> <string-array name="SET_TRANSLATE_ENTRIES" translatable="false"> Loading Loading @@ -1905,4 +1906,8 @@ <string name="translator_domain">Translator domain</string> <string name="chat_timeline_for_direct">Chat timeline for direct messages</string> <string name="more_media">%1$s more media</string> <string name="set_alt_text_mandatory">Mandatory media descriptions</string> <string name="set_alt_text_mandatory_description">The message will not be sent if a description is missing with a media</string> <string name="toot_error_no_media_description">There are missing media descriptions</string> </resources> No newline at end of file
app/src/main/res/xml/pref_compose.xml +8 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,14 @@ app:summary="@string/set_watermark_indication" app:title="@string/set_watermark" /> <SwitchPreferenceCompat app:defaultValue="false" app:iconSpaceReserved="false" app:key="@string/SET_MANDATORY_ALT_TEXT" app:singleLineTitle="false" app:summary="@string/set_alt_text_mandatory_description" app:title="@string/set_alt_text_mandatory" /> <EditTextPreference app:dependency="@string/SET_WATERMARK" app:key="@string/SET_WATERMARK_TEXT" Loading