summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2023-12-23 17:16:02 +0100
committerThomas <tschneider.ac@gmail.com>2023-12-23 17:16:02 +0100
commita1370693fb564d48aa56a602b7b912e864480f74 (patch)
tree69deb7db71c57f6c194d5be66c249b1956ada952
parent6314e6c24af1c72df6b817a65a0787f53ea8fe62 (diff)
parentfcc323af2a15d9c8a46c008b9a97231d0be856b5 (diff)
Merge branch 'develop'3.26.0
-rw-r--r--app/build.gradle4
-rw-r--r--app/src/fdroid/java/app/fedilab/android/activities/PeertubeBaseMainActivity.java6
-rw-r--r--app/src/main/assets/release_notes/notes.json20
-rw-r--r--app/src/main/java/app/fedilab/android/BaseMainActivity.java11
-rw-r--r--app/src/main/java/app/fedilab/android/activities/AboutActivity.java23
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/BaseActivity.java5
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/BaseBarActivity.java4
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/BaseTransparentActivity.java4
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java7
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/ContextActivity.java6
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java19
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/MastodonListActivity.java2
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/MediaActivity.java61
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java12
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminActionActivity.java8
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/client/entities/api/EmojiInstance.java97
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Tag.java6
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/ComposeHelper.java6
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java14
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/SpannableHelper.java20
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/ThemeHelper.java6
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java79
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ConversationAdapter.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/NotificationAdapter.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java197
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/admin/FragmentAdminAccount.java5
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/admin/FragmentAdminDomain.java6
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/admin/FragmentAdminReport.java6
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMediaProfile.java5
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/settings/FragmentTimelinesSettings.java12
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonAccount.java5
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonAnnouncement.java5
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonContext.java11
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonConversation.java3
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonDirectMessage.java6
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonDomainBlock.java5
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonNotification.java12
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonSuggestion.java5
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonTag.java5
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonTimeline.java38
-rw-r--r--app/src/main/java/app/fedilab/android/peertube/activities/PeertubeActivity.java6
-rw-r--r--app/src/main/java/app/fedilab/android/peertube/activities/PeertubeMainActivity.java6
-rw-r--r--app/src/main/java/app/fedilab/android/peertube/services/RetrieveInfoService.java6
-rw-r--r--app/src/main/res/drawables/peertube/drawable/progress_bar.xml4
-rw-r--r--app/src/main/res/layouts/mastodon/layout/activity_about.xml28
-rw-r--r--app/src/main/res/layouts/mastodon/layout/custom_emoji_picker.xml21
-rw-r--r--app/src/main/res/layouts/mastodon/layout/drawer_status.xml89
-rw-r--r--app/src/main/res/layouts/mastodon/layout/fragment_pagination.xml5
-rw-r--r--app/src/main/res/values-de/strings.xml6
-rw-r--r--app/src/main/res/values-gl/strings.xml7
-rw-r--r--app/src/main/res/values-night/themes.xml12
-rw-r--r--app/src/main/res/values-tr/strings.xml6
-rw-r--r--app/src/main/res/values/strings.xml9
-rw-r--r--app/src/main/res/values/themes.xml6
-rw-r--r--app/src/main/res/xml/pref_timelines.xml21
-rw-r--r--src/fdroid/fastlane/metadata/android/en/changelogs/501.txt2
-rw-r--r--src/fdroid/fastlane/metadata/android/en/changelogs/502.txt8
-rw-r--r--src/fdroid/fastlane/metadata/android/en/changelogs/503.txt14
-rw-r--r--src/fdroid/fastlane/metadata/android/en/changelogs/504.txt9
-rw-r--r--src/fdroid/fastlane/metadata/android/en/changelogs/505.txt25
-rw-r--r--src/fdroid/fastlane/metadata/android/gl/changelogs/500.txt14
-rw-r--r--src/fdroid/fastlane/metadata/android/gl/changelogs/501.txt8
-rw-r--r--src/fdroid/fastlane/metadata/android/gl/changelogs/502.txt8
63 files changed, 840 insertions, 232 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 04fc74143..fb85bb8b1 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -13,8 +13,8 @@ android {
defaultConfig {
minSdk 21
targetSdk 34
- versionCode 501
- versionName "3.25.0"
+ versionCode 505
+ versionName "3.26.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
flavorDimensions "default"
diff --git a/app/src/fdroid/java/app/fedilab/android/activities/PeertubeBaseMainActivity.java b/app/src/fdroid/java/app/fedilab/android/activities/PeertubeBaseMainActivity.java
index 379bc2763..595820f8b 100644
--- a/app/src/fdroid/java/app/fedilab/android/activities/PeertubeBaseMainActivity.java
+++ b/app/src/fdroid/java/app/fedilab/android/activities/PeertubeBaseMainActivity.java
@@ -193,7 +193,11 @@ public abstract class PeertubeBaseMainActivity extends BaseActivity implements C
super.onDestroy();
ChromeCasts.unregisterListener(this);
if (manage_chromecast != null) {
- unregisterReceiver(manage_chromecast);
+ try {
+ unregisterReceiver(manage_chromecast);
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ }
new Thread(() -> {
if (chromeCasts != null && chromeCasts.size() > 0) {
for (ChromeCast cast : chromeCasts) {
diff --git a/app/src/main/assets/release_notes/notes.json b/app/src/main/assets/release_notes/notes.json
index 0dfe79f39..f9fbcfdbd 100644
--- a/app/src/main/assets/release_notes/notes.json
+++ b/app/src/main/assets/release_notes/notes.json
@@ -1,5 +1,25 @@
[
{
+ "version": "3.26.0",
+ "code": "505",
+ "note": "Added:\n- Android 14 support\n- Automatically split long messages in threads (default: ASK)\n- Links and media are clickable when composing\n- Allow to underline clickable elements (Settings > Timelines - default: disabled)\n- Allow to disable relative date in messages\n- Add a scroll bar for timelines (default: disabled)\n- Add a search bar for custom emojis\n- Links clickable in media descriptions\n\nChanged:\n- Counters close to action buttons\n- Hide emoji picker if the instance has no emoji\n- Followed tags are ordered\n- Account picker when opening with another account\n\nFixed:\n- Avoid error 429 with NTFY\n- Fix custom colors (Android 14)\n- Fix a crash when composing\n- Display issue with followed tags\n- Crashes with profiles\n- Fix an issue with poll and Pleroma\n- Emoji not displayed in the picker\n- Several crashes are fixed"
+ },
+ {
+ "version": "3.25.3",
+ "code": "504",
+ "note": "Added:\n- Add a scroll bar for timelines (default: disabled)\n- Add a search bar for custom emojis\n\nFixed:\n- Fix prompt to split asked several times when refusing\n- Crashes with profiles\n- Fix an issue with poll and Pleroma\n- Emoji not displayed in the picker"
+ },
+ {
+ "version": "3.25.2",
+ "code": "503",
+ "note": "Added:\n- Allow to underline clickable elements (Settings > Timelines - default: disabled)\n- Allow to disable relative date in messages\n\nChanged:\n- Counters close to action buttons\n- Hide emoji picker if the instance has no emoji\n- Followed tags are ordered\n- Account picker when opening with another account\n\nFixed:\n- Fix a crash when composing\n- Fix an issue with the back button\n- Display issue with followed tags"
+ },
+ {
+ "version": "3.25.1",
+ "code": "502",
+ "note": "Fix a crash from release 3.25.0"
+ },
+ {
"version": "3.25.0",
"code": "501",
"note": "Added:\n- Android 14 support\n- Automatically split long messages in threads (default: ASK)\n- Links and media are clickable when composing\n\nFixed:\n- Avoid error 429 with NTFY\n- Several crashes are fixed"
diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
index 4cadc14f2..850de4dec 100644
--- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java
+++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java
@@ -36,6 +36,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
+import android.content.res.Configuration;
import android.database.MatrixCursor;
import android.graphics.PorterDuff;
import android.graphics.drawable.BitmapDrawable;
@@ -214,6 +215,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
public static BaseAccount currentAccount;
public static iconLauncher mLauncher = iconLauncher.BUBBLES;
public static boolean headerMenuOpen;
+ public static int currentNightMode;
Fragment currentFragment;
private AppBarConfiguration mAppBarConfiguration;
private ActivityMainBinding binding;
@@ -1859,9 +1861,12 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
@Override
protected void onDestroy() {
- unregisterReceiver(broadcast_data);
- unregisterReceiver(broadcast_error_message);
-
+ try {
+ unregisterReceiver(broadcast_data);
+ unregisterReceiver(broadcast_error_message);
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ }
if (networkStateReceiver != null) {
try {
unregisterReceiver(networkStateReceiver);
diff --git a/app/src/main/java/app/fedilab/android/activities/AboutActivity.java b/app/src/main/java/app/fedilab/android/activities/AboutActivity.java
index 2ea60818d..209351fc8 100644
--- a/app/src/main/java/app/fedilab/android/activities/AboutActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/AboutActivity.java
@@ -15,12 +15,16 @@ package app.fedilab.android.activities;
* see <http://www.gnu.org/licenses>. */
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
+import android.widget.Toast;
import androidx.core.app.ActivityOptionsCompat;
import androidx.lifecycle.ViewModelProvider;
@@ -40,6 +44,7 @@ import app.fedilab.android.mastodon.helper.CrossActionHelper;
import app.fedilab.android.mastodon.helper.Helper;
import app.fedilab.android.mastodon.helper.MastodonHelper;
import app.fedilab.android.mastodon.viewmodel.mastodon.AccountsVM;
+import es.dmoral.toasty.Toasty;
public class AboutActivity extends BaseBarActivity {
@@ -58,10 +63,10 @@ public class AboutActivity extends BaseBarActivity {
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
-
+ String version = "";
try {
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
- String version = pInfo.versionName;
+ version = pInfo.versionName;
binding.aboutVersion.setText(getResources().getString(R.string.about_vesrion, version));
} catch (PackageManager.NameNotFoundException ignored) {
}
@@ -77,6 +82,20 @@ public class AboutActivity extends BaseBarActivity {
}
binding.aboutSupportPaypal.setOnClickListener(v -> Helper.openBrowser(AboutActivity.this, "https://www.paypal.me/Mastalab"));
+
+ String finalVersion = version;
+ binding.aboutVersionCopy.setOnClickListener(v->{
+
+ ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
+ String content = "Fedilab v" + finalVersion + " for " + (BuildConfig.DONATIONS?"FDroid":"Google");
+
+ ClipData clip = ClipData.newPlainText(Helper.CLIP_BOARD, content);
+ if (clipboard != null) {
+ clipboard.setPrimaryClip(clip);
+ Toasty.info(AboutActivity.this, getString(R.string.clipboard_version), Toast.LENGTH_LONG).show();
+ }
+
+ });
if (BuildConfig.DONATIONS) {
binding.aboutSupportPaypal.setVisibility(View.VISIBLE);
} else {
diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/BaseActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/BaseActivity.java
index 963f7a338..6ab76c086 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/activities/BaseActivity.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/activities/BaseActivity.java
@@ -15,6 +15,8 @@ package app.fedilab.android.mastodon.activities;
* see <http://www.gnu.org/licenses>. */
+import static app.fedilab.android.BaseMainActivity.currentNightMode;
+
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
@@ -37,6 +39,7 @@ import org.conscrypt.Conscrypt;
import java.security.Security;
+import app.fedilab.android.BaseMainActivity;
import app.fedilab.android.R;
import app.fedilab.android.mastodon.helper.Helper;
import app.fedilab.android.mastodon.helper.ThemeHelper;
@@ -70,7 +73,7 @@ public class BaseActivity extends AppCompatActivity {
String currentTheme = sharedpreferences.getString(getString(R.string.SET_THEME_BASE), getString(R.string.SET_DEFAULT_THEME));
//Default automatic switch
- int currentNightMode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
+ currentNightMode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
if (currentTheme.equals(getString(R.string.SET_DEFAULT_THEME))) {
switch (currentNightMode) {
case Configuration.UI_MODE_NIGHT_NO -> {
diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/BaseBarActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/BaseBarActivity.java
index eb50d386e..6a1dc0fad 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/activities/BaseBarActivity.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/activities/BaseBarActivity.java
@@ -15,6 +15,8 @@ package app.fedilab.android.mastodon.activities;
* see <http://www.gnu.org/licenses>. */
+import static app.fedilab.android.BaseMainActivity.currentNightMode;
+
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
@@ -65,7 +67,7 @@ public class BaseBarActivity extends AppCompatActivity {
}
String currentTheme = sharedpreferences.getString(getString(R.string.SET_THEME_BASE), getString(R.string.SET_DEFAULT_THEME));
//Default automatic switch
- int currentNightMode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
+ currentNightMode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
if (currentTheme.equals(getString(R.string.SET_DEFAULT_THEME))) {
switch (currentNightMode) {
case Configuration.UI_MODE_NIGHT_NO -> {
diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/BaseTransparentActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/BaseTransparentActivity.java
index 6da2715e7..28f76db53 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/activities/BaseTransparentActivity.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/activities/BaseTransparentActivity.java
@@ -15,6 +15,8 @@ package app.fedilab.android.mastodon.activities;
* see <http://www.gnu.org/licenses>. */
+import static app.fedilab.android.BaseMainActivity.currentNightMode;
+
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
@@ -65,7 +67,7 @@ public class BaseTransparentActivity extends AppCompatActivity {
}
String currentTheme = sharedpreferences.getString(getString(R.string.SET_THEME_BASE), getString(R.string.SET_DEFAULT_THEME));
//Default automatic switch
- int currentNightMode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
+ currentNightMode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
if (currentTheme.equals(getString(R.string.SET_DEFAULT_THEME))) {
switch (currentNightMode) {
diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java
index cf9c72f5c..6d9c24d59 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java
@@ -195,8 +195,11 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
if (timer != null) {
timer.cancel();
}
- unregisterReceiver(imageReceiver);
-
+ try {
+ unregisterReceiver(imageReceiver);
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ }
}
diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/ContextActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/ContextActivity.java
index 7d9390c7e..a166587f6 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/activities/ContextActivity.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/activities/ContextActivity.java
@@ -113,6 +113,12 @@ public class ContextActivity extends BaseActivity implements FragmentMastodonCon
}
}
+ @Override
+ protected void onSaveInstanceState(@NonNull Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.clear();
+ }
+
private void loadLocalConversation() {
Bundle bundle = new Bundle();
bundle.putSerializable(Helper.ARG_STATUS, focusedStatus);
diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java
index 79ef02284..9b75fe471 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/activities/FollowedTagActivity.java
@@ -32,11 +32,15 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
import app.fedilab.android.BaseMainActivity;
import app.fedilab.android.R;
import app.fedilab.android.databinding.ActivityFollowedTagsBinding;
import app.fedilab.android.databinding.PopupAddFollowedTagtBinding;
+import app.fedilab.android.mastodon.client.entities.api.MastodonList;
import app.fedilab.android.mastodon.client.entities.api.Tag;
import app.fedilab.android.mastodon.client.entities.app.Timeline;
import app.fedilab.android.mastodon.helper.Helper;
@@ -74,6 +78,7 @@ public class FollowedTagActivity extends BaseBarActivity implements FollowedTagA
.observe(FollowedTagActivity.this, tags -> {
if (tags != null && tags.tags != null && tags.tags.size() > 0) {
tagList = new ArrayList<>(tags.tags);
+ sortAsc(tagList);
followedTagAdapter = new FollowedTagAdapter(tagList);
followedTagAdapter.actionOnTag = this;
binding.notContent.setVisibility(View.GONE);
@@ -95,6 +100,8 @@ public class FollowedTagActivity extends BaseBarActivity implements FollowedTagA
});
setTitle(R.string.followed_tags);
invalidateOptionsMenu();
+ } else {
+ finish();
}
}
});
@@ -143,6 +150,11 @@ public class FollowedTagActivity extends BaseBarActivity implements FollowedTagA
dialogBuilder.setView(popupAddFollowedTagtBinding.getRoot());
popupAddFollowedTagtBinding.addTag.setFilters(new InputFilter[]{new InputFilter.LengthFilter(255)});
dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> {
+ String name = Objects.requireNonNull(popupAddFollowedTagtBinding.addTag.getText()).toString().trim();
+ if(tagList.contains(new Tag(name))) {
+ Toasty.error(FollowedTagAc