Commit 0618e1b5 authored by Thomas's avatar Thomas
Browse files

Add the logic

parent 5656d792
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -149,6 +149,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
    private ArrayList<Uri> sharedUriList = new ArrayList<>();
    private Uri sharedUri;
    private String sharedSubject, sharedContent, sharedTitle, sharedDescription, shareURL, sharedUrlMedia;
    private String editMessageId;

    private static int visibilityToNumber(String visibility) {
        switch (visibility) {
@@ -271,7 +272,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
        statusList.addAll(0, context.ancestors);
        statusList.add(initialStatus);
        statusList.add(statusDraft.statusDraftList.get(0));
        composeAdapter = new ComposeAdapter(statusList, context.ancestors.size(), account, accountMention, visibility);
        composeAdapter = new ComposeAdapter(statusList, context.ancestors.size(), account, accountMention, visibility, editMessageId);
        composeAdapter.manageDrafts = this;
        LinearLayoutManager mLayoutManager = new LinearLayoutManager(ComposeActivity.this);
        binding.recyclerView.setLayoutManager(mLayoutManager);
@@ -487,6 +488,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
            statusReplyId = b.getString(Helper.ARG_STATUS_REPLY_ID);
            statusMention = (Status) b.getSerializable(Helper.ARG_STATUS_MENTION);
            account = (BaseAccount) b.getSerializable(Helper.ARG_ACCOUNT);
            editMessageId = b.getString(Helper.ARG_EDIT_STATUS_ID, null);
            instance = b.getString(Helper.ARG_INSTANCE, null);
            token = b.getString(Helper.ARG_TOKEN, null);
            visibility = b.getString(Helper.ARG_VISIBILITY, null);
@@ -601,7 +603,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
            }
            int statusCount = statusList.size();
            statusList.addAll(statusDraft.statusDraftList);
            composeAdapter = new ComposeAdapter(statusList, statusCount, account, accountMention, visibility);
            composeAdapter = new ComposeAdapter(statusList, statusCount, account, accountMention, visibility, editMessageId);
            composeAdapter.manageDrafts = this;
            LinearLayoutManager mLayoutManager = new LinearLayoutManager(ComposeActivity.this);
            binding.recyclerView.setLayoutManager(mLayoutManager);
@@ -652,7 +654,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
            }
            //StatusDraftList at this point should only have one element
            statusList.addAll(statusDraftList);
            composeAdapter = new ComposeAdapter(statusList, statusCount, account, accountMention, visibility);
            composeAdapter = new ComposeAdapter(statusList, statusCount, account, accountMention, visibility, editMessageId);
            composeAdapter.manageDrafts = this;
            LinearLayoutManager mLayoutManager = new LinearLayoutManager(ComposeActivity.this);
            binding.recyclerView.setLayoutManager(mLayoutManager);
@@ -662,7 +664,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
        } else {
            //Compose without replying
            statusList.addAll(statusDraftList);
            composeAdapter = new ComposeAdapter(statusList, 0, account, accountMention, visibility);
            composeAdapter = new ComposeAdapter(statusList, 0, account, accountMention, visibility, editMessageId);
            composeAdapter.manageDrafts = this;
            LinearLayoutManager mLayoutManager = new LinearLayoutManager(ComposeActivity.this);
            binding.recyclerView.setLayoutManager(mLayoutManager);
@@ -758,6 +760,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana

    private void storeDraft(boolean sendMessage, String scheduledDate) {
        new Thread(() -> {

            //Collect all statusCompose
            List<Status> statusDrafts = new ArrayList<>();
            List<Status> statusReplies = new ArrayList<>();
@@ -854,6 +857,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
                            .putString(Helper.ARG_STATUS_DRAFT_ID, String.valueOf(statusDraft.id))
                            .putString(Helper.ARG_INSTANCE, instance)
                            .putString(Helper.ARG_TOKEN, token)
                            .putString(Helper.ARG_EDIT_STATUS_ID, editMessageId)
                            .putString(Helper.ARG_USER_ID, account.user_id)
                            .putString(Helper.ARG_SCHEDULED_DATE, scheduledDate).build();
                    OneTimeWorkRequest request = new OneTimeWorkRequest.Builder(ComposeWorker.class)
@@ -863,7 +867,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
                    WorkManager.getInstance(ComposeActivity.this).enqueue(request);

                } else {
                    new ThreadMessageService(ComposeActivity.this, instance, account.user_id, token, statusDraft, scheduledDate);
                    new ThreadMessageService(ComposeActivity.this, instance, account.user_id, token, statusDraft, scheduledDate, editMessageId);
                }
                finish();
            }
+1 −0
Original line number Diff line number Diff line
@@ -113,6 +113,7 @@ public class Status implements Serializable, Cloneable {
    public transient boolean submitted = false;
    public transient boolean spoilerChecked = false;


    public enum PositionFetchMore {
        TOP,
        BOTTOM
+2 −0
Original line number Diff line number Diff line
@@ -218,6 +218,8 @@ public class Helper {
    public static final String ARG_STATUS_ACCOUNT_ID_DELETED = "ARG_STATUS_ACCOUNT_ID_DELETED";

    public static final String ARG_STATUS_DRAFT = "ARG_STATUS_DRAFT";
    public static final String ARG_EDIT_STATUS_ID = "ARG_EDIT_STATUS_ID";

    public static final String ARG_STATUS_SCHEDULED = "ARG_STATUS_SCHEDULED";
    public static final String ARG_SLUG_OF_FIRST_FRAGMENT = "ARG_SLUG_OF_FIRST_FRAGMENT";

+10 −2
Original line number Diff line number Diff line
@@ -219,8 +219,13 @@ public class ComposeWorker extends Worker {
                }
                String language = sharedPreferences.getString(context.getString(R.string.SET_COMPOSE_LANGUAGE) + dataPost.userId + dataPost.instance, null);
                if (dataPost.scheduledDate == null) {
                    if (dataPost.statusEditId == null) {
                        statusCall = mastodonStatusesService.createStatus(null, dataPost.token, statuses.get(i).text, attachmentIds, poll_options, poll_expire_in,
                                poll_multiple, poll_hide_totals, in_reply_to_status, statuses.get(i).sensitive, statuses.get(i).spoiler_text, statuses.get(i).visibility.toLowerCase(), language);
                    } else { //Status is edited
                        statusCall = mastodonStatusesService.updateStatus(null, dataPost.token, dataPost.statusEditId, statuses.get(i).text, attachmentIds, poll_options, poll_expire_in,
                                poll_multiple, poll_hide_totals, in_reply_to_status, statuses.get(i).sensitive, statuses.get(i).spoiler_text, statuses.get(i).visibility.toLowerCase(), language);
                    }
                    try {
                        Response<Status> statusResponse = statusCall.execute();
                        if (statusResponse.isSuccessful()) {
@@ -390,6 +395,7 @@ public class ComposeWorker extends Worker {
        String instance = inputData.getString(Helper.ARG_INSTANCE);
        String userId = inputData.getString(Helper.ARG_USER_ID);
        String scheduledDate = inputData.getString(Helper.ARG_SCHEDULED_DATE);
        String editMessageId = inputData.getString(Helper.ARG_EDIT_STATUS_ID);
        //Should not be null, but a simple security
        if (token == null) {
            token = BaseMainActivity.currentToken;
@@ -405,6 +411,7 @@ public class ComposeWorker extends Worker {
        dataPost.scheduledDate = scheduledDate;
        dataPost.notificationBuilder = notificationBuilder;
        dataPost.notificationManager = notificationManager;
        dataPost.statusEditId = editMessageId;
        // Mark the Worker as important
        setForegroundAsync(createForegroundInfo());
        publishMessage(getApplicationContext(), dataPost);
@@ -469,6 +476,7 @@ public class ComposeWorker extends Worker {
        public String instance;
        public String token;
        public String userId;
        public String statusEditId;
        public StatusDraft statusDraft;
        public int messageToSend;
        public int messageSent;
+2 −1
Original line number Diff line number Diff line
@@ -24,13 +24,14 @@ import app.fedilab.android.jobs.ComposeWorker;

public class ThreadMessageService {

    public ThreadMessageService(Context context, String instance, String userId, String token, StatusDraft statusDraft, String scheduledDate) {
    public ThreadMessageService(Context context, String instance, String userId, String token, StatusDraft statusDraft, String scheduledDate, String editMessageId) {
        ComposeWorker.DataPost dataPost = new ComposeWorker.DataPost();
        dataPost.instance = instance;
        dataPost.userId = userId;
        dataPost.token = token;
        dataPost.scheduledDate = scheduledDate;
        dataPost.statusDraft = statusDraft;
        dataPost.statusEditId = editMessageId;
        publishMessage(context, dataPost);
    }
}
Loading