Commit c3006080 authored by Thomas's avatar Thomas
Browse files

Merge branch 'develop'

parents 5766bfce 12fae605
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -13,8 +13,8 @@ android {
    defaultConfig {
        minSdk 21
        targetSdk 33
        versionCode 456
        versionName "3.13.2"
        versionCode 457
        versionName "3.13.3"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    flavorDimensions "default"
+5 −0
Original line number Diff line number Diff line
[
  {
    "version": "3.13.3",
    "code": "457",
    "note": "Added:\n- Allow to enable extra features in Settings\n- Customizable settings for extra features\n- Support quotes, reactions with messages\n- Support text format (html, markdown, etc.) when composing\n\nFixed:\n- CW not working with media\n- Media not displayed for older instances\n- Some crashes\n"
  },
  {
    "version": "3.13.2",
    "code": "456",
+30 −1
Original line number Diff line number Diff line
@@ -122,6 +122,7 @@ import app.fedilab.android.activities.SuggestionActivity;
import app.fedilab.android.activities.TrendsActivity;
import app.fedilab.android.activities.admin.AdminActionActivity;
import app.fedilab.android.broadcastreceiver.NetworkStateReceiver;
import app.fedilab.android.client.endpoints.MastodonAccountsService;
import app.fedilab.android.client.entities.api.Emoji;
import app.fedilab.android.client.entities.api.EmojiInstance;
import app.fedilab.android.client.entities.api.Filter;
@@ -159,6 +160,8 @@ import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public abstract class BaseMainActivity extends BaseActivity implements NetworkStateReceiver.NetworkStateReceiverListener, FragmentMastodonTimeline.UpdateCounters, FragmentNotificationContainer.UpdateCounters, FragmentMastodonConversation.UpdateCounters {

@@ -585,9 +588,35 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
            } catch (DBException e) {
                e.printStackTrace();
            }
            //If the attached account is null, the app will fetch remote instance to get up-to-date values
            if (currentAccount != null && currentAccount.mastodon_account == null) {
                OkHttpClient okHttpClient = new OkHttpClient.Builder()
                        .readTimeout(60, TimeUnit.SECONDS)
                        .connectTimeout(60, TimeUnit.SECONDS)
                        .callTimeout(60, TimeUnit.SECONDS)
                        .proxy(Helper.getProxy(getApplication().getApplicationContext()))
                        .build();
                Retrofit retrofit = new Retrofit.Builder()
                        .baseUrl("https://" + MainActivity.currentInstance + "/api/v1/")
                        .addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder()))
                        .client(okHttpClient)
                        .build();
                MastodonAccountsService mastodonAccountsService = retrofit.create(MastodonAccountsService.class);
                retrofit2.Call<app.fedilab.android.client.entities.api.Account> accountCall = mastodonAccountsService.verify_credentials(MainActivity.currentToken);
                if (accountCall != null) {
                    try {
                        retrofit2.Response<app.fedilab.android.client.entities.api.Account> accountResponse = accountCall.execute();
                        if (accountResponse.isSuccessful()) {
                            currentAccount.mastodon_account = accountResponse.body();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
            Handler mainHandler = new Handler(Looper.getMainLooper());
            Runnable myRunnable = () -> {
                if (currentAccount == null) {
                if (currentAccount == null || currentAccount.mastodon_account == null) {
                    //It is not, the user is redirected to the login page
                    Intent myIntent = new Intent(BaseMainActivity.this, LoginActivity.class);
                    startActivity(myIntent);
+17 −1
Original line number Diff line number Diff line
@@ -104,7 +104,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
    public static final int TAKE_PHOTO = 5600;
    private final Timer timer = new Timer();
    private List<Status> statusList;
    private Status statusReply, statusMention;
    private Status statusReply, statusMention, statusQuoted;
    private StatusDraft statusDraft;
    private ComposeAdapter composeAdapter;
    private boolean promptSaveDraft;
@@ -465,6 +465,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
        Bundle b = getIntent().getExtras();
        if (b != null) {
            statusReply = (Status) b.getSerializable(Helper.ARG_STATUS_REPLY);
            statusQuoted = (Status) b.getSerializable(Helper.ARG_QUOTED_MESSAGE);
            statusDraft = (StatusDraft) b.getSerializable(Helper.ARG_STATUS_DRAFT);
            scheduledStatus = (ScheduledStatus) b.getSerializable(Helper.ARG_STATUS_SCHEDULED);
            statusReplyId = b.getString(Helper.ARG_STATUS_REPLY_ID);
@@ -557,6 +558,9 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
        List<Status> statusDraftList = new ArrayList<>();
        Status status = new Status();
        status.id = Helper.generateIdString();
        if (statusQuoted != null) {
            status.quote_id = statusQuoted.id;
        }
        statusDraftList.add(status);

        if (statusReplyId != null && statusDraft != null) {//Delete and redraft
@@ -647,6 +651,18 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
            binding.recyclerView.setAdapter(composeAdapter);
            statusesVM.getContext(currentInstance, BaseMainActivity.currentToken, statusReply.id)
                    .observe(ComposeActivity.this, this::initializeContextView);
        } else if (statusQuoted != null) {
            statusList.add(statusQuoted);
            int statusCount = statusList.size();
            statusDraftList.get(0).quote_id = statusQuoted.id;
            //StatusDraftList at this point should only have one element
            statusList.addAll(statusDraftList);
            composeAdapter = new ComposeAdapter(statusList, statusCount, account, accountMention, visibility, editMessageId);
            composeAdapter.manageDrafts = this;
            composeAdapter.promptDraftListener = this;
            LinearLayoutManager mLayoutManager = new LinearLayoutManager(ComposeActivity.this);
            binding.recyclerView.setLayoutManager(mLayoutManager);
            binding.recyclerView.setAdapter(composeAdapter);
        } else {
            //Compose without replying
            statusList.addAll(statusDraftList);
+3 −1
Original line number Diff line number Diff line
@@ -59,7 +59,9 @@ public interface MastodonStatusesService {
            @Field("sensitive") Boolean sensitive,
            @Field("spoiler_text") String spoiler_text,
            @Field("visibility") String visibility,
            @Field("language") String language
            @Field("language") String language,
            @Field("quote_id") String quote_id,
            @Field("content_type") String content_type
    );

    @GET("statuses/{id}/source")
Loading