diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Tokens.java b/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Tokens.java index a7e1f36b..e64d4979 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Tokens.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/api/twitter/Tokens.java @@ -19,7 +19,7 @@ public class Tokens { * false means there are no API keys available * set to true when {@link #CONSUMER_TOKEN} and {@link #TOKEN_SECRET} are set */ - public static final boolean USE_DEFAULT_KEYS = true; + public static final boolean USE_DEFAULT_KEYS = false; /** * for compability mode disable Twitter API version 2.0 (use only version 1.1) if the API access don't support this. diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/helper/StatusUpdate.java b/app/src/main/java/org/nuclearfog/twidda/backend/helper/StatusUpdate.java index 43916e02..a6d7d431 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/helper/StatusUpdate.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/helper/StatusUpdate.java @@ -8,6 +8,9 @@ import android.net.Uri; import androidx.annotation.NonNull; import androidx.documentfile.provider.DocumentFile; +import org.nuclearfog.twidda.config.Configuration; +import org.nuclearfog.twidda.config.GlobalSettings; + import java.io.InputStream; import java.util.ArrayList; import java.util.List; @@ -44,20 +47,6 @@ public class StatusUpdate { */ public static final int MEDIA_GIF = 3; - /** - * image limit of a status - */ - private static final int MAX_IMAGES = 4; - - /** - * video limit of a status - */ - private static final int MAX_VIDEOS = 1; - - /** - * gif limit of a status - */ - private static final int MAX_GIF = 1; private static final String MIME_GIF = "image/gif"; private static final String MIME_IMAGE_ALL = "image/"; @@ -98,6 +87,7 @@ public class StatusUpdate { */ public int addMedia(Context context, Uri mediaUri) { String mime = context.getContentResolver().getType(mediaUri); + Configuration configuration = GlobalSettings.getInstance(context).getLogin().getConfiguration(); if (mime == null) { return MEDIA_ERROR; } @@ -111,7 +101,7 @@ public class StatusUpdate { DocumentFile file = DocumentFile.fromSingleUri(context, mediaUri); if (file != null && file.length() > 0) { mediaUris.add(mediaUri); - if (mediaUris.size() == MAX_GIF) { + if (mediaUris.size() == configuration.getGifLimit()) { mediaLimitReached = true; } return MEDIA_GIF; @@ -130,7 +120,7 @@ public class StatusUpdate { DocumentFile file = DocumentFile.fromSingleUri(context, mediaUri); if (file != null && file.length() > 0) { mediaUris.add(mediaUri); - if (mediaUris.size() == MAX_IMAGES) { + if (mediaUris.size() == configuration.getImageLimit()) { mediaLimitReached = true; } return MEDIA_IMAGE; @@ -144,11 +134,11 @@ public class StatusUpdate { case MEDIA_NONE: mediaType = MEDIA_VIDEO; - case MAX_VIDEOS: + case MEDIA_VIDEO: DocumentFile file = DocumentFile.fromSingleUri(context, mediaUri); if (file != null && file.length() > 0) { mediaUris.add(mediaUri); - if (mediaUris.size() == MAX_VIDEOS) { + if (mediaUris.size() == configuration.getVideoLimit()) { mediaLimitReached = true; } return MEDIA_VIDEO; diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/utils/StringTools.java b/app/src/main/java/org/nuclearfog/twidda/backend/utils/StringTools.java index 4e872366..e88d8a98 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/utils/StringTools.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/utils/StringTools.java @@ -181,21 +181,6 @@ public class StringTools { return buf.toString(); } - /** - * count @username mentions in a string - * - * @param text text - * @return username count - */ - public static int countMentions(String text) { - int result = 0; - Matcher m = MENTION.matcher(text); - while (m.find()) { - result++; - } - return result; - } - /** * convert time strings from different APIs to the local format * 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 1e202b10..1dfadd04 100644 --- a/app/src/main/java/org/nuclearfog/twidda/config/Configuration.java +++ b/app/src/main/java/org/nuclearfog/twidda/config/Configuration.java @@ -38,6 +38,9 @@ public enum Configuration { private final boolean profileUrlEnabled; private final boolean idBlocklistEnabled; private final boolean postLocationSupported; + private final int maxImages; + private final int maxGifs; + private final int maxVideos; /** * @param accountType account login type, see {@link Account} @@ -55,6 +58,9 @@ public enum Configuration { profileUrlEnabled = true; idBlocklistEnabled = true; postLocationSupported = true; + maxImages = 4; + maxGifs = 1; + maxVideos = 1; break; case Account.API_MASTODON: @@ -66,6 +72,9 @@ public enum Configuration { profileUrlEnabled = false; idBlocklistEnabled = false; postLocationSupported = false; + maxImages = 4; + maxGifs = 1; + maxVideos = 1; break; default: @@ -77,6 +86,9 @@ public enum Configuration { profileUrlEnabled = false; idBlocklistEnabled = false; postLocationSupported = false; + maxImages = 4; + maxGifs = 1; + maxVideos = 1; break; } } @@ -143,4 +155,25 @@ public enum Configuration { public boolean locationSupported() { return postLocationSupported; } + + /** + * @return image limit for posts + */ + public int getImageLimit() { + return maxImages; + } + + /** + * @return video limit for posts + */ + public int getVideoLimit() { + return maxVideos; + } + + /** + * @return gif limit for posts + */ + public int getGifLimit() { + return maxGifs; + } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/StatusEditor.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/StatusEditor.java index 3e88c6b2..0e07b234 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/StatusEditor.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/StatusEditor.java @@ -33,7 +33,6 @@ import org.nuclearfog.twidda.backend.async.StatusUpdater; import org.nuclearfog.twidda.backend.helper.StatusUpdate; import org.nuclearfog.twidda.backend.utils.AppStyles; import org.nuclearfog.twidda.backend.utils.ErrorHandler; -import org.nuclearfog.twidda.backend.utils.StringTools; import org.nuclearfog.twidda.config.GlobalSettings; import org.nuclearfog.twidda.ui.dialogs.ConfirmDialog; import org.nuclearfog.twidda.ui.dialogs.ConfirmDialog.OnConfirmListener; @@ -59,11 +58,6 @@ public class StatusEditor extends MediaActivity implements OnClickListener, OnPr */ public static final String KEY_STATUS_EDITOR_TEXT = "status_text"; - /** - * mention limit of a status - */ - private static final int MAX_MENTIONS = 10; - private ImageButton mediaBtn, locationBtn; private EditText statusText; private View locationPending; @@ -166,10 +160,6 @@ public class StatusEditor extends MediaActivity implements OnClickListener, OnPr if (statusText.trim().isEmpty() && statusUpdate.mediaCount() == 0) { Toast.makeText(getApplicationContext(), R.string.error_empty_tweet, LENGTH_SHORT).show(); } - // check if mentions exceed the limit - else if (StringTools.countMentions(statusText) > MAX_MENTIONS) { - Toast.makeText(getApplicationContext(), R.string.error_mention_exceed, LENGTH_SHORT).show(); - } // check if GPS location is pending else if (isLocating()) { Toast.makeText(getApplicationContext(), R.string.info_location_pending, LENGTH_SHORT).show(); diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 1ff4cc17..fe803a44 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -176,7 +176,6 @@ Consumer Secret Fehler während des Abruf Fehler, API Zugang wurde abgelehnt! Bitte API Schlüssel überprüfen! - Zu viele Nutzer Erwähnungen! Fehler, API Schlüssel veraltet, bitte App aktualisieren! Ortung läuft, bitte warten. Twitter Regeln: diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 0f44cb5c..03883fd9 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -151,7 +151,6 @@ 用户信息更新失败!请检查您输入的内容! 错误,API 访问被拒绝!请检察您的 API 密钥。 错误,API 密钥已过期!请更新应用! - 提及用户过多! 未定义错误! diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 615e70c4..b0819dc4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -100,7 +100,6 @@ Error, API access denied! Please check your API Keys. Error, API access limited by Twitter! Error, API Keys expired! Please update app! - Too much mentions! Error, result cancelled! Error, search query is too long or contains illegal characters! Invalid media file! diff --git a/build.gradle b/build.gradle index fda29a59..b4fc6796 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:7.4.0' + classpath 'com.android.tools.build:gradle:7.4.1' classpath 'io.michaelrocks:paranoid-gradle-plugin:0.3.7' // fixme Find replacement classpath 'gradle.plugin.ru.cleverpumpkin.proguard-dictionaries-generator:plugin:1.0.8' }