Commit 5d5f2f9c authored by Thomas's avatar Thomas
Browse files

Fix #800 - Add settings to don't send message if there are no media description

parent 19348ce0
Loading
Loading
Loading
Loading
+34 −8
Original line number Diff line number Diff line
@@ -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);
@@ -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();
            }
@@ -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) {
@@ -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;
    }


+0 −3
Original line number Diff line number Diff line
@@ -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;

@@ -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;

@@ -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);
+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
+6 −1
Original line number Diff line number Diff line
@@ -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">
@@ -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
+8 −0
Original line number Diff line number Diff line
@@ -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