Commit 27f1d594 authored by Thomas's avatar Thomas
Browse files

Merge branch 'develop'

parents 52ba7ef3 5bc122cb
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -13,8 +13,8 @@ android {
    defaultConfig {
        minSdk 21
        targetSdk 31
        versionCode 431
        versionName "3.7.4"
        versionCode 433
        versionName "3.8.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    flavorDimensions "default"
+13 −4
Original line number Diff line number Diff line
@@ -201,7 +201,7 @@
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/account" />
        <activity
            android:name=".activities.AdminAccountActivity"
            android:name=".activities.admin.AdminAccountActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/account" />
        <activity
@@ -210,7 +210,7 @@
            android:label="@string/account"
            android:theme="@style/AppThemeBar" />
        <activity
            android:name=".activities.AdminReportActivity"
            android:name=".activities.admin.AdminReportActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/report"
            android:theme="@style/AppThemeBar" />
@@ -243,7 +243,16 @@
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/action_about"
            android:theme="@style/AppThemeBar" />

        <activity
            android:name=".activities.admin.AdminDomainBlockActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/blocked_domains"
            android:theme="@style/AppThemeBar" />
        <activity
            android:name=".activities.SuggestionActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/Suggestions"
            android:theme="@style/AppThemeBar" />
        <activity
            android:name=".activities.PartnerShipActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
@@ -255,7 +264,7 @@
            android:label="@string/interactions"
            android:theme="@style/AppThemeBar" />
        <activity
            android:name=".activities.AdminActionActivity"
            android:name=".activities.admin.AdminActionActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:label="@string/administration"
            android:theme="@style/AppThemeBar" />
+10 −0
Original line number Diff line number Diff line
[
  {
    "version": "3.8.0",
    "code": "433",
    "note": "Added:\n- List of blocked domains (allow to unblock)\n- Support gemini links\n- Suggested followers\n- Mod/Adm: Manage instance blocked domains\n- Open messages with another account\n- Allow to disable notifications for admins\n- Sort lists\n\nChanged:\n- Allow search term to be edited\n\nFixed:\n- Drafts deleted with no warning\n- Remove lists from \"Manage timelines\"\n- App crashes when proxy is set\n- Filter not synced after being edited\n- Some crashes / improvements"
  },
  {
    "version": "3.7.5",
    "code": "432",
    "note": "Added:\n- List of blocked domains (allow to unblock)\n- Support gemini links\n- Suggested followers\n\nChanged:\n- Allow search term to be edited\n\nFixed:\n- Drafts deleted with no warning\n- App crashes when proxy is set\n- Filter not synced after being edited\n- Some crashes"
  },
  {
    "version": "3.7.4",
    "code": "431",
+53 −16
Original line number Diff line number Diff line
@@ -95,7 +95,6 @@ import java.util.regex.Pattern;

import app.fedilab.android.activities.AboutActivity;
import app.fedilab.android.activities.ActionActivity;
import app.fedilab.android.activities.AdminActionActivity;
import app.fedilab.android.activities.AnnouncementActivity;
import app.fedilab.android.activities.BaseActivity;
import app.fedilab.android.activities.CacheActivity;
@@ -117,7 +116,9 @@ import app.fedilab.android.activities.ReorderTimelinesActivity;
import app.fedilab.android.activities.ScheduledActivity;
import app.fedilab.android.activities.SearchResultTabActivity;
import app.fedilab.android.activities.SettingsActivity;
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.entities.api.Emoji;
import app.fedilab.android.client.entities.api.EmojiInstance;
@@ -391,6 +392,9 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
            } else if (id == R.id.nav_trends) {
                Intent intent = new Intent(this, TrendsActivity.class);
                startActivity(intent);
            } else if (id == R.id.nav_suggestions) {
                Intent intent = new Intent(this, SuggestionActivity.class);
                startActivity(intent);
            } else if (id == R.id.nav_cache) {
                Intent intent = new Intent(BaseMainActivity.this, CacheActivity.class);
                startActivity(intent);
@@ -582,7 +586,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
            }
            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);
@@ -650,13 +654,13 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
                regex_public = sharedpreferences.getString(getString(R.string.SET_FILTER_REGEX_PUBLIC) + currentUserID + currentInstance, null);
                show_art_nsfw = sharedpreferences.getBoolean(getString(R.string.SET_ART_WITH_NSFW) + currentUserID + currentInstance, false);
                binding.profilePicture.setOnClickListener(v -> binding.drawerLayout.openDrawer(GravityCompat.START));
                Helper.loadPP(binding.profilePicture, currentAccount);
                Helper.loadPP(BaseMainActivity.this, binding.profilePicture, currentAccount);
                headerMainBinding.accountAcc.setText(String.format("%s@%s", currentAccount.mastodon_account.username, currentAccount.instance));
                if (currentAccount.mastodon_account.display_name == null || currentAccount.mastodon_account.display_name.isEmpty()) {
                    currentAccount.mastodon_account.display_name = currentAccount.mastodon_account.acct;
                }
                headerMainBinding.accountName.setText(currentAccount.mastodon_account.display_name);
                Helper.loadPP(headerMainBinding.accountProfilePicture, currentAccount, false);
                Helper.loadPP(BaseMainActivity.this, headerMainBinding.accountProfilePicture, currentAccount, false);
                MastodonHelper.loadProfileMediaMastodon(headerMainBinding.backgroundImage, currentAccount.mastodon_account, MastodonHelper.MediaAccountType.HEADER);
                /*
                 * Some general data are loaded when the app starts such;
@@ -697,6 +701,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
                new ViewModelProvider(BaseMainActivity.this).get(AccountsVM.class).getConnectedAccount(currentInstance, currentToken)
                        .observe(BaseMainActivity.this, mastodonAccount -> {
                            //Initialize static var
                            if (mastodonAccount != null) {
                                currentAccount.mastodon_account = mastodonAccount;
                                displayReleaseNotesIfNeeded(BaseMainActivity.this, false);
                                new Thread(() -> {
@@ -707,6 +712,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
                                        e.printStackTrace();
                                    }
                                }).start();
                            }
                        });

            };
@@ -805,10 +811,11 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
        String action = intent.getAction();
        String type = intent.getType();
        Bundle extras = intent.getExtras();
        String userIdIntent, instanceIntent;
        String userIdIntent, instanceIntent, urlOfMessage;
        if (extras != null && extras.containsKey(Helper.INTENT_ACTION)) {
            userIdIntent = extras.getString(Helper.PREF_KEY_ID); //Id of the account in the intent
            instanceIntent = extras.getString(Helper.PREF_INSTANCE);
            urlOfMessage = extras.getString(Helper.PREF_MESSAGE_URL);
            if (extras.getInt(Helper.INTENT_ACTION) == Helper.NOTIFICATION_INTENT) {
                if (userIdIntent != null && instanceIntent != null && userIdIntent.equals(currentUserID) && instanceIntent.equals(currentInstance)) {
                    openNotifications(intent);
@@ -834,6 +841,23 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
                }
            } else if (extras.getInt(Helper.INTENT_ACTION) == Helper.OPEN_NOTIFICATION) {
                openNotifications(intent);
            } else if (extras.getInt(Helper.INTENT_ACTION) == Helper.OPEN_WITH_ANOTHER_ACCOUNT) {
                CrossActionHelper.fetchRemoteStatus(BaseMainActivity.this, MainActivity.currentAccount, urlOfMessage, new CrossActionHelper.Callback() {
                    @Override
                    public void federatedStatus(Status status) {
                        if (status != null) {
                            Intent intent = new Intent(BaseMainActivity.this, ContextActivity.class);
                            intent.putExtra(Helper.ARG_STATUS, status);
                            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                            startActivity(intent);
                        }
                    }

                    @Override
                    public void federatedAccount(app.fedilab.android.client.entities.api.Account account) {

                    }
                });
            }
        } else if (Intent.ACTION_SEND.equals(action) && type != null) {
            if ("text/plain".equals(type)) {
@@ -949,7 +973,9 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
                                                    runOnUiThread(() -> {
                                                        Bundle b = new Bundle();
                                                        b.putString(Helper.ARG_SHARE_URL, url[0]);
                                                        if (fetchSharedMedia) {
                                                            b.putString(Helper.ARG_SHARE_URL_MEDIA, finalImage);
                                                        }
                                                        b.putString(Helper.ARG_SHARE_TITLE, finalTitle);
                                                        b.putString(Helper.ARG_SHARE_DESCRIPTION, finalDescription);
                                                        b.putString(Helper.ARG_SHARE_SUBJECT, sharedSubject);
@@ -1029,6 +1055,17 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
                Matcher matcherLink = null;
                matcherLink = link.matcher(url);
                if (matcherLink.find()) {
                    if (currentAccount == null) {
                        SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(BaseMainActivity.this);
                        if (currentToken == null || currentToken.trim().isEmpty()) {
                            currentToken = sharedpreferences.getString(Helper.PREF_USER_TOKEN, null);
                        }
                        try {
                            currentAccount = new Account(BaseMainActivity.this).getConnectedAccount();
                        } catch (DBException e) {
                            e.printStackTrace();
                        }
                    }
                    if (matcherLink.group(3) != null && Objects.requireNonNull(matcherLink.group(3)).length() > 0) { //It's a toot
                        CrossActionHelper.fetchRemoteStatus(BaseMainActivity.this, currentAccount, url, new CrossActionHelper.Callback() {
                            @Override
+7 −16
Original line number Diff line number Diff line
@@ -31,9 +31,9 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import java.util.ArrayList;

import app.fedilab.android.R;
import app.fedilab.android.client.entities.api.AdminAccount;
import app.fedilab.android.client.entities.api.AdminReport;
import app.fedilab.android.client.entities.api.Status;
import app.fedilab.android.client.entities.api.admin.AdminAccount;
import app.fedilab.android.client.entities.api.admin.AdminReport;
import app.fedilab.android.databinding.ActivityAdminReportBinding;
import app.fedilab.android.helper.Helper;
import app.fedilab.android.helper.ThemeHelper;
@@ -221,7 +221,7 @@ public class AccountReportActivity extends BaseActivity {
            binding.email.setVisibility(View.GONE);
            binding.emailLabel.setVisibility(View.GONE);
        }
        if (accountAdmin.ip == null || accountAdmin.ip.ip.trim().equals("")) {
        if (accountAdmin.ip == null || accountAdmin.ip.trim().equals("")) {
            binding.recentIp.setVisibility(View.GONE);
            binding.recentIpLabel.setVisibility(View.GONE);
        }
@@ -243,7 +243,7 @@ public class AccountReportActivity extends BaseActivity {
            binding.emailUser.setVisibility(View.VISIBLE);
            binding.commentLabel.setVisibility(View.VISIBLE);
            binding.comment.setVisibility(View.VISIBLE);
            binding.recentIp.setText(accountAdmin.ip != null ? accountAdmin.ip.ip : "");
            binding.recentIp.setText(accountAdmin.ip != null ? accountAdmin.ip : "");
            binding.disable.setVisibility(View.VISIBLE);
            binding.suspend.setVisibility(View.VISIBLE);
        } else {
@@ -260,18 +260,9 @@ public class AccountReportActivity extends BaseActivity {
        }

        if (accountAdmin.role != null) {
            switch (accountAdmin.role) {
                case "user":
            binding.permissions.setText(AdminAccount.permissions.get(accountAdmin.role.permissions));
            binding.permissions.setText(getString(R.string.user));
                    break;
                case "moderator":
                    binding.permissions.setText(getString(R.string.moderator));
                    break;
                case "admin":
                    binding.permissions.setText(getString(R.string.administrator));
                    break;
            }
            if (accountAdmin.role.equals("admin") || accountAdmin.role.equals("moderator")) {
            if (accountAdmin.role.permissions == 1 || accountAdmin.role.permissions == 400) {
                binding.warn.setVisibility(View.GONE);
                binding.suspend.setVisibility(View.GONE);
                binding.silence.setVisibility(View.GONE);
Loading