summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2022-12-13 18:03:00 +0100
committerThomas <tschneider.ac@gmail.com>2022-12-13 18:03:00 +0100
commit12981deafb1dfb691ba075a330fe1b76f9371524 (patch)
tree7ea906c80709e250b5db8fbd3bf3200902b2869d
parent002bc4886b3f8af75b03d364c9599f68463fead1 (diff)
parent0772f47b13f6b144a76a8d0b9b3f54f78feb5bff (diff)
Merge branch 'develop'3.11.0
-rw-r--r--app/build.gradle4
-rw-r--r--app/src/main/assets/release_notes/notes.json15
-rw-r--r--app/src/main/java/app/fedilab/android/BaseMainActivity.java53
-rw-r--r--app/src/main/java/app/fedilab/android/activities/BaseActivity.java9
-rw-r--r--app/src/main/java/app/fedilab/android/activities/BaseAlertDialogActivity.java9
-rw-r--r--app/src/main/java/app/fedilab/android/activities/BaseBarActivity.java9
-rw-r--r--app/src/main/java/app/fedilab/android/activities/BaseTransparentActivity.java9
-rw-r--r--app/src/main/java/app/fedilab/android/activities/ComposeActivity.java17
-rw-r--r--app/src/main/java/app/fedilab/android/activities/ContextActivity.java123
-rw-r--r--app/src/main/java/app/fedilab/android/activities/HashTagActivity.java274
-rw-r--r--app/src/main/java/app/fedilab/android/activities/LoginActivity.java29
-rw-r--r--app/src/main/java/app/fedilab/android/activities/ProfileActivity.java52
-rw-r--r--app/src/main/java/app/fedilab/android/activities/SettingsActivity.java57
-rw-r--r--app/src/main/java/app/fedilab/android/activities/SettingsActivity.kt56
-rw-r--r--app/src/main/java/app/fedilab/android/client/endpoints/MastodonAccountsService.java6
-rw-r--r--app/src/main/java/app/fedilab/android/client/endpoints/MastodonFiltersService.java2
-rw-r--r--app/src/main/java/app/fedilab/android/client/entities/api/Account.java28
-rw-r--r--app/src/main/java/app/fedilab/android/client/entities/app/Account.java17
-rw-r--r--app/src/main/java/app/fedilab/android/helper/CrossActionHelper.java38
-rw-r--r--app/src/main/java/app/fedilab/android/helper/Helper.java2
-rw-r--r--app/src/main/java/app/fedilab/android/helper/SpannableHelper.java35
-rw-r--r--app/src/main/java/app/fedilab/android/jobs/ComposeWorker.java4
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/AccountsReplyAdapter.java1
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java100
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/ConversationAdapter.java13
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/NotificationAdapter.java6
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java133
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentSettingsCategories.java176
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentSettingsCategories.kt138
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonContext.java38
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonConversation.java6
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java8
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java6
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentNotificationContainer.java4
-rw-r--r--app/src/main/java/app/fedilab/android/viewmodel/mastodon/AccountsVM.java30
-rw-r--r--app/src/main/java/app/fedilab/android/viewmodel/mastodon/FiltersVM.java20
-rw-r--r--app/src/main/res/drawable/ic_baseline_check_circle_24.xml2
-rw-r--r--app/src/main/res/drawable/ic_baseline_location_searching_24.xml10
-rw-r--r--app/src/main/res/drawable/ic_baseline_warning_24.xml4
-rw-r--r--app/src/main/res/drawable/tag_follow.xml9
-rw-r--r--app/src/main/res/drawable/tag_muted.xml9
-rw-r--r--app/src/main/res/drawable/tag_pin.xml9
-rw-r--r--app/src/main/res/drawable/tag_pin_off.xml9
-rw-r--r--app/src/main/res/drawable/tag_unfollow.xml9
-rw-r--r--app/src/main/res/drawable/tag_unmuted.xml9
-rw-r--r--app/src/main/res/layout/activity_conversation.xml2
-rw-r--r--app/src/main/res/layout/activity_profile.xml35
-rw-r--r--app/src/main/res/layout/compose_attachment_item.xml10
-rw-r--r--app/src/main/res/layout/drawer_status.xml30
-rw-r--r--app/src/main/res/layout/nav_header_main.xml53
-rw-r--r--app/src/main/res/menu/menu_context.xml6
-rw-r--r--app/src/main/res/menu/menu_hashtag.xml10
-rw-r--r--app/src/main/res/values-cs/strings.xml516
-rw-r--r--app/src/main/res/values-gd/strings.xml1
-rw-r--r--app/src/main/res/values-gl/strings.xml13
-rw-r--r--app/src/main/res/values-hu/strings.xml8
-rw-r--r--app/src/main/res/values-ko/strings.xml2
-rw-r--r--app/src/main/res/values-no/strings.xml8
-rw-r--r--app/src/main/res/values-pt/strings.xml9
-rw-r--r--app/src/main/res/values-ru/strings.xml2
-rw-r--r--app/src/main/res/values-sc/strings.xml15
-rw-r--r--app/src/main/res/values-szl/strings.xml2
-rw-r--r--app/src/main/res/values-tr/strings.xml21
-rw-r--r--app/src/main/res/values-zh-rCN/strings.xml2
-rw-r--r--app/src/main/res/values/strings.xml11
-rw-r--r--app/src/main/res/xml/pref_categories.xml2
-rw-r--r--app/src/main/res/xml/pref_timelines.xml7
-rw-r--r--src/fdroid/fastlane/metadata/android/en/changelogs/444.txt4
-rw-r--r--src/fdroid/fastlane/metadata/android/en/changelogs/445.txt11
-rw-r--r--src/fdroid/fastlane/metadata/android/en/changelogs/446.txt18
-rw-r--r--src/fdroid/fastlane/metadata/android/gl/changelogs/390.txt5
-rw-r--r--src/fdroid/fastlane/metadata/android/gl/title.txt1
72 files changed, 1697 insertions, 704 deletions
diff --git a/app/build.gradle b/app/build.gradle
index ef78a3c72..d22d76ee0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,8 +13,8 @@ android {
defaultConfig {
minSdk 21
targetSdk 32
- versionCode 443
- versionName "3.10.0"
+ versionCode 446
+ versionName "3.11.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
flavorDimensions "default"
diff --git a/app/src/main/assets/release_notes/notes.json b/app/src/main/assets/release_notes/notes.json
index 0a3ee24c6..f3818d4c8 100644
--- a/app/src/main/assets/release_notes/notes.json
+++ b/app/src/main/assets/release_notes/notes.json
@@ -1,5 +1,20 @@
[
{
+ "version": "3.11.0",
+ "code": "446",
+ "note": "Added:\n- Display all messages in threads from remote instances (when possible)\n- Allow to unmute/unfollow/unpin a tag from tag timelines\n- Display most used accounts in header menu for an easy switch\n- Automatically add the tag when composing from a tag timeline\n- Add a translate button at the bottom of messages (default: disabled)\n- Add account role in profiles\n- Translate morse\n\nChanged:\n- Disable animations after a refresh\n\nFixed:\n- Contact not working when composing\n- Status bar for black theme\n- Message duplicated in conversations when edited\n- Color issue on Android 5\n- Several crashes"
+ },
+ {
+ "version": "3.10.2",
+ "code": "445",
+ "note": "Added:\n- Allow to unmute/unfollow/unpin a tag from tag timelines\n- Automatically add the tag when composing from a tag timeline\n- Add a translate button at the bottom of messages (default: disabled)\n- Add account role in profiles\n\nFixed:\n- Contact not working when composing\n- Status bar for black theme\n- Message duplicated in conversations when edited\n- Color issue on Android 5"
+ },
+ {
+ "version": "3.10.1",
+ "code": "444",
+ "note": "Added:\n- Display all messages in threads from remote instances (when possible)\n* Only public messages for instances using the Mastodon API\n* A dedicated button is displayed at the top right when conditions are filled."
+ },
+ {
"version": "3.10.0",
"code": "443",
"note": "Added:\n- Dracula theme\n- Customize message colors\n- Enable/Disable Card presentation\n\nChanged:\n- Colors for some themes\n- Space between buttons\n\nFixed:\n- Animated profile pictures not displayed\n- Mentions broken in profile bio and fields\n- Jumps with fit preview images when scrolling up\n- Fetch more button broken with cache\n- Tag patterns in URL break the link\n- Typo in followed tags"
diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
index 1f28b8bea..7e43d4d0f 100644
--- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java
+++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
@@ -697,7 +697,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) {
+ if (mastodonAccount != null && currentAccount != null) {
currentAccount.mastodon_account = mastodonAccount;
displayReleaseNotesIfNeeded(BaseMainActivity.this, false);
new Thread(() -> {
@@ -758,6 +758,57 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
}
}).start();
}
+ //Fetch recent used accounts
+ new Thread(() -> {
+ try {
+ List<BaseAccount> accounts = new Account(BaseMainActivity.this).getLastUsedAccounts();
+ Handler mainHandler = new Handler(Looper.getMainLooper());
+ Runnable myRunnable = () -> {
+ if (accounts != null && accounts.size() > 0) {
+ Helper.loadPP(this, headerMainBinding.otherAccount1, accounts.get(0));
+ headerMainBinding.otherAccount1.setVisibility(View.VISIBLE);
+ headerMainBinding.otherAccount1.setOnClickListener(v -> {
+ headerMenuOpen = false;
+ Toasty.info(BaseMainActivity.this, getString(R.string.toast_account_changed, "@" + accounts.get(0).mastodon_account.acct + "@" + accounts.get(0).instance), Toasty.LENGTH_LONG).show();
+ BaseMainActivity.currentToken = accounts.get(0).token;
+ BaseMainActivity.currentUserID = accounts.get(0).user_id;
+ api = accounts.get(0).api;
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ editor.putString(PREF_USER_TOKEN, accounts.get(0).token);
+ editor.commit();
+ //The user is now aut
+ //The user is now authenticated, it will be redirected to MainActivity
+ Intent mainActivity = new Intent(this, MainActivity.class);
+ startActivity(mainActivity);
+ finish();
+ });
+ if (accounts.size() > 1) {
+ Helper.loadPP(this, headerMainBinding.otherAccount2, accounts.get(1));
+ headerMainBinding.otherAccount2.setVisibility(View.VISIBLE);
+ headerMainBinding.otherAccount2.setOnClickListener(v -> {
+ headerMenuOpen = false;
+ Toasty.info(BaseMainActivity.this, getString(R.string.toast_account_changed, "@" + accounts.get(1).mastodon_account.acct + "@" + accounts.get(1).instance), Toasty.LENGTH_LONG).show();
+ BaseMainActivity.currentToken = accounts.get(1).token;
+ BaseMainActivity.currentUserID = accounts.get(1).user_id;
+ api = accounts.get(1).api;
+ SharedPreferences.Editor editor = sharedpreferences.edit();
+ editor.putString(PREF_USER_TOKEN, accounts.get(1).token);
+ editor.commit();
+ //The user is now aut
+ //The user is now authenticated, it will be redirected to MainActivity
+ Intent mainActivity = new Intent(this, MainActivity.class);
+ startActivity(mainActivity);
+ finish();
+ });
+ }
+ }
+ };
+ mainHandler.post(myRunnable);
+
+ } catch (DBException e) {
+ e.printStackTrace();
+ }
+ }).start();
}
protected abstract void rateThisApp();
diff --git a/app/src/main/java/app/fedilab/android/activities/BaseActivity.java b/app/src/main/java/app/fedilab/android/activities/BaseActivity.java
index 2f2b870f8..e7ba4af89 100644
--- a/app/src/main/java/app/fedilab/android/activities/BaseActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/BaseActivity.java
@@ -19,8 +19,11 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
+import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
+import android.view.Window;
+import android.view.WindowManager;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
@@ -81,6 +84,9 @@ public class BaseActivity extends AppCompatActivity {
break;
case "BLACK":
setTheme(R.style.BlackAppTheme);
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
currentThemeId = R.style.BlackAppTheme;
break;
case "DRACULA":
@@ -115,6 +121,9 @@ public class BaseActivity extends AppCompatActivity {
case "BLACK":
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
setTheme(R.style.BlackAppTheme);
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
currentThemeId = R.style.BlackAppTheme;
break;
case "DRACULA":
diff --git a/app/src/main/java/app/fedilab/android/activities/BaseAlertDialogActivity.java b/app/src/main/java/app/fedilab/android/activities/BaseAlertDialogActivity.java
index 48b51a25b..734121bf5 100644
--- a/app/src/main/java/app/fedilab/android/activities/BaseAlertDialogActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/BaseAlertDialogActivity.java
@@ -19,8 +19,11 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
+import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
+import android.view.Window;
+import android.view.WindowManager;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
@@ -74,6 +77,9 @@ public class BaseAlertDialogActivity extends AppCompatActivity {
setTheme(R.style.SolarizedAlertDialog);
break;
case "BLACK":
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
setTheme(R.style.BlackAlertDialog);
break;
case "DRACULA":
@@ -102,6 +108,9 @@ public class BaseAlertDialogActivity extends AppCompatActivity {
break;
case "BLACK":
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
setTheme(R.style.BlackAlertDialog);
break;
case "DRACULA":
diff --git a/app/src/main/java/app/fedilab/android/activities/BaseBarActivity.java b/app/src/main/java/app/fedilab/android/activities/BaseBarActivity.java
index e8f0111e4..2776d2ec2 100644
--- a/app/src/main/java/app/fedilab/android/activities/BaseBarActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/BaseBarActivity.java
@@ -19,8 +19,11 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
+import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
+import android.view.Window;
+import android.view.WindowManager;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
@@ -73,6 +76,9 @@ public class BaseBarActivity extends AppCompatActivity {
setTheme(R.style.SolarizedAppThemeBar);
break;
case "BLACK":
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
setTheme(R.style.BlackAppThemeBar);
break;
case "DRACULA":
@@ -102,6 +108,9 @@ public class BaseBarActivity extends AppCompatActivity {
break;
case "BLACK":
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
setTheme(R.style.BlackAppThemeBar);
break;
case "DRACULA":
diff --git a/app/src/main/java/app/fedilab/android/activities/BaseTransparentActivity.java b/app/src/main/java/app/fedilab/android/activities/BaseTransparentActivity.java
index 77f2df730..0f2668649 100644
--- a/app/src/main/java/app/fedilab/android/activities/BaseTransparentActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/BaseTransparentActivity.java
@@ -19,8 +19,11 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
+import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
+import android.view.Window;
+import android.view.WindowManager;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
@@ -73,6 +76,9 @@ public class BaseTransparentActivity extends AppCompatActivity {
setTheme(R.style.TransparentSolarized);
break;
case "BLACK":
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
setTheme(R.style.TransparentBlack);
break;
case "DRACULA":
@@ -102,6 +108,9 @@ public class BaseTransparentActivity extends AppCompatActivity {
break;
case "BLACK":
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
+ Window window = getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(Color.BLACK);
setTheme(R.style.TransparentBlack);
break;
case "DRACULA":
diff --git a/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java b/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java
index c9cedf5b8..1688d292e 100644
--- a/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java
@@ -402,8 +402,8 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
return true;
}
- private void onRetrieveContact(PopupContactBinding binding, List<app.fedilab.android.client.entities.api.Account> accounts) {
- binding.loader.setVisibility(View.GONE);
+ private void onRetrieveContact(PopupContactBinding popupContactBinding, List<app.fedilab.android.client.entities.api.Account> accounts) {
+ popupContactBinding.loader.setVisibility(View.GONE);
if (accounts == null) {
accounts = new ArrayList<>();
}
@@ -413,8 +413,9 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
checkedValues.add(composeAdapter.getLastComposeContent().contains("@" + account.acct));
}
AccountsReplyAdapter contactAdapter = new AccountsReplyAdapter(contacts, checkedValues);
- binding.lvAccountsSearch.setAdapter(contactAdapter);
-