From d902704c09dc00aca842a9b8bc17c1ab8a7dd344 Mon Sep 17 00:00:00 2001 From: nuclearfog Date: Tue, 13 Jun 2023 20:57:45 +0200 Subject: [PATCH] version upgrade, bug fix --- app/build.gradle | 4 ++-- .../org/nuclearfog/twidda/ClientApplication.java | 10 ---------- .../api/mastodon/impl/MastodonStatus.java | 2 +- .../nuclearfog/twidda/config/Configuration.java | 9 ++------- .../twidda/config/impl/ConfigAccount.java | 16 ++++++++-------- .../twidda/database/impl/DatabaseAccount.java | 2 +- .../twidda/notification/PushNotification.java | 10 +++++++++- .../notification/PushNotificationReceiver.java | 2 +- .../twidda/ui/activities/SettingsActivity.java | 4 ++++ app/src/main/res/values/arrays.xml | 4 ++-- 10 files changed, 30 insertions(+), 33 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index b6f9b16e..5331580c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,8 +11,8 @@ android { applicationId 'org.nuclearfog.twidda' minSdkVersion 21 targetSdkVersion 33 - versionCode 87 - versionName '3.2' + versionCode 88 + versionName '3.2.1' resConfigs 'en', 'de-rDE', 'zh-rCN' } diff --git a/app/src/main/java/org/nuclearfog/twidda/ClientApplication.java b/app/src/main/java/org/nuclearfog/twidda/ClientApplication.java index 22850265..0327fe14 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ClientApplication.java +++ b/app/src/main/java/org/nuclearfog/twidda/ClientApplication.java @@ -1,14 +1,10 @@ package org.nuclearfog.twidda; import android.app.Application; -import android.app.NotificationChannel; -import android.app.NotificationManager; -import android.os.Build; import org.nuclearfog.twidda.backend.image.ImageCache; import org.nuclearfog.twidda.backend.image.PicassoBuilder; import org.nuclearfog.twidda.config.GlobalSettings; -import org.nuclearfog.twidda.notification.PushNotification; import org.nuclearfog.twidda.notification.PushSubscription; /** @@ -24,12 +20,6 @@ public class ClientApplication extends Application { super.onCreate(); // setup push receiver settings = GlobalSettings.getInstance(getApplicationContext()); - // setup notification channel - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - NotificationManager manager = getSystemService(NotificationManager.class); - NotificationChannel channel = new NotificationChannel(PushNotification.NOTIFICATION_ID_STR, PushNotification.NOTIFICATION_NAME, NotificationManager.IMPORTANCE_HIGH); - manager.createNotificationChannel(channel); - } if (settings.isLoggedIn() && settings.pushEnabled()) { PushSubscription.subscripe(getApplicationContext()); } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/impl/MastodonStatus.java b/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/impl/MastodonStatus.java index 83efb6c0..37684e30 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/impl/MastodonStatus.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/impl/MastodonStatus.java @@ -100,7 +100,7 @@ public class MastodonStatus implements Status { jsoupDoc.select("p").before("\\n"); String str = jsoupDoc.html().replace("\\n", "\n"); text = Jsoup.clean(str, "", Safelist.none(), OUTPUT_SETTINGS); - text = text.replace("<", "<").replace(">", ">").replace("&", "&"); + text = text.replace("<", "<").replace(">", ">").replace("&", "&").replace(" ", "\u00A0"); if (text.startsWith("\n")) { text = text.substring(1); } diff --git a/app/src/main/java/org/nuclearfog/twidda/config/Configuration.java b/app/src/main/java/org/nuclearfog/twidda/config/Configuration.java index cd06abc8..d07c2c5e 100644 --- a/app/src/main/java/org/nuclearfog/twidda/config/Configuration.java +++ b/app/src/main/java/org/nuclearfog/twidda/config/Configuration.java @@ -27,11 +27,6 @@ public enum Configuration { */ MASTODON(Account.API_MASTODON); - /** - * fallback configuration to use when there is no network selected - */ - public static final Configuration FALLBACK_CONFIG = MASTODON; - private final String name; private final int accountType; private final boolean userlistExtended; @@ -73,7 +68,7 @@ public enum Configuration { emojiSupported = false; statusEditSupported = false; webpushSupported = false; - arrayResHome = R.array.home_twitter_icons; + arrayResHome = R.array.home_twitter_tab_icons; break; default: @@ -93,7 +88,7 @@ public enum Configuration { emojiSupported = true; statusEditSupported = true; webpushSupported = true; - arrayResHome = R.array.home_mastodon_icons; + arrayResHome = R.array.home_mastodon_tab_icons; break; } } diff --git a/app/src/main/java/org/nuclearfog/twidda/config/impl/ConfigAccount.java b/app/src/main/java/org/nuclearfog/twidda/config/impl/ConfigAccount.java index 3b2db478..fe49513a 100644 --- a/app/src/main/java/org/nuclearfog/twidda/config/impl/ConfigAccount.java +++ b/app/src/main/java/org/nuclearfog/twidda/config/impl/ConfigAccount.java @@ -18,7 +18,7 @@ public class ConfigAccount implements Account { private long id; private long timestamp; - private int type; + private int apiType; private String oauthToken, tokenSecret, bearerToken; private String consumerToken, consumerSecret, hostname; @@ -36,15 +36,15 @@ public class ConfigAccount implements Account { switch (account.getConfiguration()) { case TWITTER1: - type = API_TWITTER_1; + apiType = API_TWITTER_1; break; case TWITTER2: - type = API_TWITTER_2; + apiType = API_TWITTER_2; break; case MASTODON: - type = API_MASTODON; + apiType = API_MASTODON; break; } } @@ -52,7 +52,7 @@ public class ConfigAccount implements Account { /** * */ - public ConfigAccount(long id, String oauthToken, String tokenSecret, String consumerToken, String consumerSecret, String bearerToken, String hostname, int type) { + public ConfigAccount(long id, String oauthToken, String tokenSecret, String consumerToken, String consumerSecret, String bearerToken, String hostname, int apiType) { this.id = id; this.oauthToken = oauthToken; this.tokenSecret = tokenSecret; @@ -60,7 +60,7 @@ public class ConfigAccount implements Account { this.consumerSecret = consumerSecret; this.bearerToken = bearerToken; this.hostname = hostname; - this.type = type; + this.apiType = apiType; timestamp = System.currentTimeMillis(); } @@ -122,7 +122,7 @@ public class ConfigAccount implements Account { @Override public Configuration getConfiguration() { - switch (type) { + switch (apiType) { case API_TWITTER_1: return Configuration.TWITTER1; @@ -133,7 +133,7 @@ public class ConfigAccount implements Account { return Configuration.MASTODON; default: - return Configuration.FALLBACK_CONFIG; + throw new RuntimeException("wrong API type: " + apiType); } } diff --git a/app/src/main/java/org/nuclearfog/twidda/database/impl/DatabaseAccount.java b/app/src/main/java/org/nuclearfog/twidda/database/impl/DatabaseAccount.java index 84b4bdba..6da91e43 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/impl/DatabaseAccount.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/impl/DatabaseAccount.java @@ -132,7 +132,7 @@ public class DatabaseAccount implements Account, AccountTable { return Configuration.MASTODON; default: - return Configuration.FALLBACK_CONFIG; + throw new RuntimeException("wrong API type: " + apiType); } } diff --git a/app/src/main/java/org/nuclearfog/twidda/notification/PushNotification.java b/app/src/main/java/org/nuclearfog/twidda/notification/PushNotification.java index b0fc5b31..669ac9de 100644 --- a/app/src/main/java/org/nuclearfog/twidda/notification/PushNotification.java +++ b/app/src/main/java/org/nuclearfog/twidda/notification/PushNotification.java @@ -2,6 +2,8 @@ package org.nuclearfog.twidda.notification; import static android.Manifest.permission.POST_NOTIFICATIONS; +import android.app.NotificationChannel; +import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; @@ -39,10 +41,16 @@ public class PushNotification { * */ public PushNotification(Context context) { + this.context = context; notificationManager = NotificationManagerCompat.from(context); notificationBuilder = new NotificationCompat.Builder(context, NOTIFICATION_ID_STR); settings = GlobalSettings.getInstance(context); - this.context = context; + // setup notification channel + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + NotificationManager manager = context.getSystemService(NotificationManager.class); + NotificationChannel channel = new NotificationChannel(PushNotification.NOTIFICATION_ID_STR, PushNotification.NOTIFICATION_NAME, NotificationManager.IMPORTANCE_HIGH); + manager.createNotificationChannel(channel); + } // Open MainActivity and select notification tab, if notification view is clicked Intent notificationIntent = new Intent(context.getApplicationContext(), MainActivity.class); notificationIntent.putExtra(MainActivity.KEY_SELECT_NOTIFICATION, true); diff --git a/app/src/main/java/org/nuclearfog/twidda/notification/PushNotificationReceiver.java b/app/src/main/java/org/nuclearfog/twidda/notification/PushNotificationReceiver.java index 96215a92..a90f850a 100644 --- a/app/src/main/java/org/nuclearfog/twidda/notification/PushNotificationReceiver.java +++ b/app/src/main/java/org/nuclearfog/twidda/notification/PushNotificationReceiver.java @@ -26,7 +26,7 @@ public class PushNotificationReceiver extends MessagingReceiver implements Async @Override public void onMessage(@NonNull Context context, @NonNull byte[] message, @NonNull String instance) { GlobalSettings settings = GlobalSettings.getInstance(context); - if (settings.pushEnabled()) { + if (settings.isLoggedIn() && settings.getLogin().getConfiguration().isWebpushSupported() && settings.pushEnabled()) { NotificationLoader loader = new NotificationLoader(context); NotificationLoaderParam param = new NotificationLoaderParam(NotificationLoaderParam.LOAD_UNREAD, 0, 0L, 0L); notificationManager = new PushNotification(context); diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java index fc177f5f..972e05b9 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/SettingsActivity.java @@ -210,6 +210,10 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen enableLocalTl.setVisibility(View.VISIBLE); trend_card.setVisibility(View.GONE); } + if (!configuration.isWebpushSupported()) { + push_label.setVisibility(View.GONE); + enablePush.setVisibility(View.GONE); + } if (!settings.isLoggedIn()) { user_card.setVisibility(View.GONE); push_label.setVisibility(View.GONE); diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 662d949e..27658da4 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -1,14 +1,14 @@ - + @drawable/home @drawable/hash @drawable/bell @drawable/message - + @drawable/home @drawable/hash @drawable/global