From 8d9d025f11c83156db7c9a54237bea7679c817f3 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Sun, 23 Apr 2023 17:22:41 +0300 Subject: [PATCH] some cleanup --- .../vtosters/lite/concurrent/VTExecutors.java | 3 +- .../ru/vtosters/lite/deviceinfo/Device.java | 5 +- .../lite/deviceinfo/DeviceInfoCollector.java | 9 +- .../vtosters/lite/deviceinfo/OEMDetector.java | 5 +- .../ru/vtosters/lite/dnr/DNRInjector.java | 33 ++--- .../java/ru/vtosters/lite/dnr/DNRModule.java | 26 +--- .../lite/dnr/helpers/DoNotReadDBHelper.java | 5 +- .../lite/dnr/helpers/DoNotTypeDBHelper.java | 8 +- .../lite/downloaders/AudioDownloader.java | 16 +- .../lite/downloaders/OTADownloader.java | 7 +- .../lite/downloaders/StoryDownloader.java | 12 +- .../lite/downloaders/VideoDownloader.java | 16 +- .../lite/downloaders/messages/Constants.java | 3 +- .../HtmlDialogDownloaderFormatProvider.java | 5 +- .../messages/MessagesDownloader.java | 4 +- .../downloaders/messages/items/MiniMsg.java | 1 + .../notifications/NotificationChannels.java | 3 - .../lite/encryption/EncryptProvider.java | 15 +- .../lite/encryption/base/IMProcessor.java | 5 +- .../processors/BeeCryptProcessor.java | 4 +- .../processors/DefaultCoffeeProcessor.java | 4 +- .../processors/MP3InvisibleProcessor.java | 4 +- .../processors/VTostersAESProcessor.java | 18 +-- .../processors/VTostersProcessor.java | 2 - .../java/ru/vtosters/lite/foaf/FoafBase.java | 23 ++- .../ru/vtosters/lite/hooks/AdBlockHook.java | 25 +--- .../ru/vtosters/lite/hooks/AppVerHook.java | 4 +- .../lite/hooks/BusinessNotifHook.java | 2 +- .../ru/vtosters/lite/hooks/CryptImHook.java | 18 +-- .../java/ru/vtosters/lite/hooks/DateHook.java | 8 +- .../vtosters/lite/hooks/DeviceInfoHook.java | 8 +- .../vtosters/lite/hooks/DockBarInjector.java | 43 ++---- .../lite/hooks/FragAnimationHook.java | 4 +- .../java/ru/vtosters/lite/hooks/GcmHook.java | 18 +-- .../ru/vtosters/lite/hooks/JsonInjectors.java | 1 - .../lite/hooks/MainActivityInjector.java | 6 +- .../ru/vtosters/lite/hooks/MessagesHook.java | 18 +-- .../ru/vtosters/lite/hooks/NewsfeedHook.java | 23 +-- .../lite/hooks/OnlineFormatterHook.java | 27 ++-- .../ru/vtosters/lite/hooks/PhotoViewer.java | 2 +- .../java/ru/vtosters/lite/hooks/PollHook.java | 5 +- .../ru/vtosters/lite/hooks/PostViewHook.java | 3 - .../ru/vtosters/lite/hooks/ReplyMsgHook.java | 4 +- .../ru/vtosters/lite/hooks/RequestDumper.java | 5 +- .../lite/hooks/StartFragmentHook.java | 10 +- .../ru/vtosters/lite/hooks/SwitchHook.java | 14 +- .../ru/vtosters/lite/hooks/TogglesHook.java | 9 +- .../ru/vtosters/lite/hooks/WritebarHook.java | 5 +- .../lite/hooks/ui/SystemThemeChangerHook.java | 6 - .../java/ru/vtosters/lite/music/Genius.java | 4 +- .../vtosters/lite/music/LastFMScrobbler.java | 26 ++-- .../ru/vtosters/lite/music/M3UDownloader.java | 29 ++-- .../music/cache/CacheDatabaseDelegate.java | 20 +-- .../music/cache/FileCacheImplementation.java | 6 +- .../music/cache/helpers/PlaylistHelper.java | 10 +- .../music/cache/helpers/TracklistHelper.java | 9 +- .../cache/injectors/PlaylistInjector.java | 17 +-- .../cache/injectors/TracklistInjector.java | 26 ++-- .../music/callback/MusicCallbackBuilder.java | 3 - .../converter/playlist/PlaylistConverter.java | 18 +-- .../lite/music/converter/ts/FFMpeg.java | 6 +- .../lite/music/converter/ts/TSMerger.java | 3 +- .../lite/music/downloader/AudioGet.java | 21 ++- .../music/downloader/PlaylistDownloader.java | 4 +- .../music/downloader/ThumbnailDownloader.java | 7 +- .../music/downloader/TrackDownloader.java | 8 +- .../music/hook/MusicArtistSelectorHook.java | 1 - .../lite/music/hook/MusicBottomSheetHook.java | 32 ++-- .../music/interfaces/ITrackDownloader.java | 3 +- .../MusicNotificationBuilder.java | 3 - .../java/ru/vtosters/lite/net/NetCall.java | 8 +- .../ru/vtosters/lite/net/NetResponse.java | 4 +- .../java/ru/vtosters/lite/net/Request.java | 5 +- .../ru/vtosters/lite/proxy/GithubList.java | 7 +- .../ru/vtosters/lite/proxy/ProxyUtils.java | 20 +-- .../ru/vtosters/lite/proxy/api/ApiProxy.java | 4 +- .../ru/vtosters/lite/proxy/http/Jetkai.java | 14 +- .../vtosters/lite/proxy/http/TheSpeedX.java | 14 +- .../ru/vtosters/lite/proxy/https/Jetkai.java | 14 +- .../vtosters/lite/proxy/https/Roosterkid.java | 14 +- .../ru/vtosters/lite/proxy/socks/Hookzof.java | 14 +- .../ru/vtosters/lite/proxy/socks/Jetkai.java | 14 +- .../vtosters/lite/proxy/socks/Roosterkid.java | 14 +- .../vtosters/lite/proxy/socks/TheSpeedX.java | 14 +- .../lite/services/LogWriterService.java | 11 +- .../java/ru/vtosters/lite/ssfs/ImBanner.java | 2 +- .../java/ru/vtosters/lite/tgs/TGPref.java | 4 +- .../ru/vtosters/lite/themes/ThemesCore.java | 3 +- .../ru/vtosters/lite/themes/ThemesHacks.java | 3 +- .../vtosters/lite/themes/ThemesManager.java | 34 ++--- .../ru/vtosters/lite/themes/ViewInjector.java | 12 +- .../lite/themes/hooks/ButtonHook.java | 1 - .../lite/themes/hooks/ImageViewHook.java | 1 - .../lite/themes/hooks/ProgressWheelHook.java | 2 - .../lite/themes/hooks/TabLayoutHook.java | 2 - .../lite/themes/hooks/TextViewHook.java | 44 +++--- .../lite/themes/hooks/VKImageViewHook.java | 5 +- .../lite/themes/utils/RecolorUtils.java | 1 - .../lite/themes/utils/VkUiThemer.java | 7 +- .../lite/translators/BaseTranslator.java | 6 +- .../lite/translators/DeepLTranslator.java | 15 +- .../lite/translators/GoogleTranslator.java | 9 +- .../lite/translators/YandexTranslator.java | 11 +- .../lite/ui/PreferenceFragmentUtils.java | 26 ++-- .../ui/activities/APKInstallActivity.java | 2 - .../ui/activities/VKAdminTokenActivity.java | 6 +- .../lite/ui/adapters/CategorizedAdapter.java | 68 +++++---- .../lite/ui/adapters/ColorPickerAdapter.java | 31 ++-- .../lite/ui/adapters/ImagineArrayAdapter.java | 11 +- .../ui/adapters/MessagesPreviewAdapter.java | 8 - .../lite/ui/components/BackupManager.java | 28 ++-- .../lite/ui/components/CrashReporter.java | 17 +-- .../ui/components/DockBarEditorManager.java | 25 ++-- .../lite/ui/components/IconManager.java | 3 +- .../ui/components/ItemMovingCallback.java | 1 - .../ui/components/NewsfeedListManager.java | 15 +- .../lite/ui/dialogs/DisableBattery.java | 4 +- .../lite/ui/dialogs/MessageSettings.java | 9 +- .../vtosters/lite/ui/dialogs/OTADialog.java | 19 +-- .../ui/dialogs/PalettesBottomSheetDialog.java | 1 - .../ui/dialogs/RoundingSeekbarDialog.java | 9 +- .../lite/ui/dialogs/ServerDialog.java | 31 ++-- .../vtosters/lite/ui/dialogs/Translate.java | 10 +- .../lite/ui/dialogs/VKIDProtection.java | 11 +- .../VTColorPickerBottomSheetDialog.java | 2 - .../lite/ui/fragments/ActivityFragment.java | 6 +- .../ui/fragments/BaseToolbarFragment.java | 4 - .../ui/fragments/DockBarEditorFragment.java | 9 +- .../lite/ui/fragments/FeedFragment.java | 11 +- .../lite/ui/fragments/IconsFragment.java | 3 - .../lite/ui/fragments/InstallGMSFragment.java | 1 - .../lite/ui/fragments/MediaFragment.java | 77 ++++------ .../lite/ui/fragments/MessagesFragment.java | 5 +- .../lite/ui/fragments/OtherFragment.java | 4 +- .../ui/fragments/ProxySettingsFragment.java | 7 +- .../ui/fragments/SuperAppEditorFragment.java | 29 ++-- .../lite/ui/fragments/SystemInfo.java | 54 ++++--- .../lite/ui/fragments/ThemesFragment.java | 2 +- ...ckedMaterialPreferenceToolbarFragment.java | 2 - .../lite/ui/fragments/VKUIwrapper.java | 1 - .../lite/ui/fragments/VTSettings.java | 14 +- .../tgstickers/StickersFragment.java | 9 +- .../StickersPreferencesFragment.java | 8 +- .../lite/ui/views/rarepebble/AlphaView.java | 8 +- .../ui/views/rarepebble/ColorPickerView.java | 46 +++--- .../lite/ui/views/rarepebble/HexEdit.java | 16 +- .../lite/ui/views/rarepebble/HueSatView.java | 140 ++++++++---------- .../ui/views/rarepebble/ObservableColor.java | 6 +- .../lite/ui/views/rarepebble/Resources.java | 16 +- .../ui/views/rarepebble/SliderViewBase.java | 17 +-- .../lite/ui/views/rarepebble/SquareView.java | 10 +- .../lite/ui/views/rarepebble/SwatchView.java | 55 ++++--- .../lite/ui/views/rarepebble/ValueView.java | 2 +- .../ru/vtosters/lite/ui/vkui/MenuBuilder.java | 39 +++-- .../lite/ui/vkui/ModalBottomSheetWrapper.java | 1 - .../vtosters/lite/ui/vkui/VBListBuilder.java | 6 +- .../lite/ui/vkui/VBottomSheetBuilder.java | 1 - .../lite/ui/wallpapers/ImageEffect.java | 26 ++-- .../lite/ui/wallpapers/ImageFilters.java | 1 - .../ui/wallpapers/WallpaperMenuFragment.java | 27 ++-- .../ui/wallpapers/WallpaperPreferences.java | 8 +- .../lite/ui/wallpapers/WallpapersHooks.java | 28 ++-- .../java/ru/vtosters/lite/utils/About.java | 9 +- .../vtosters/lite/utils/AnalyticsHelper.java | 8 +- .../ru/vtosters/lite/utils/AndroidUtils.java | 5 +- .../ru/vtosters/lite/utils/CacheUtils.java | 11 +- .../lite/utils/DeletedMessagesHandler.java | 14 +- .../lite/utils/ExternalLinkParser.java | 10 +- .../java/ru/vtosters/lite/utils/GmsUtils.java | 1 + .../java/ru/vtosters/lite/utils/IOUtils.java | 43 +++--- .../ru/vtosters/lite/utils/ImageUtils.java | 5 +- .../vtosters/lite/utils/LifecycleUtils.java | 3 - .../vtosters/lite/utils/NavigatorUtils.java | 6 +- .../ru/vtosters/lite/utils/NetworkUtils.java | 41 ----- .../lite/utils/NewsFeedFiltersUtils.java | 17 +-- .../java/ru/vtosters/lite/utils/OTAUtils.java | 10 +- .../ru/vtosters/lite/utils/Preferences.java | 31 ++-- .../vtosters/lite/utils/ReflectionUtils.java | 37 ++--- .../ru/vtosters/lite/utils/RenameTool.java | 15 +- .../vtosters/lite/utils/SignatureChecker.java | 10 +- .../ru/vtosters/lite/utils/ThemesUtils.java | 12 +- .../ru/vtosters/lite/utils/VKAccountDB.java | 2 +- .../vtosters/lite/utils/VTVerifications.java | 19 +-- .../ru/vtosters/lite/utils/WebAppUtils.java | 19 +-- 184 files changed, 977 insertions(+), 1480 deletions(-) diff --git a/app/src/main/java/ru/vtosters/lite/concurrent/VTExecutors.java b/app/src/main/java/ru/vtosters/lite/concurrent/VTExecutors.java index 60d4b58e8..2c34f81e3 100644 --- a/app/src/main/java/ru/vtosters/lite/concurrent/VTExecutors.java +++ b/app/src/main/java/ru/vtosters/lite/concurrent/VTExecutors.java @@ -1,12 +1,11 @@ package ru.vtosters.lite.concurrent; import com.vk.core.concurrent.VkExecutors; +import io.reactivex.Scheduler; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import io.reactivex.Scheduler; - public class VTExecutors { public static ExecutorService getMusicDownloadExecutor() { return VTMusicDownloadExecutor.getInstance(); diff --git a/app/src/main/java/ru/vtosters/lite/deviceinfo/Device.java b/app/src/main/java/ru/vtosters/lite/deviceinfo/Device.java index b6e74629c..61a849862 100644 --- a/app/src/main/java/ru/vtosters/lite/deviceinfo/Device.java +++ b/app/src/main/java/ru/vtosters/lite/deviceinfo/Device.java @@ -3,10 +3,7 @@ package ru.vtosters.lite.deviceinfo; import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.ThemesUtils; -import static ru.vtosters.lite.deviceinfo.OEMDetector.hasMiuiIncrCode; -import static ru.vtosters.lite.deviceinfo.OEMDetector.isEMUI; -import static ru.vtosters.lite.deviceinfo.OEMDetector.isMIUI; -import static ru.vtosters.lite.deviceinfo.OEMDetector.isSamsung; +import static ru.vtosters.lite.deviceinfo.OEMDetector.*; import static ru.vtosters.lite.utils.About.getBuildNumber; public class Device { diff --git a/app/src/main/java/ru/vtosters/lite/deviceinfo/DeviceInfoCollector.java b/app/src/main/java/ru/vtosters/lite/deviceinfo/DeviceInfoCollector.java index 2ec7bfcfd..62938ff75 100644 --- a/app/src/main/java/ru/vtosters/lite/deviceinfo/DeviceInfoCollector.java +++ b/app/src/main/java/ru/vtosters/lite/deviceinfo/DeviceInfoCollector.java @@ -1,14 +1,9 @@ package ru.vtosters.lite.deviceinfo; -import static ru.vtosters.lite.deviceinfo.OEMDetector.getEmuiVersionCode; -import static ru.vtosters.lite.deviceinfo.OEMDetector.getMiuiUiVersionCode; -import static ru.vtosters.lite.deviceinfo.OEMDetector.getMiuiUiVersionIncrementalCode; -import static ru.vtosters.lite.deviceinfo.OEMDetector.getMiuiUiVersionName; -import static ru.vtosters.lite.deviceinfo.OEMDetector.getOneUiMajorVersion; -import static ru.vtosters.lite.deviceinfo.OEMDetector.getOneUiMinorVersion; - import android.os.Build; +import static ru.vtosters.lite.deviceinfo.OEMDetector.*; + public class DeviceInfoCollector { public Device collect() { diff --git a/app/src/main/java/ru/vtosters/lite/deviceinfo/OEMDetector.java b/app/src/main/java/ru/vtosters/lite/deviceinfo/OEMDetector.java index 21e85269f..6996248da 100644 --- a/app/src/main/java/ru/vtosters/lite/deviceinfo/OEMDetector.java +++ b/app/src/main/java/ru/vtosters/lite/deviceinfo/OEMDetector.java @@ -1,18 +1,17 @@ package ru.vtosters.lite.deviceinfo; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; - import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Build; import android.text.TextUtils; +import ru.vtosters.lite.utils.ReflectionUtils; import java.lang.reflect.Field; import java.lang.reflect.Method; -import ru.vtosters.lite.utils.ReflectionUtils; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; public class OEMDetector { private static Field semPlatformIntField; diff --git a/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java b/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java index 55ef2368a..b3669348d 100644 --- a/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java +++ b/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java @@ -24,7 +24,9 @@ import ru.vtosters.lite.downloaders.messages.MessagesDownloader; import ru.vtosters.lite.encryption.EncryptProvider; import ru.vtosters.lite.encryption.base.IMProcessor; import ru.vtosters.lite.hooks.CryptImHook; +import ru.vtosters.lite.proxy.ProxyUtils; import ru.vtosters.lite.ui.dialogs.Translate; +import ru.vtosters.lite.utils.AccountManagerUtils; import ru.vtosters.lite.utils.AndroidUtils; import java.io.File; @@ -33,13 +35,6 @@ import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; -import static ru.vtosters.lite.dnr.DNRModule.*; -import static ru.vtosters.lite.encryption.EncryptProvider.decryptMessage; -import static ru.vtosters.lite.proxy.ProxyUtils.getApi; -import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; -import static ru.vtosters.lite.utils.AndroidUtils.isTablet; -import static ru.vtosters.lite.utils.AndroidUtils.sendToast; - public class DNRInjector { public static void inject(Dialog dialog, List list) { int peerId = 0; @@ -61,13 +56,13 @@ public class DNRInjector { list.add(DialogAction.pinmsg); list.add(DialogAction.unpinmsg); - if (isDnrEnabledFor(peerId)) { + if (DNRModule.isDnrEnabledFor(peerId)) { list.add(DialogAction.DNR_OFF); } else { list.add(DialogAction.DNR_ON); } - if (isDntEnabledFor(peerId)) { + if (DNRModule.isDntEnabledFor(peerId)) { list.add(DialogAction.DNT_OFF); } else { list.add(DialogAction.DNT_ON); @@ -110,7 +105,7 @@ public class DNRInjector { list.add(new DialogActionsListView.b.a(DialogAction.DNT_ON, 2, R.attr.im_ic_edit_msg, R.string.DNT_ON)); // DialogAction, Int, Icon, String list.add(new DialogActionsListView.b.a(DialogAction.DNT_OFF, 2, R.attr.im_ic_edit_msg, R.string.DNT_OFF)); // DialogAction, Int, Icon, String - if (!isTablet()) { + if (!AndroidUtils.isTablet()) { list.add(new DialogActionsListView.b.a(DialogAction.ENCRYPT, 3, R.attr.im_ic_keyboard, R.string.encryption)); // DialogAction, Int, Icon, String list.add(new DialogActionsListView.b.a(DialogAction.ENCRYPT_SETT, 3, R.attr.im_ic_more_vertical, R.string.encryption_sett)); // DialogAction, Int, Icon, String } @@ -145,13 +140,13 @@ public class DNRInjector { actions.add(DialogAction.DOWNLOAD); - if (isDnrEnabledFor(peerId)) { + if (DNRModule.isDnrEnabledFor(peerId)) { actions.add(DialogAction.DNR_OFF); } else { actions.add(DialogAction.DNR_ON); } - if (isDntEnabledFor(peerId)) { + if (DNRModule.isDntEnabledFor(peerId)) { actions.add(DialogAction.DNT_OFF); } else { actions.add(DialogAction.DNT_ON); @@ -197,7 +192,7 @@ public class DNRInjector { try { new MessagesDownloader().downloadDialog(peerId, new HtmlDialogDownloaderFormatProvider(), out); } catch (Exception e) { - sendToast(AndroidUtils.getString(R.string.download_dl_error)); + AndroidUtils.sendToast(AndroidUtils.getString(R.string.download_dl_error)); e.printStackTrace(); } return true; @@ -321,14 +316,14 @@ public class DNRInjector { var isTextExist = !text.isEmpty() && !text.equals(" "); if (isTextExist) { - text = decryptMessage(text, peerId); + text = EncryptProvider.decryptMessage(text, peerId); } if (action == MsgAction.valueOf("TRANSLATE")) { if (isTextExist) { Translate.showTranslatedText(context, text); } else { - sendToast(context.getString(R.string.translator_no_text)); + AndroidUtils.sendToast(context.getString(R.string.translator_no_text)); } } } @@ -340,7 +335,7 @@ public class DNRInjector { Thread thread = new Thread(() -> { try { var request = new Request.a() - .b("https://" + getApi() + "/method/" + (needToBePinned ? "messages.pinConversation" : "messages.unpinConversation") + "?peer_id=" + dialogid + "&access_token=" + getUserToken() + "&v=5.119") + .b("https://" + ProxyUtils.getApi() + "/method/" + (needToBePinned ? "messages.pinConversation" : "messages.unpinConversation") + "?peer_id=" + dialogid + "&access_token=" + AccountManagerUtils.getUserToken() + "&v=5.119") .a(Headers.a("User-Agent", Network.l.c().a(), "Content-Type", "application/x-www-form-urlencoded; charset=utf-8")) .a(); @@ -357,7 +352,7 @@ public class DNRInjector { thread.start(); - sendToast(AndroidUtils.getString(R.string.pin_dialog) + " " + AndroidUtils.getString(needToBePinned ? R.string.dialog_pinned : R.string.dialog_unpinned)); + AndroidUtils.sendToast(AndroidUtils.getString(R.string.pin_dialog) + " " + AndroidUtils.getString(needToBePinned ? R.string.dialog_pinned : R.string.dialog_unpinned)); } public static void setDnr(Dialog dialog, boolean value) { @@ -367,7 +362,7 @@ public class DNRInjector { peerId = dialog.getId(); } - hookDNR(peerId); + DNRModule.hookDNR(peerId); } public static void setDnt(Dialog dialog, boolean value) { @@ -377,7 +372,7 @@ public class DNRInjector { peerId = dialog.getId(); } - hookDNT(peerId); + DNRModule.hookDNT(peerId); } } diff --git a/app/src/main/java/ru/vtosters/lite/dnr/DNRModule.java b/app/src/main/java/ru/vtosters/lite/dnr/DNRModule.java index 875cd92da..602e2c9a9 100644 --- a/app/src/main/java/ru/vtosters/lite/dnr/DNRModule.java +++ b/app/src/main/java/ru/vtosters/lite/dnr/DNRModule.java @@ -1,35 +1,21 @@ package ru.vtosters.lite.dnr; -import static ru.vtosters.lite.net.Request.makeRequest; -import static ru.vtosters.lite.proxy.ProxyUtils.getApi; -import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; - -import android.content.Intent; -import android.net.Uri; -import android.os.MessageQueue; import android.util.Log; - import com.vk.core.util.LangUtils; import com.vk.im.engine.commands.messages.SetUserActivityCmd; import com.vk.im.engine.models.dialogs.Dialog; import com.vk.im.engine.models.messages.Msg; - -import java.util.List; - -import com.vk.im.ui.fragments.ChatFragment; -import com.vk.navigation.Navigator; -import com.vk.webapp.VkUiFragment; -import com.vtosters.lite.general.fragments.WebViewFragment; import ru.vtosters.lite.dnr.helpers.DoNotReadDBHelper; import ru.vtosters.lite.dnr.helpers.DoNotTypeDBHelper; -import ru.vtosters.lite.ssfs.Utils; -import ru.vtosters.lite.ui.fragments.VKUIwrapper; -import ru.vtosters.lite.ui.fragments.VTSettings; +import ru.vtosters.lite.net.Request; +import ru.vtosters.lite.proxy.ProxyUtils; import ru.vtosters.lite.utils.AccountManagerUtils; import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.LifecycleUtils; import ru.vtosters.lite.utils.ThemesUtils; +import java.util.List; + public class DNRModule { public static DoNotReadDBHelper mDoNotReadDBHelper = new DoNotReadDBHelper(); public static DoNotTypeDBHelper mDoNotTypeDBHelper = new DoNotTypeDBHelper(); @@ -68,13 +54,13 @@ public class DNRModule { } public static void hookRead(Dialog dialog) { - makeRequest("https://" + getApi() + "/method/messages.markAsRead?start_message_id=" + dialog.F1() + "&peer_id=" + dialog.getId() + "&v=5.119&access_token=" + getUserToken(), response -> { + Request.makeRequest("https://" + ProxyUtils.getApi() + "/method/messages.markAsRead?start_message_id=" + dialog.F1() + "&peer_id=" + dialog.getId() + "&v=5.119&access_token=" + AccountManagerUtils.getUserToken(), response -> { }); } public static void hookReadStartMsgTo(Msg dialog) { Log.d("DNR", "hookReadStartMsgTo: " + dialog.C1() + " " + dialog.v1()); - makeRequest("https://" + getApi() + "/method/messages.markAsRead?start_message_id=" + dialog.C1() + "&peer_id=" + dialog.v1() + "&v=5.119&access_token=" + getUserToken(), response -> { + Request.makeRequest("https://" + ProxyUtils.getApi() + "/method/messages.markAsRead?start_message_id=" + dialog.C1() + "&peer_id=" + dialog.v1() + "&v=5.119&access_token=" + AccountManagerUtils.getUserToken(), response -> { }); } diff --git a/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotReadDBHelper.java b/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotReadDBHelper.java index 3cc391d21..7837b47fe 100644 --- a/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotReadDBHelper.java +++ b/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotReadDBHelper.java @@ -1,16 +1,15 @@ package ru.vtosters.lite.dnr.helpers; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; - import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; +import ru.vtosters.lite.dnr.DNRPrefs; import java.util.ArrayList; import java.util.List; -import ru.vtosters.lite.dnr.DNRPrefs; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; public class DoNotReadDBHelper extends SQLiteOpenHelper { public DoNotReadDBHelper() { diff --git a/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotTypeDBHelper.java b/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotTypeDBHelper.java index f448b79ee..653019d83 100644 --- a/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotTypeDBHelper.java +++ b/app/src/main/java/ru/vtosters/lite/dnr/helpers/DoNotTypeDBHelper.java @@ -1,20 +1,18 @@ package ru.vtosters.lite.dnr.helpers; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; - import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; +import ru.vtosters.lite.dnr.DNRPrefs; +import ru.vtosters.lite.utils.AndroidUtils; import java.util.ArrayList; import java.util.List; -import ru.vtosters.lite.dnr.DNRPrefs; - public class DoNotTypeDBHelper extends SQLiteOpenHelper { public DoNotTypeDBHelper() { - super(getGlobalContext(), "dnt", null, 1); + super(AndroidUtils.getGlobalContext(), "dnt", null, 1); } @Override diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java index ca8b93ecd..2f07c5186 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java @@ -1,19 +1,11 @@ package ru.vtosters.lite.downloaders; -import static ru.vtosters.lite.utils.AndroidUtils.getString; - import android.os.Environment; - +import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; import com.vk.core.util.ToastUtils; import com.vk.dto.music.MusicTrack; import com.vk.dto.music.Playlist; import com.vtosters.lite.R; - -import java.io.File; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; import ru.vtosters.lite.music.cache.FileCacheImplementation; import ru.vtosters.lite.music.callback.MusicCallbackBuilder; @@ -26,6 +18,12 @@ import ru.vtosters.lite.utils.AccountManagerUtils; import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.IOUtils; +import java.io.File; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +import static ru.vtosters.lite.utils.AndroidUtils.getString; + /** * Entrypoint for downloading audio *

diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/OTADownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/OTADownloader.java index c90c64d3d..b8e84f485 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/OTADownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/OTADownloader.java @@ -8,17 +8,14 @@ import android.content.Intent; import android.content.IntentFilter; import android.net.Uri; import android.os.Environment; - import androidx.core.content.FileProvider; - import com.vk.core.dialogs.alert.VkAlertDialog; import com.vtosters.lite.R; - -import java.io.File; - import ru.vtosters.lite.ui.activities.APKInstallActivity; import ru.vtosters.lite.utils.AndroidUtils; +import java.io.File; + public class OTADownloader { private static final BroadcastReceiver callback = new BroadcastReceiver() { diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/StoryDownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/StoryDownloader.java index dacb2f4b6..c427abf8c 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/StoryDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/StoryDownloader.java @@ -1,27 +1,23 @@ package ru.vtosters.lite.downloaders; -import static ru.vtosters.lite.downloaders.VideoDownloader.downloadVideo; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; - import android.app.DownloadManager; import android.content.Context; import android.net.Uri; import android.os.Environment; -import android.util.Log; - import com.vk.dto.common.ImageSize; import com.vk.dto.stories.model.StoryEntry; -import org.json.JSONArray; - import java.util.List; +import static ru.vtosters.lite.downloaders.VideoDownloader.downloadVideo; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; + public class StoryDownloader { public static Runnable injectButton(StoryEntry story) { return () -> downloadStory(story); } - public static void downloadStory(StoryEntry story){ + public static void downloadStory(StoryEntry story) { if (story.T1()) { List imageSizes = story.E.Q.t1(); String url = imageSizes.get(imageSizes.size() - 1).url; diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java index bf1045e4d..d954c20ba 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java @@ -79,12 +79,12 @@ public class VideoDownloader { qualities.add("720p"); urls.add(videoFile.h); } - + if (!TextUtils.isEmpty(videoFile.g)) { qualities.add("480p"); urls.add(videoFile.g); } - + if (!TextUtils.isEmpty(videoFile.f)) { qualities.add("360p"); urls.add(videoFile.f); @@ -105,12 +105,12 @@ public class VideoDownloader { finalContext, android.R.layout.simple_list_item_1, qualities.toArray(new String[0])) { - @Override - public View getView(int position, View convertView, ViewGroup parent) { - TextView textView = (TextView) super.getView(position, convertView, parent); - textView.setTextColor(getTextAttr()); - return textView; - } + @Override + public View getView(int position, View convertView, ViewGroup parent) { + TextView textView = (TextView) super.getView(position, convertView, parent); + textView.setTextColor(getTextAttr()); + return textView; + } }; new VkAlertDialog.Builder(finalContext) diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/messages/Constants.java b/app/src/main/java/ru/vtosters/lite/downloaders/messages/Constants.java index 354363f1b..4928e34c6 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/messages/Constants.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/messages/Constants.java @@ -90,7 +90,6 @@ public class Constants { "}\n" + ".vtex-milk-msg.poll p { color: white; }\n" + ".vtex-milk-msg.poll hr { border-top: 1px; background: #ffffff; }\n" + - "\n" + - ""; + "\n"; } diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/messages/HtmlDialogDownloaderFormatProvider.java b/app/src/main/java/ru/vtosters/lite/downloaders/messages/HtmlDialogDownloaderFormatProvider.java index 8b19a69da..4b28b705d 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/messages/HtmlDialogDownloaderFormatProvider.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/messages/HtmlDialogDownloaderFormatProvider.java @@ -39,6 +39,7 @@ public class HtmlDialogDownloaderFormatProvider extends DialogDownloaderFormatPr + AndroidUtils.getString(R.string.chat_export_header) + " (" + date + ")

"; } + @Override public String provideMessage(MiniMsg message, MiniUser user) throws JSONException { String isOut = (user.id == getUserId()) ? " vtex-milk-msg-out" : ""; @@ -64,8 +65,8 @@ public class HtmlDialogDownloaderFormatProvider extends DialogDownloaderFormatPr return "
" + "

" + AndroidUtils.getString(R.string.from_lower) - + " " + user.firstName + " " + user.lastName - + " " + MessagesDownloader.formatTime(message.date) + "

" + // TODO photo100 + + " " + user.firstName + " " + user.lastName + + " " + MessagesDownloader.formatTime(message.date) + "

" + // TODO photo100 "

" + mentionsReplace(message.text) + "

" + geoPosition + chatAction + diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/messages/MessagesDownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/messages/MessagesDownloader.java index ceb016f9d..39b192e8b 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/messages/MessagesDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/messages/MessagesDownloader.java @@ -30,7 +30,7 @@ import java.util.Iterator; import java.util.List; public class MessagesDownloader { - private static final int[] VIDEO_QUALITIES = { 144, 240, 360, 480, 720, 1080, 1440, 2160 }; + private static final int[] VIDEO_QUALITIES = {144, 240, 360, 480, 720, 1080, 1440, 2160}; private static final SimpleDateFormat SDFORMAT = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss", AndroidUtils.getResources().getConfiguration().locale); @@ -111,7 +111,7 @@ public class MessagesDownloader { VtOkHttpClient.getInstance().a(req).a(new Callback() { @Override public void a(Call call, IOException e) { - Log.d("MessagesDownloader", e+""); + Log.d("MessagesDownloader", String.valueOf(e)); } @Override diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/messages/items/MiniMsg.java b/app/src/main/java/ru/vtosters/lite/downloaders/messages/items/MiniMsg.java index 9a2684089..659569dc5 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/messages/items/MiniMsg.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/messages/items/MiniMsg.java @@ -8,6 +8,7 @@ import java.util.ArrayList; import java.util.List; import static ru.vtosters.lite.encryption.EncryptProvider.decryptMessage; + public class MiniMsg { public long date; public int fromId; diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/notifications/NotificationChannels.java b/app/src/main/java/ru/vtosters/lite/downloaders/notifications/NotificationChannels.java index 1641fc5b5..36bd5d397 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/notifications/NotificationChannels.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/notifications/NotificationChannels.java @@ -4,12 +4,9 @@ import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; import android.os.Build; - import androidx.annotation.RequiresApi; import androidx.core.app.NotificationManagerCompat; - import com.vtosters.lite.R; - import ru.vtosters.lite.utils.AndroidUtils; public class NotificationChannels { diff --git a/app/src/main/java/ru/vtosters/lite/encryption/EncryptProvider.java b/app/src/main/java/ru/vtosters/lite/encryption/EncryptProvider.java index 6cb08a35d..431958c27 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/EncryptProvider.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/EncryptProvider.java @@ -1,27 +1,20 @@ package ru.vtosters.lite.encryption; -import static ru.vtosters.lite.hooks.MessagesHook.injectOwnText; -import static ru.vtosters.lite.hooks.MessagesHook.injectOwnTextAll; - import android.util.Log; import android.util.Pair; - import com.vk.im.engine.models.messages.Msg; import com.vk.im.engine.models.messages.MsgFromUser; import com.vk.im.ui.components.msg_list.MsgListComponent; +import ru.vtosters.lite.encryption.base.IMProcessor; +import ru.vtosters.lite.encryption.processors.*; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.List; -import ru.vtosters.lite.encryption.base.IMProcessor; -import ru.vtosters.lite.encryption.processors.BeeCryptProcessor; -import ru.vtosters.lite.encryption.processors.DefaultCoffeeProcessor; -import ru.vtosters.lite.encryption.processors.DonateCoffeeProcessor; -import ru.vtosters.lite.encryption.processors.MP3InvisibleProcessor; -import ru.vtosters.lite.encryption.processors.VTostersAESProcessor; -import ru.vtosters.lite.encryption.processors.VTostersProcessor; +import static ru.vtosters.lite.hooks.MessagesHook.injectOwnText; +import static ru.vtosters.lite.hooks.MessagesHook.injectOwnTextAll; public class EncryptProvider { public static List processors = new ArrayList<>(); diff --git a/app/src/main/java/ru/vtosters/lite/encryption/base/IMProcessor.java b/app/src/main/java/ru/vtosters/lite/encryption/base/IMProcessor.java index 39b81e5df..afc3d5307 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/base/IMProcessor.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/base/IMProcessor.java @@ -1,12 +1,11 @@ package ru.vtosters.lite.encryption.base; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; - import ru.vtosters.lite.utils.Preferences; +import static ru.vtosters.lite.utils.Preferences.getBoolValue; + public abstract class IMProcessor { // By default it checks start and end tag. public boolean isEncrypted(String source) { diff --git a/app/src/main/java/ru/vtosters/lite/encryption/processors/BeeCryptProcessor.java b/app/src/main/java/ru/vtosters/lite/encryption/processors/BeeCryptProcessor.java index 379e6b007..85e22b4e7 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/processors/BeeCryptProcessor.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/processors/BeeCryptProcessor.java @@ -1,14 +1,12 @@ package ru.vtosters.lite.encryption.processors; import android.util.Base64; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import ru.vtosters.lite.encryption.base.IMProcessor; import java.nio.charset.StandardCharsets; -import ru.vtosters.lite.encryption.base.IMProcessor; - public class BeeCryptProcessor extends IMProcessor { private static final String BC_CHARSET = "жъЖЪ"; diff --git a/app/src/main/java/ru/vtosters/lite/encryption/processors/DefaultCoffeeProcessor.java b/app/src/main/java/ru/vtosters/lite/encryption/processors/DefaultCoffeeProcessor.java index 05eb716cd..7bee13328 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/processors/DefaultCoffeeProcessor.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/processors/DefaultCoffeeProcessor.java @@ -1,15 +1,13 @@ package ru.vtosters.lite.encryption.processors; import android.util.Base64; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import ru.vtosters.lite.encryption.base.IMProcessor; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; -import ru.vtosters.lite.encryption.base.IMProcessor; - public class DefaultCoffeeProcessor extends IMProcessor { private final static String KEY = "stupidUsersMustD"; private static Cipher dCipher, eCipher; diff --git a/app/src/main/java/ru/vtosters/lite/encryption/processors/MP3InvisibleProcessor.java b/app/src/main/java/ru/vtosters/lite/encryption/processors/MP3InvisibleProcessor.java index 0528cb2ed..1336c93fc 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/processors/MP3InvisibleProcessor.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/processors/MP3InvisibleProcessor.java @@ -1,14 +1,12 @@ package ru.vtosters.lite.encryption.processors; import android.text.TextUtils; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import ru.vtosters.lite.encryption.base.IMProcessor; import java.nio.charset.StandardCharsets; -import ru.vtosters.lite.encryption.base.IMProcessor; - public class MP3InvisibleProcessor extends IMProcessor { private static String toStr(int a, String cc) { StringBuilder s = new StringBuilder(); diff --git a/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersAESProcessor.java b/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersAESProcessor.java index 2d47494c1..6b9fef555 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersAESProcessor.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersAESProcessor.java @@ -1,24 +1,20 @@ package ru.vtosters.lite.encryption.processors; import android.util.Base64; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; - -import java.nio.charset.StandardCharsets; -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.NoSuchAlgorithmException; -import java.util.HashMap; +import ru.vtosters.lite.encryption.base.IMProcessor; +import ru.vtosters.lite.utils.Preferences; import javax.crypto.Cipher; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; - -import ru.vtosters.lite.encryption.base.IMProcessor; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.Preferences; +import java.nio.charset.StandardCharsets; +import java.security.InvalidAlgorithmParameterException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.util.HashMap; public class VTostersAESProcessor extends IMProcessor { private final static String CIPHER_INSTANCE = "AES/CBC/PKCS7Padding"; diff --git a/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersProcessor.java b/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersProcessor.java index c4dcf1fb2..551e3b5f3 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersProcessor.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/processors/VTostersProcessor.java @@ -1,10 +1,8 @@ package ru.vtosters.lite.encryption.processors; import android.util.Base64; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; - import ru.vtosters.lite.encryption.base.IMProcessor; public class VTostersProcessor extends IMProcessor { diff --git a/app/src/main/java/ru/vtosters/lite/foaf/FoafBase.java b/app/src/main/java/ru/vtosters/lite/foaf/FoafBase.java index f316842b3..e09cc3469 100644 --- a/app/src/main/java/ru/vtosters/lite/foaf/FoafBase.java +++ b/app/src/main/java/ru/vtosters/lite/foaf/FoafBase.java @@ -1,22 +1,19 @@ package ru.vtosters.lite.foaf; -import static android.widget.Toast.LENGTH_SHORT; -import static android.widget.Toast.makeText; -import static ru.vtosters.lite.proxy.ProxyUtils.getApi; -import static ru.vtosters.lite.proxy.ProxyUtils.isAnyProxyEnabled; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; - import android.annotation.SuppressLint; import android.app.ProgressDialog; import android.content.Context; import android.util.Log; - import com.vk.core.dialogs.alert.VkAlertDialog; import com.vk.core.network.Network; import com.vtosters.lite.R; - +import okhttp3.Headers; +import okhttp3.OkHttpClient; import org.json.JSONException; import org.json.JSONObject; +import ru.vtosters.lite.di.singleton.VtOkHttpClient; +import ru.vtosters.lite.net.Request; +import ru.vtosters.lite.utils.LifecycleUtils; import java.io.IOException; import java.text.ParseException; @@ -29,11 +26,11 @@ import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; -import okhttp3.Headers; -import okhttp3.OkHttpClient; -import ru.vtosters.lite.di.singleton.VtOkHttpClient; -import ru.vtosters.lite.net.Request; -import ru.vtosters.lite.utils.LifecycleUtils; +import static android.widget.Toast.LENGTH_SHORT; +import static android.widget.Toast.makeText; +import static ru.vtosters.lite.proxy.ProxyUtils.getApi; +import static ru.vtosters.lite.proxy.ProxyUtils.isAnyProxyEnabled; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; public class FoafBase { private static final Pattern FOAF_REGEX = Pattern.compile(" { dialog.cancel(); diff --git a/app/src/main/java/ru/vtosters/lite/hooks/MessagesHook.java b/app/src/main/java/ru/vtosters/lite/hooks/MessagesHook.java index f1219dcde..9fd923a10 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/MessagesHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/MessagesHook.java @@ -1,23 +1,19 @@ package ru.vtosters.lite.hooks; -import static ru.vtosters.lite.ui.dialogs.MessageSettings.bombCount; -import static ru.vtosters.lite.ui.dialogs.MessageSettings.isSilentEnabled; -import static ru.vtosters.lite.utils.Preferences.autoalltranslate; -import static ru.vtosters.lite.utils.Preferences.autotranslate; -import static ru.vtosters.lite.utils.Preferences.savemsgsett; - import android.content.Context; import android.text.TextUtils; import android.view.View; - import com.vk.api.internal.MethodCall; +import ru.vtosters.lite.translators.BaseTranslator; +import ru.vtosters.lite.ui.dialogs.MessageSettings; +import ru.vtosters.lite.utils.LifecycleUtils; import java.util.ArrayList; import java.util.regex.Pattern; -import ru.vtosters.lite.translators.BaseTranslator; -import ru.vtosters.lite.ui.dialogs.MessageSettings; -import ru.vtosters.lite.utils.LifecycleUtils; +import static ru.vtosters.lite.ui.dialogs.MessageSettings.bombCount; +import static ru.vtosters.lite.ui.dialogs.MessageSettings.isSilentEnabled; +import static ru.vtosters.lite.utils.Preferences.*; public class MessagesHook { public static String injectOwnText(String oldText) { @@ -46,7 +42,7 @@ public class MessagesHook { var mentions = new ArrayList(); while (matcher.find()) { mentions.add(matcher.group()); - matcher.appendReplacement(textBuff, "vtl_mention" + mentionsCount + ""); + matcher.appendReplacement(textBuff, "vtl_mention" + mentionsCount); ++mentionsCount; } matcher.appendTail(textBuff); diff --git a/app/src/main/java/ru/vtosters/lite/hooks/NewsfeedHook.java b/app/src/main/java/ru/vtosters/lite/hooks/NewsfeedHook.java index a73388a77..0a1e4df51 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/NewsfeedHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/NewsfeedHook.java @@ -1,31 +1,20 @@ package ru.vtosters.lite.hooks; -import static java.lang.Long.MAX_VALUE; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; -import static ru.vtosters.lite.utils.Preferences.getString; -import static ru.vtosters.lite.utils.Preferences.ads; -import static ru.vtosters.lite.utils.Preferences.authorsrecomm; -import static ru.vtosters.lite.utils.Preferences.friendsrecomm; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; -import static ru.vtosters.lite.utils.Preferences.vkme; - import android.content.Context; import android.os.PowerManager; - import androidx.recyclerview.widget.RecyclerView; import com.vk.core.preference.Preference; import com.vk.discover.DiscoverItemDecorator; import com.vtosters.lite.api.ExtendedCommunityProfile; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.List; - import ru.vtosters.lite.utils.AccountManagerUtils; import ru.vtosters.lite.utils.Preferences; +import java.util.*; + +import static java.lang.Long.MAX_VALUE; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.Preferences.*; + public class NewsfeedHook { public static long getUpdateNewsfeed(boolean refresh_timeout) { if (vkme()) { diff --git a/app/src/main/java/ru/vtosters/lite/hooks/OnlineFormatterHook.java b/app/src/main/java/ru/vtosters/lite/hooks/OnlineFormatterHook.java index 82e7b4273..e507a67df 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/OnlineFormatterHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/OnlineFormatterHook.java @@ -1,27 +1,22 @@ package ru.vtosters.lite.hooks; +import android.util.Log; +import com.vtosters.lite.R; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import ru.vtosters.lite.utils.AndroidUtils; + +import java.io.IOException; +import java.text.ParseException; + import static ru.vtosters.lite.hooks.JsonInjectors.setOnlineInfo; import static ru.vtosters.lite.hooks.JsonInjectors.setOnlineInfoUsers; import static ru.vtosters.lite.net.Request.makeRequest; import static ru.vtosters.lite.proxy.ProxyUtils.getApi; import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; import static ru.vtosters.lite.utils.AndroidUtils.sendToast; -import static ru.vtosters.lite.utils.Preferences.dev; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; -import static ru.vtosters.lite.utils.Preferences.getPrefsFromFile; - -import android.util.Log; - -import com.vtosters.lite.R; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.IOException; -import java.text.ParseException; - -import ru.vtosters.lite.utils.AndroidUtils; +import static ru.vtosters.lite.utils.Preferences.*; public class OnlineFormatterHook { private static String AppName; diff --git a/app/src/main/java/ru/vtosters/lite/hooks/PhotoViewer.java b/app/src/main/java/ru/vtosters/lite/hooks/PhotoViewer.java index fd1614fa8..c896fb9dc 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/PhotoViewer.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/PhotoViewer.java @@ -226,7 +226,7 @@ public class PhotoViewer { client.a(request).a(new Callback() { @Override public void a(Call call, IOException e) { - Log.d("PhotoViewer", e + ""); + Log.d("PhotoViewer", String.valueOf(e)); } @Override diff --git a/app/src/main/java/ru/vtosters/lite/hooks/PollHook.java b/app/src/main/java/ru/vtosters/lite/hooks/PollHook.java index 59a2f28cd..273b3fe52 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/PollHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/PollHook.java @@ -1,14 +1,13 @@ package ru.vtosters.lite.hooks; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; - import android.view.View; import android.view.ViewGroup; import android.widget.TextView; - import com.vk.dto.polls.PollOption; import com.vk.polls.ui.views.PollOptionView; +import static ru.vtosters.lite.utils.Preferences.getBoolValue; + public class PollHook { public static void show(PollOptionView view) { if (!getBoolValue("pollresults", false)) return; diff --git a/app/src/main/java/ru/vtosters/lite/hooks/PostViewHook.java b/app/src/main/java/ru/vtosters/lite/hooks/PostViewHook.java index 5d3a5eec2..cc54a97de 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/PostViewHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/PostViewHook.java @@ -3,12 +3,9 @@ package ru.vtosters.lite.hooks; import android.view.View; import android.view.ViewGroup; import android.widget.RelativeLayout; - import androidx.recyclerview.widget.RecyclerView; - import com.vk.newsfeed.holders.BaseFooterHolder; import com.vtosters.lite.R; - import ru.vtosters.lite.utils.Preferences; public class PostViewHook { diff --git a/app/src/main/java/ru/vtosters/lite/hooks/ReplyMsgHook.java b/app/src/main/java/ru/vtosters/lite/hooks/ReplyMsgHook.java index a823b8bf1..bdfd9c2e3 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/ReplyMsgHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/ReplyMsgHook.java @@ -1,12 +1,12 @@ package ru.vtosters.lite.hooks; -import static ru.vtosters.lite.encryption.EncryptProvider.decryptMessage; - import com.vk.im.engine.models.ProfilesSimpleInfo; import com.vk.im.engine.models.messages.MsgFromUser; import com.vk.im.engine.models.messages.NestedMsg; import com.vk.im.ui.views.ReplyView; +import static ru.vtosters.lite.encryption.EncryptProvider.decryptMessage; + public class ReplyMsgHook { public static void injectWithDecrypt(ReplyView replyView, MsgFromUser msgFromUser, ProfilesSimpleInfo profilesSimpleInfo, boolean someBool) { msgFromUser.d(decryptMessage(msgFromUser)); // set new value of text in MsgFromUser class diff --git a/app/src/main/java/ru/vtosters/lite/hooks/RequestDumper.java b/app/src/main/java/ru/vtosters/lite/hooks/RequestDumper.java index b413a2102..09fa8ccc1 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/RequestDumper.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/RequestDumper.java @@ -1,13 +1,12 @@ package ru.vtosters.lite.hooks; -import static ru.vtosters.lite.utils.Preferences.dev; - import android.util.Log; - import com.vk.api.internal.MethodCall; import java.util.LinkedHashMap; +import static ru.vtosters.lite.utils.Preferences.dev; + public class RequestDumper { public static void addParams(MethodCall.a paramslist, String method, LinkedHashMap params, String apiver) { if (method.contains("execute.getGiftByStickerId")) { diff --git a/app/src/main/java/ru/vtosters/lite/hooks/StartFragmentHook.java b/app/src/main/java/ru/vtosters/lite/hooks/StartFragmentHook.java index d6b8cf7db..35d160a72 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/StartFragmentHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/StartFragmentHook.java @@ -1,12 +1,5 @@ package ru.vtosters.lite.hooks; -import static ru.vtosters.lite.ui.components.DockBarEditorManager.getInstance; -import static ru.vtosters.lite.utils.Preferences.getString; -import static ru.vtosters.lite.utils.Preferences.milkshake; -import static ru.vtosters.lite.utils.Preferences.superapp; -import static ru.vtosters.lite.utils.Preferences.useNewSettings; -import static ru.vtosters.lite.utils.Preferences.vkme; - import com.vk.apps.AppsFragment; import com.vk.discover.DiscoverFragment; import com.vk.fave.fragments.FaveTabFragment; @@ -30,6 +23,9 @@ import com.vtosters.lite.fragments.y2.VideoCatalogFragment; import com.vtosters.lite.general.fragments.GamesFragment; import com.vtosters.lite.general.fragments.PhotosFragment; +import static ru.vtosters.lite.ui.components.DockBarEditorManager.getInstance; +import static ru.vtosters.lite.utils.Preferences.*; + public class StartFragmentHook { public static Class getStartFragment() { if (vkme()) { diff --git a/app/src/main/java/ru/vtosters/lite/hooks/SwitchHook.java b/app/src/main/java/ru/vtosters/lite/hooks/SwitchHook.java index 60dc87f85..bbcd69fbf 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/SwitchHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/SwitchHook.java @@ -18,7 +18,7 @@ import static com.vtosters.lite.R.color.*; public class SwitchHook { private static int[] getSwitchColors(Context ctx) { - return new int[] { + return new int[]{ ContextCompat.getColor(ctx, ThemesUtils.isDarkTheme() ? gray_800 : white), ContextCompat.getColor(ctx, ThemesUtils.isDarkTheme() ? switch_disabled_on_dark : switch_disabled_on_light), ContextCompat.getColor(ctx, gray_20), @@ -27,7 +27,7 @@ public class SwitchHook { } private static int[] getTrackColors() { - return new int[] { + return new int[]{ ColorUtils.b(ThemesUtils.getColorFromAttr(com.vtosters.lite.R.attr.loader_track_fill), 0.4f), ColorUtils.b(ThemesUtils.getAccentColor(), 0.12f), ThemesUtils.getColorFromAttr(com.vtosters.lite.R.attr.loader_track_fill), @@ -61,11 +61,11 @@ public class SwitchHook { compoundButton, new ColorStateList( createColorStateList(), - new int[]{ - ColorUtils.b(ThemesUtils.getColorFromAttr(com.vtosters.lite.R.attr.selection_off_icon), 0.4f), - ColorUtils.b(ThemesUtils.getAccentColor(), 0.4f), - ThemesUtils.getColorFromAttr(com.vtosters.lite.R.attr.selection_off_icon), - ThemesUtils.getAccentColor()})); + new int[]{ + ColorUtils.b(ThemesUtils.getColorFromAttr(com.vtosters.lite.R.attr.selection_off_icon), 0.4f), + ColorUtils.b(ThemesUtils.getAccentColor(), 0.4f), + ThemesUtils.getColorFromAttr(com.vtosters.lite.R.attr.selection_off_icon), + ThemesUtils.getAccentColor()})); } private static int[][] createColorStateList() { diff --git a/app/src/main/java/ru/vtosters/lite/hooks/TogglesHook.java b/app/src/main/java/ru/vtosters/lite/hooks/TogglesHook.java index 563ea26c6..2053a4401 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/TogglesHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/TogglesHook.java @@ -1,15 +1,10 @@ package ru.vtosters.lite.hooks; -import static ru.vtosters.lite.utils.Preferences.feedcache; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; -import static ru.vtosters.lite.utils.Preferences.milkshake; -import static ru.vtosters.lite.utils.Preferences.miniapps; -import static ru.vtosters.lite.utils.Preferences.postsredesign; -import static ru.vtosters.lite.utils.Preferences.superapp; - import com.vk.toggle.FeatureManager; import com.vk.toggle.Features; +import static ru.vtosters.lite.utils.Preferences.*; + public class TogglesHook { public static boolean shouldPatch(Features.Type feature) { return switch (feature) { diff --git a/app/src/main/java/ru/vtosters/lite/hooks/WritebarHook.java b/app/src/main/java/ru/vtosters/lite/hooks/WritebarHook.java index 4c1313d73..81a06192f 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/WritebarHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/WritebarHook.java @@ -1,11 +1,10 @@ package ru.vtosters.lite.hooks; -import static ru.vtosters.lite.utils.Preferences.wbios; - import com.vtosters.lite.R; - import ru.vtosters.lite.utils.ThemesUtils; +import static ru.vtosters.lite.utils.Preferences.wbios; + public class WritebarHook { public static int getWriteBar() { return wbios() ? R.layout.write_bar_i : R.layout.write_bar; diff --git a/app/src/main/java/ru/vtosters/lite/hooks/ui/SystemThemeChangerHook.java b/app/src/main/java/ru/vtosters/lite/hooks/ui/SystemThemeChangerHook.java index ae59c23d3..166c6c88e 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/ui/SystemThemeChangerHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/ui/SystemThemeChangerHook.java @@ -2,17 +2,11 @@ package ru.vtosters.lite.hooks.ui; import android.app.Activity; import android.content.res.Configuration; - import com.vk.core.ui.themes.VKTheme; - -import com.vk.core.ui.themes.VKThemeHelper; -import com.vtosters.lite.data.ThemeTracker; import ru.vtosters.lite.utils.LifecycleUtils; import ru.vtosters.lite.utils.Preferences; import ru.vtosters.lite.utils.ThemesUtils; -import static ru.vtosters.lite.utils.AndroidUtils.getCenterScreenCoords; - public class SystemThemeChangerHook { public static void onThemeChanged(Configuration configuration) { onThemeChanged(configuration, true); diff --git a/app/src/main/java/ru/vtosters/lite/music/Genius.java b/app/src/main/java/ru/vtosters/lite/music/Genius.java index 06f697b5d..13173022f 100644 --- a/app/src/main/java/ru/vtosters/lite/music/Genius.java +++ b/app/src/main/java/ru/vtosters/lite/music/Genius.java @@ -3,12 +3,11 @@ package ru.vtosters.lite.music; import android.text.TextUtils; import android.util.Log; import com.vk.dto.music.MusicTrack; +import com.vtosters.lite.R; import okhttp3.OkHttpClient; import okhttp3.Request; import org.json.JSONException; import org.json.JSONObject; - -import com.vtosters.lite.R; import ru.vtosters.lite.di.singleton.VtOkHttpClient; import ru.vtosters.lite.utils.AndroidUtils; @@ -18,6 +17,7 @@ public class Genius { private static final String KEY = "Bearer ZTejoT_ojOEasIkT9WrMBhBQOz6eYKK5QULCMECmOhvwqjRZ6WbpamFe3geHnvp3"; private static final String URL = "https://api.genius.com"; private static final OkHttpClient client = VtOkHttpClient.getInstance(); + public static String getTextMusic(MusicTrack musictrack) { var uid = musictrack.y1(); var artist = musictrack.C; diff --git a/app/src/main/java/ru/vtosters/lite/music/LastFMScrobbler.java b/app/src/main/java/ru/vtosters/lite/music/LastFMScrobbler.java index bf5313fe2..e7e600b06 100644 --- a/app/src/main/java/ru/vtosters/lite/music/LastFMScrobbler.java +++ b/app/src/main/java/ru/vtosters/lite/music/LastFMScrobbler.java @@ -3,14 +3,19 @@ package ru.vtosters.lite.music; import android.os.RemoteException; import android.text.TextUtils; import android.util.Log; - import androidx.annotation.Nullable; - +import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; import com.vk.dto.music.MusicTrack; import com.vtosters.lite.R; - +import okhttp3.Callback; +import okhttp3.*; import org.json.JSONException; import org.json.JSONObject; +import ru.vtosters.lite.di.singleton.VtOkHttpClient; +import ru.vtosters.lite.downloaders.AudioDownloader; +import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.Preferences; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -19,19 +24,6 @@ import java.util.List; import java.util.Map; import java.util.TreeMap; -import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.FormBody; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; -import ru.vtosters.lite.di.singleton.VtOkHttpClient; -import ru.vtosters.lite.downloaders.AudioDownloader; -import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.Preferences; - public class LastFMScrobbler { private static final String KEY = "5965d63402414776c54c266db0211746"; private static final String KEY_SECRET = "d982180eed13275bb948e41cf225f88f"; @@ -101,7 +93,7 @@ public class LastFMScrobbler { fetch(params, new Callback() { @Override public void a(Call call, IOException e) { - Log.d("Scrobbler", e + ""); + Log.d("Scrobbler", String.valueOf(e)); } @Override diff --git a/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java b/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java index e379e3725..092864ac3 100644 --- a/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java @@ -33,6 +33,19 @@ public class M3UDownloader implements ITrackDownloader { return Holder.INSTANCE; } + public static String getTitle(MusicTrack track) { + String title = null; + + if (track.f != null) { + title = track.f; + if (!track.g.isEmpty()) { + title += " (" + track.g + ")"; + } + } + + return title; + } + public void downloadTrack(MusicTrack track, File outDir, Callback callback, boolean cache) { if (track.D.isEmpty()) { Log.d("TrackDownloader", "link error: " + track.y1() + ", title: " + M3UDownloader.getTitle(track)); @@ -88,7 +101,8 @@ public class M3UDownloader implements ITrackDownloader { IOUtils.writeToFile(tsDump, content); callback.onProgress(10 + Math.round(80.0f * progress.addAndGet(1) / tses.size())); callback.onSizeReceived((long) content.length * tses.size(), parser.getHeapSize()); - } catch (IOException | NoSuchPaddingException | NoSuchAlgorithmException | InvalidAlgorithmParameterException | InvalidKeyException e) { + } catch (IOException | NoSuchPaddingException | NoSuchAlgorithmException | + InvalidAlgorithmParameterException | InvalidKeyException e) { callback.onFailure(); throw new RuntimeException(e); } @@ -107,19 +121,6 @@ public class M3UDownloader implements ITrackDownloader { }).thenRun(() -> IOUtils.deleteRecursive(tsesDir)).thenRun(callback::onSuccess); } - public static String getTitle(MusicTrack track) { - String title = null; - - if (track.f != null) { - title = track.f; - if (!track.g.isEmpty()) { - title += " (" + track.g + ")"; - } - } - - return title; - } - // Initialization-on-demand private static class Holder { private static final M3UDownloader INSTANCE = new M3UDownloader(); diff --git a/app/src/main/java/ru/vtosters/lite/music/cache/CacheDatabaseDelegate.java b/app/src/main/java/ru/vtosters/lite/music/cache/CacheDatabaseDelegate.java index 48dbaf543..344a12fc9 100644 --- a/app/src/main/java/ru/vtosters/lite/music/cache/CacheDatabaseDelegate.java +++ b/app/src/main/java/ru/vtosters/lite/music/cache/CacheDatabaseDelegate.java @@ -1,10 +1,5 @@ package ru.vtosters.lite.music.cache; -import static ru.vtosters.lite.music.cache.FileCacheImplementation.getCacheDir; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; -import static ru.vtosters.lite.utils.AndroidUtils.sendToast; -import static ru.vtosters.lite.utils.IOUtils.deleteRecursive; - import android.content.Context; import android.database.Cursor; import android.database.DatabaseUtils; @@ -12,25 +7,26 @@ import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.os.RemoteException; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; - +import bruhcollective.itaysonlab.libvkx.ILibVkxService; +import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; +import bruhcollective.itaysonlab.libvkx.client.LibVKXClientImpl; import com.vk.core.util.ToastUtils; import com.vk.dto.music.MusicTrack; import com.vtosters.lite.R; - import org.json.JSONObject; +import ru.vtosters.lite.utils.AndroidUtils; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; -import bruhcollective.itaysonlab.libvkx.ILibVkxService; -import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; -import bruhcollective.itaysonlab.libvkx.client.LibVKXClientImpl; -import ru.vtosters.lite.utils.AndroidUtils; +import static ru.vtosters.lite.music.cache.FileCacheImplementation.getCacheDir; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.sendToast; +import static ru.vtosters.lite.utils.IOUtils.deleteRecursive; public class CacheDatabaseDelegate { private static final int DB_VERSION = 0x1; diff --git a/app/src/main/java/ru/vtosters/lite/music/cache/FileCacheImplementation.java b/app/src/main/java/ru/vtosters/lite/music/cache/FileCacheImplementation.java index 8cd9a0c0f..0c996d8dd 100644 --- a/app/src/main/java/ru/vtosters/lite/music/cache/FileCacheImplementation.java +++ b/app/src/main/java/ru/vtosters/lite/music/cache/FileCacheImplementation.java @@ -1,14 +1,12 @@ package ru.vtosters.lite.music.cache; import android.net.Uri; - import com.vk.dto.music.MusicTrack; - -import java.io.File; - import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.IOUtils; +import java.io.File; + public class FileCacheImplementation { public static void clear() { diff --git a/app/src/main/java/ru/vtosters/lite/music/cache/helpers/PlaylistHelper.java b/app/src/main/java/ru/vtosters/lite/music/cache/helpers/PlaylistHelper.java index 11ae2e610..18415dfae 100644 --- a/app/src/main/java/ru/vtosters/lite/music/cache/helpers/PlaylistHelper.java +++ b/app/src/main/java/ru/vtosters/lite/music/cache/helpers/PlaylistHelper.java @@ -1,20 +1,18 @@ package ru.vtosters.lite.music.cache.helpers; -import static ru.vtosters.lite.utils.AccountManagerUtils.getUserId; - import com.vk.dto.music.Playlist; import com.vtosters.lite.R; - import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; +import ru.vtosters.lite.music.cache.FileCacheImplementation; +import ru.vtosters.lite.utils.AndroidUtils; import java.util.ArrayList; import java.util.List; -import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; -import ru.vtosters.lite.music.cache.FileCacheImplementation; -import ru.vtosters.lite.utils.AndroidUtils; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserId; public class PlaylistHelper { diff --git a/app/src/main/java/ru/vtosters/lite/music/cache/helpers/TracklistHelper.java b/app/src/main/java/ru/vtosters/lite/music/cache/helpers/TracklistHelper.java index 3ffb32d07..9f0c79d1d 100644 --- a/app/src/main/java/ru/vtosters/lite/music/cache/helpers/TracklistHelper.java +++ b/app/src/main/java/ru/vtosters/lite/music/cache/helpers/TracklistHelper.java @@ -1,21 +1,18 @@ package ru.vtosters.lite.music.cache.helpers; import android.util.Log; - +import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; import com.vk.dto.music.MusicTrack; - import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; +import ru.vtosters.lite.music.cache.FileCacheImplementation; import java.io.File; import java.net.MalformedURLException; import java.util.List; -import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; -import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; -import ru.vtosters.lite.music.cache.FileCacheImplementation; - public class TracklistHelper { public static List getTracks() { diff --git a/app/src/main/java/ru/vtosters/lite/music/cache/injectors/PlaylistInjector.java b/app/src/main/java/ru/vtosters/lite/music/cache/injectors/PlaylistInjector.java index cd2e8cad8..be583986d 100644 --- a/app/src/main/java/ru/vtosters/lite/music/cache/injectors/PlaylistInjector.java +++ b/app/src/main/java/ru/vtosters/lite/music/cache/injectors/PlaylistInjector.java @@ -3,27 +3,24 @@ package ru.vtosters.lite.music.cache.injectors; import android.os.RemoteException; import android.text.TextUtils; import android.util.Log; - +import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; import com.vk.api.audio.AudioGetPlaylist; import com.vk.dto.music.MusicTrack; import com.vk.dto.music.Playlist; - +import io.reactivex.Observable; +import io.reactivex.ObservableOnSubscribe; import org.json.JSONException; import org.json.JSONObject; +import ru.vtosters.lite.downloaders.AudioDownloader; +import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; +import ru.vtosters.lite.music.cache.helpers.PlaylistHelper; +import ru.vtosters.lite.music.cache.helpers.TracklistHelper; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; -import io.reactivex.Observable; -import io.reactivex.ObservableOnSubscribe; -import ru.vtosters.lite.downloaders.AudioDownloader; -import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; -import ru.vtosters.lite.music.cache.helpers.PlaylistHelper; -import ru.vtosters.lite.music.cache.helpers.TracklistHelper; - public class PlaylistInjector { public final static String CHANNEL_NAME = "VTCH"; private static final ExecutorService executor = Executors.newCachedThreadPool(); diff --git a/app/src/main/java/ru/vtosters/lite/music/cache/injectors/TracklistInjector.java b/app/src/main/java/ru/vtosters/lite/music/cache/injectors/TracklistInjector.java index 3f287fcf5..9ad0137ea 100644 --- a/app/src/main/java/ru/vtosters/lite/music/cache/injectors/TracklistInjector.java +++ b/app/src/main/java/ru/vtosters/lite/music/cache/injectors/TracklistInjector.java @@ -1,34 +1,28 @@ package ru.vtosters.lite.music.cache.injectors; -import static ru.vtosters.lite.music.cache.CacheDatabaseDelegate.hasTracks; -import static ru.vtosters.lite.music.cache.helpers.PlaylistHelper.getCatalogHeader; -import static ru.vtosters.lite.music.cache.helpers.PlaylistHelper.getCatalogPlaylist; -import static ru.vtosters.lite.music.cache.helpers.PlaylistHelper.getCatalogSeparator; -import static ru.vtosters.lite.music.cache.helpers.PlaylistHelper.getPlaylist; -import static ru.vtosters.lite.utils.AccountManagerUtils.getUserId; - import android.util.Log; - +import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; import com.vk.catalog2.core.CatalogParser; import com.vk.catalog2.core.api.dto.CatalogResponse; import com.vk.dto.music.MusicTrack; import com.vtosters.lite.R; - +import io.reactivex.Observable; +import io.reactivex.ObservableOnSubscribe; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; +import ru.vtosters.lite.music.cache.helpers.TracklistHelper; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.NetworkUtils; import java.util.ArrayList; import java.util.List; import java.util.UUID; -import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; -import io.reactivex.Observable; -import io.reactivex.ObservableOnSubscribe; -import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; -import ru.vtosters.lite.music.cache.helpers.TracklistHelper; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.NetworkUtils; +import static ru.vtosters.lite.music.cache.CacheDatabaseDelegate.hasTracks; +import static ru.vtosters.lite.music.cache.helpers.PlaylistHelper.*; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserId; public class TracklistInjector { diff --git a/app/src/main/java/ru/vtosters/lite/music/callback/MusicCallbackBuilder.java b/app/src/main/java/ru/vtosters/lite/music/callback/MusicCallbackBuilder.java index 06e935c32..4e0223f25 100644 --- a/app/src/main/java/ru/vtosters/lite/music/callback/MusicCallbackBuilder.java +++ b/app/src/main/java/ru/vtosters/lite/music/callback/MusicCallbackBuilder.java @@ -1,12 +1,9 @@ package ru.vtosters.lite.music.callback; import android.util.Log; - import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationManagerCompat; - import com.vtosters.lite.R; - import ru.vtosters.lite.downloaders.notifications.NotificationChannels; import ru.vtosters.lite.music.Callback; import ru.vtosters.lite.utils.AndroidUtils; diff --git a/app/src/main/java/ru/vtosters/lite/music/converter/playlist/PlaylistConverter.java b/app/src/main/java/ru/vtosters/lite/music/converter/playlist/PlaylistConverter.java index dbf01e905..e67a95b26 100644 --- a/app/src/main/java/ru/vtosters/lite/music/converter/playlist/PlaylistConverter.java +++ b/app/src/main/java/ru/vtosters/lite/music/converter/playlist/PlaylistConverter.java @@ -1,15 +1,17 @@ package ru.vtosters.lite.music.converter.playlist; -import static ru.vtosters.lite.hooks.DateHook.getLocale; -import static ru.vtosters.lite.proxy.ProxyUtils.getApi; - import com.vk.core.network.Network; import com.vk.core.util.DeviceIdProvider; import com.vk.dto.music.MusicTrack; import com.vk.dto.music.Playlist; - +import java8.util.concurrent.CompletableFuture; +import okhttp3.Headers; +import okhttp3.OkHttpClient; +import okhttp3.Request; import org.json.JSONException; import org.json.JSONObject; +import ru.vtosters.lite.utils.AccountManagerUtils; +import ru.vtosters.lite.utils.AndroidUtils; import java.io.IOException; import java.util.ArrayList; @@ -17,12 +19,8 @@ import java.util.List; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; -import java8.util.concurrent.CompletableFuture; -import okhttp3.Headers; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import ru.vtosters.lite.utils.AccountManagerUtils; -import ru.vtosters.lite.utils.AndroidUtils; +import static ru.vtosters.lite.hooks.DateHook.getLocale; +import static ru.vtosters.lite.proxy.ProxyUtils.getApi; /** * stuff for converting playlists DTO diff --git a/app/src/main/java/ru/vtosters/lite/music/converter/ts/FFMpeg.java b/app/src/main/java/ru/vtosters/lite/music/converter/ts/FFMpeg.java index 6412dcba7..7a2fc6129 100644 --- a/app/src/main/java/ru/vtosters/lite/music/converter/ts/FFMpeg.java +++ b/app/src/main/java/ru/vtosters/lite/music/converter/ts/FFMpeg.java @@ -1,13 +1,14 @@ package ru.vtosters.lite.music.converter.ts; import android.util.Log; - import com.arthenica.ffmpegkit.FFmpegKit; import com.arthenica.ffmpegkit.ReturnCode; import com.vk.core.util.ToastUtils; import com.vk.dto.music.Artist; import com.vk.dto.music.MusicTrack; import com.vtosters.lite.R; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.IOUtils; import java.io.File; import java.io.FileOutputStream; @@ -15,9 +16,6 @@ import java.io.IOException; import java.io.InputStream; import java.util.stream.Collectors; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.IOUtils; - public class FFMpeg { private static final int BUFFER_SIZE = 2048; diff --git a/app/src/main/java/ru/vtosters/lite/music/converter/ts/TSMerger.java b/app/src/main/java/ru/vtosters/lite/music/converter/ts/TSMerger.java index 06d415c06..1bac714f9 100644 --- a/app/src/main/java/ru/vtosters/lite/music/converter/ts/TSMerger.java +++ b/app/src/main/java/ru/vtosters/lite/music/converter/ts/TSMerger.java @@ -1,6 +1,7 @@ package ru.vtosters.lite.music.converter.ts; import android.os.Build; +import ru.vtosters.lite.utils.IOUtils; import java.io.ByteArrayOutputStream; import java.io.File; @@ -9,8 +10,6 @@ import java.io.IOException; import java.nio.file.Files; import java.util.Arrays; -import ru.vtosters.lite.utils.IOUtils; - public class TSMerger { /** * Merge multiple .ts files into one .ts file diff --git a/app/src/main/java/ru/vtosters/lite/music/downloader/AudioGet.java b/app/src/main/java/ru/vtosters/lite/music/downloader/AudioGet.java index c717d7284..9453c18a0 100644 --- a/app/src/main/java/ru/vtosters/lite/music/downloader/AudioGet.java +++ b/app/src/main/java/ru/vtosters/lite/music/downloader/AudioGet.java @@ -1,18 +1,16 @@ package ru.vtosters.lite.music.downloader; -import static ru.vtosters.lite.hooks.DateHook.getLocale; -import static ru.vtosters.lite.proxy.ProxyUtils.getApi; -import static ru.vtosters.lite.utils.AccountManagerUtils.getUserId; -import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; - import android.util.Log; - import com.vk.core.network.Network; import com.vk.core.util.DeviceIdProvider; import com.vk.dto.music.MusicTrack; - +import java8.util.concurrent.CompletableFuture; +import okhttp3.Headers; +import okhttp3.OkHttpClient; +import okhttp3.Request; import org.json.JSONException; import org.json.JSONObject; +import ru.vtosters.lite.utils.AndroidUtils; import java.io.IOException; import java.util.ArrayList; @@ -20,11 +18,10 @@ import java.util.List; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; -import java8.util.concurrent.CompletableFuture; -import okhttp3.Headers; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import ru.vtosters.lite.utils.AndroidUtils; +import static ru.vtosters.lite.hooks.DateHook.getLocale; +import static ru.vtosters.lite.proxy.ProxyUtils.getApi; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserId; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; public class AudioGet { public static List getAudios() { diff --git a/app/src/main/java/ru/vtosters/lite/music/downloader/PlaylistDownloader.java b/app/src/main/java/ru/vtosters/lite/music/downloader/PlaylistDownloader.java index b4060360e..2b624f182 100644 --- a/app/src/main/java/ru/vtosters/lite/music/downloader/PlaylistDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/music/downloader/PlaylistDownloader.java @@ -1,15 +1,13 @@ package ru.vtosters.lite.music.downloader; import android.util.Log; - import com.vk.dto.music.MusicTrack; +import ru.vtosters.lite.music.Callback; import java.io.File; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; -import ru.vtosters.lite.music.Callback; - public class PlaylistDownloader { public static void downloadPlaylist(List playlist, String playlistName, String path, Callback callback) { File outDir = new File(path); diff --git a/app/src/main/java/ru/vtosters/lite/music/downloader/ThumbnailDownloader.java b/app/src/main/java/ru/vtosters/lite/music/downloader/ThumbnailDownloader.java index 7f8719cd4..34d2c189a 100644 --- a/app/src/main/java/ru/vtosters/lite/music/downloader/ThumbnailDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/music/downloader/ThumbnailDownloader.java @@ -1,14 +1,13 @@ package ru.vtosters.lite.music.downloader; +import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; import com.vk.dto.music.MusicTrack; +import ru.vtosters.lite.music.cache.FileCacheImplementation; +import ru.vtosters.lite.utils.IOUtils; import java.io.IOException; import java.net.URL; -import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; -import ru.vtosters.lite.music.cache.FileCacheImplementation; -import ru.vtosters.lite.utils.IOUtils; - public class ThumbnailDownloader { public static void downloadThumbnails(MusicTrack track) diff --git a/app/src/main/java/ru/vtosters/lite/music/downloader/TrackDownloader.java b/app/src/main/java/ru/vtosters/lite/music/downloader/TrackDownloader.java index 513952d67..fc5c3bc2c 100644 --- a/app/src/main/java/ru/vtosters/lite/music/downloader/TrackDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/music/downloader/TrackDownloader.java @@ -1,12 +1,8 @@ package ru.vtosters.lite.music.downloader; import android.util.Log; - -import com.vk.dto.music.MusicTrack; - -import java.io.File; - import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; +import com.vk.dto.music.MusicTrack; import ru.vtosters.lite.concurrent.VTExecutors; import ru.vtosters.lite.music.Callback; import ru.vtosters.lite.music.M3UDownloader; @@ -14,6 +10,8 @@ import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; import ru.vtosters.lite.music.cache.FileCacheImplementation; import ru.vtosters.lite.music.interfaces.ITrackDownloader; +import java.io.File; + public class TrackDownloader { public static void downloadTrack(MusicTrack track, String path, Callback callback) { if (track.D.isEmpty()) { diff --git a/app/src/main/java/ru/vtosters/lite/music/hook/MusicArtistSelectorHook.java b/app/src/main/java/ru/vtosters/lite/music/hook/MusicArtistSelectorHook.java index 5fde7be4c..6532036ec 100644 --- a/app/src/main/java/ru/vtosters/lite/music/hook/MusicArtistSelectorHook.java +++ b/app/src/main/java/ru/vtosters/lite/music/hook/MusicArtistSelectorHook.java @@ -1,7 +1,6 @@ package ru.vtosters.lite.music.hook; import android.content.Context; - import com.vk.music.fragment.MusicFragment; public class MusicArtistSelectorHook { diff --git a/app/src/main/java/ru/vtosters/lite/music/hook/MusicBottomSheetHook.java b/app/src/main/java/ru/vtosters/lite/music/hook/MusicBottomSheetHook.java index a2aa3bc73..de8f2bd91 100644 --- a/app/src/main/java/ru/vtosters/lite/music/hook/MusicBottomSheetHook.java +++ b/app/src/main/java/ru/vtosters/lite/music/hook/MusicBottomSheetHook.java @@ -1,30 +1,24 @@ package ru.vtosters.lite.music.hook; -import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.asId; -import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.getInstance; -import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.isIntegrationEnabled; -import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.isVkxInstalled; -import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.lambdaplay; -import static ru.vtosters.lite.music.cache.CacheDatabaseDelegate.isCached; -import static ru.vtosters.lite.music.cache.CacheDatabaseDelegate.isVkxCached; -import static ru.vtosters.lite.utils.NetworkUtils.isNetworkConnected; -import static ru.vtosters.lite.utils.Preferences.milkshake; - import android.os.RemoteException; - +import bruhcollective.itaysonlab.libvkx.client.LibVKXClientImpl; import com.vk.dto.music.MusicTrack; import com.vk.dto.music.Playlist; import com.vk.music.bottomsheets.a.MusicAction; import com.vk.music.common.MusicPlaybackLaunchContext; import com.vtosters.lite.R; - -import java.util.ArrayList; - -import bruhcollective.itaysonlab.libvkx.client.LibVKXClientImpl; import ru.vtosters.lite.downloaders.AudioDownloader; import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; import ru.vtosters.lite.utils.AndroidUtils; +import java.util.ArrayList; + +import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.*; +import static ru.vtosters.lite.music.cache.CacheDatabaseDelegate.isCached; +import static ru.vtosters.lite.music.cache.CacheDatabaseDelegate.isVkxCached; +import static ru.vtosters.lite.utils.NetworkUtils.isNetworkConnected; +import static ru.vtosters.lite.utils.Preferences.milkshake; + public class MusicBottomSheetHook { public static ArrayList hook(ArrayList actions, MusicTrack musicTrack) { if (musicTrack.F1()) return actions; @@ -38,13 +32,13 @@ public class MusicBottomSheetHook { if (isIntegrationEnabled()) { if (isVkxCached(trackid)) { actions.add(getRemoveCacheTrackVkxAction()); - } else if (isNetworkConnected()){ + } else if (isNetworkConnected()) { actions.add(addToCacheTrackVkxAction()); } } else { if (isCached(trackid)) { actions.add(getRemoveCacheTrackAction()); - } else if (isNetworkConnected()){ + } else if (isNetworkConnected()) { actions.add(addToCacheTrackAction()); } } @@ -93,10 +87,10 @@ public class MusicBottomSheetHook { if (isIntegrationEnabled()) { if (isVkxCached(playlist.a, playlist.b)) { actions.add(getRemoveCacheTrackVkxAction()); - } else if (isNetworkConnected()){ + } else if (isNetworkConnected()) { actions.add(addToCacheTrackVkxAction()); } - } else if (isNetworkConnected()){ + } else if (isNetworkConnected()) { actions.add(addToCacheTrackAction()); } diff --git a/app/src/main/java/ru/vtosters/lite/music/interfaces/ITrackDownloader.java b/app/src/main/java/ru/vtosters/lite/music/interfaces/ITrackDownloader.java index ccf641f80..7d45f346a 100644 --- a/app/src/main/java/ru/vtosters/lite/music/interfaces/ITrackDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/music/interfaces/ITrackDownloader.java @@ -1,11 +1,10 @@ package ru.vtosters.lite.music.interfaces; import com.vk.dto.music.MusicTrack; +import ru.vtosters.lite.music.Callback; import java.io.File; -import ru.vtosters.lite.music.Callback; - /** * Interface for track downloaders */ diff --git a/app/src/main/java/ru/vtosters/lite/music/notification/MusicNotificationBuilder.java b/app/src/main/java/ru/vtosters/lite/music/notification/MusicNotificationBuilder.java index 54072ef41..e7fd60b4a 100644 --- a/app/src/main/java/ru/vtosters/lite/music/notification/MusicNotificationBuilder.java +++ b/app/src/main/java/ru/vtosters/lite/music/notification/MusicNotificationBuilder.java @@ -2,13 +2,10 @@ package ru.vtosters.lite.music.notification; import android.app.Notification; import android.os.Build; - import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationManagerCompat; - import com.vk.dto.music.MusicTrack; import com.vtosters.lite.R; - import ru.vtosters.lite.downloaders.notifications.NotificationChannels; import ru.vtosters.lite.utils.AccountManagerUtils; import ru.vtosters.lite.utils.AndroidUtils; diff --git a/app/src/main/java/ru/vtosters/lite/net/NetCall.java b/app/src/main/java/ru/vtosters/lite/net/NetCall.java index d13545618..236413d8f 100644 --- a/app/src/main/java/ru/vtosters/lite/net/NetCall.java +++ b/app/src/main/java/ru/vtosters/lite/net/NetCall.java @@ -7,11 +7,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; -import java.net.HttpURLConnection; -import java.net.PasswordAuthentication; -import java.net.Proxy; -import java.net.URL; -import java.net.URLEncoder; +import java.net.*; import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.TreeMap; @@ -20,7 +16,7 @@ public final class NetCall { private final NetRequest req; private final NetClient cl; - protected NetCall(NetClient cl, NetRequest req) { + NetCall(NetClient cl, NetRequest req) { this.req = req; this.cl = cl; } diff --git a/app/src/main/java/ru/vtosters/lite/net/NetResponse.java b/app/src/main/java/ru/vtosters/lite/net/NetResponse.java index 4f9f68046..b276c4c27 100755 --- a/app/src/main/java/ru/vtosters/lite/net/NetResponse.java +++ b/app/src/main/java/ru/vtosters/lite/net/NetResponse.java @@ -8,11 +8,11 @@ public final class NetResponse { private final byte[] data; private int code; - protected NetResponse(byte[] data) { + NetResponse(byte[] data) { this.data = data; } - protected void setCode(int code) { + void setCode(int code) { this.code = code; } diff --git a/app/src/main/java/ru/vtosters/lite/net/Request.java b/app/src/main/java/ru/vtosters/lite/net/Request.java index b2aa1ec02..e3be5fec1 100644 --- a/app/src/main/java/ru/vtosters/lite/net/Request.java +++ b/app/src/main/java/ru/vtosters/lite/net/Request.java @@ -1,9 +1,6 @@ package ru.vtosters.lite.net; -import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; - import android.os.AsyncTask; - import com.vk.core.network.Network; import java.io.BufferedReader; @@ -11,6 +8,8 @@ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; +import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; + public class Request { public static void makeRequest(byte[] bArr, RequestCallback RequestCallback) { new MakeRequestTask(bArr, RequestCallback).execute(); diff --git a/app/src/main/java/ru/vtosters/lite/proxy/GithubList.java b/app/src/main/java/ru/vtosters/lite/proxy/GithubList.java index 3f7b21032..dc05ce272 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/GithubList.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/GithubList.java @@ -1,15 +1,14 @@ package ru.vtosters.lite.proxy; import android.util.Log; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import ru.vtosters.lite.di.singleton.VtOkHttpClient; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import ru.vtosters.lite.di.singleton.VtOkHttpClient; - public class GithubList { private static final OkHttpClient mClient = VtOkHttpClient.getInstance(); diff --git a/app/src/main/java/ru/vtosters/lite/proxy/ProxyUtils.java b/app/src/main/java/ru/vtosters/lite/proxy/ProxyUtils.java index e0333d31f..771dcc123 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/ProxyUtils.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/ProxyUtils.java @@ -1,28 +1,24 @@ package ru.vtosters.lite.proxy; -import static java.lang.System.clearProperty; -import static ru.vtosters.lite.proxy.api.VikaMobile.getApiHost; -import static ru.vtosters.lite.proxy.api.VikaMobile.getOauthHost; -import static ru.vtosters.lite.proxy.api.VikaMobile.getStaticHost; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; - - import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.util.ArrayMap; import android.util.Log; - -import java.io.IOException; -import java.lang.reflect.Field; -import java.lang.reflect.Method; - import ru.vtosters.lite.proxy.http.CustomHttp; import ru.vtosters.lite.proxy.https.CustomHttps; import ru.vtosters.lite.proxy.socks.CustomSocks; import ru.vtosters.lite.proxy.socks.Zaborona; import ru.vtosters.lite.utils.Preferences; +import java.io.IOException; +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +import static java.lang.System.clearProperty; +import static ru.vtosters.lite.proxy.api.VikaMobile.*; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; + public class ProxyUtils { public static String getApi() { var proxyapi = Preferences.getString("proxyapi"); diff --git a/app/src/main/java/ru/vtosters/lite/proxy/api/ApiProxy.java b/app/src/main/java/ru/vtosters/lite/proxy/api/ApiProxy.java index 425acd715..afbf23532 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/api/ApiProxy.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/api/ApiProxy.java @@ -1,11 +1,11 @@ package ru.vtosters.lite.proxy.api; +import android.util.Log; + import static ru.vtosters.lite.proxy.ProxyUtils.isAnyProxyEnabled; import static ru.vtosters.lite.proxy.ProxyUtils.isVikaProxyEnabled; import static ru.vtosters.lite.utils.Preferences.getString; -import android.util.Log; - public class ApiProxy { public static String linkReplacer(String link) { var vkapi = "api.vk.com"; diff --git a/app/src/main/java/ru/vtosters/lite/proxy/http/Jetkai.java b/app/src/main/java/ru/vtosters/lite/proxy/http/Jetkai.java index 73b088758..71adda20d 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/http/Jetkai.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/http/Jetkai.java @@ -1,19 +1,17 @@ package ru.vtosters.lite.proxy.http; -import static ru.vtosters.lite.proxy.GithubList.getProxy; -import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; -import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; - import android.util.Log; - import com.vtosters.lite.R; +import ru.vtosters.lite.proxy.RandomProxy; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.Preferences; import java.io.IOException; import java.util.ArrayList; -import ru.vtosters.lite.proxy.RandomProxy; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.Preferences; +import static ru.vtosters.lite.proxy.GithubList.getProxy; +import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; +import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; public class Jetkai { private static final String TAG = "Jetkai_Http"; diff --git a/app/src/main/java/ru/vtosters/lite/proxy/http/TheSpeedX.java b/app/src/main/java/ru/vtosters/lite/proxy/http/TheSpeedX.java index 4c662602f..833d6faf0 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/http/TheSpeedX.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/http/TheSpeedX.java @@ -1,19 +1,17 @@ package ru.vtosters.lite.proxy.http; -import static ru.vtosters.lite.proxy.GithubList.getProxy; -import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; -import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; - import android.util.Log; - import com.vtosters.lite.R; +import ru.vtosters.lite.proxy.RandomProxy; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.Preferences; import java.io.IOException; import java.util.ArrayList; -import ru.vtosters.lite.proxy.RandomProxy; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.Preferences; +import static ru.vtosters.lite.proxy.GithubList.getProxy; +import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; +import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; public class TheSpeedX { private static final String TAG = "TheSpeedX_Http"; diff --git a/app/src/main/java/ru/vtosters/lite/proxy/https/Jetkai.java b/app/src/main/java/ru/vtosters/lite/proxy/https/Jetkai.java index a9260d8f4..7c41ec94f 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/https/Jetkai.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/https/Jetkai.java @@ -1,19 +1,17 @@ package ru.vtosters.lite.proxy.https; -import static ru.vtosters.lite.proxy.GithubList.getProxy; -import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; -import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; - import android.util.Log; - import com.vtosters.lite.R; +import ru.vtosters.lite.proxy.RandomProxy; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.Preferences; import java.io.IOException; import java.util.ArrayList; -import ru.vtosters.lite.proxy.RandomProxy; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.Preferences; +import static ru.vtosters.lite.proxy.GithubList.getProxy; +import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; +import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; public class Jetkai { private static final String TAG = "Jetkai_Https"; diff --git a/app/src/main/java/ru/vtosters/lite/proxy/https/Roosterkid.java b/app/src/main/java/ru/vtosters/lite/proxy/https/Roosterkid.java index d1a4be5ae..8c8c8d1b4 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/https/Roosterkid.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/https/Roosterkid.java @@ -1,19 +1,17 @@ package ru.vtosters.lite.proxy.https; -import static ru.vtosters.lite.proxy.GithubList.getProxy; -import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; -import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; - import android.util.Log; - import com.vtosters.lite.R; +import ru.vtosters.lite.proxy.RandomProxy; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.Preferences; import java.io.IOException; import java.util.ArrayList; -import ru.vtosters.lite.proxy.RandomProxy; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.Preferences; +import static ru.vtosters.lite.proxy.GithubList.getProxy; +import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; +import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; public class Roosterkid { private static final String TAG = "Roosterkid_Https"; diff --git a/app/src/main/java/ru/vtosters/lite/proxy/socks/Hookzof.java b/app/src/main/java/ru/vtosters/lite/proxy/socks/Hookzof.java index 22a44c01f..aaa8b6492 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/socks/Hookzof.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/socks/Hookzof.java @@ -1,19 +1,17 @@ package ru.vtosters.lite.proxy.socks; -import static ru.vtosters.lite.proxy.GithubList.getProxy; -import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; -import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; - import android.util.Log; - import com.vtosters.lite.R; +import ru.vtosters.lite.proxy.RandomProxy; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.Preferences; import java.io.IOException; import java.util.ArrayList; -import ru.vtosters.lite.proxy.RandomProxy; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.Preferences; +import static ru.vtosters.lite.proxy.GithubList.getProxy; +import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; +import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; public class Hookzof { private static final String TAG = "Hookzof_Socks"; diff --git a/app/src/main/java/ru/vtosters/lite/proxy/socks/Jetkai.java b/app/src/main/java/ru/vtosters/lite/proxy/socks/Jetkai.java index c42595f9b..b36624b2e 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/socks/Jetkai.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/socks/Jetkai.java @@ -1,19 +1,17 @@ package ru.vtosters.lite.proxy.socks; -import static ru.vtosters.lite.proxy.GithubList.getProxy; -import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; -import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; - import android.util.Log; - import com.vtosters.lite.R; +import ru.vtosters.lite.proxy.RandomProxy; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.Preferences; import java.io.IOException; import java.util.ArrayList; -import ru.vtosters.lite.proxy.RandomProxy; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.Preferences; +import static ru.vtosters.lite.proxy.GithubList.getProxy; +import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; +import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; public class Jetkai { private static final String TAG = "Jetkai_Socks"; diff --git a/app/src/main/java/ru/vtosters/lite/proxy/socks/Roosterkid.java b/app/src/main/java/ru/vtosters/lite/proxy/socks/Roosterkid.java index 03b4a15f8..7c61aca9d 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/socks/Roosterkid.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/socks/Roosterkid.java @@ -1,19 +1,17 @@ package ru.vtosters.lite.proxy.socks; -import static ru.vtosters.lite.proxy.GithubList.getProxy; -import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; -import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; - import android.util.Log; - import com.vtosters.lite.R; +import ru.vtosters.lite.proxy.RandomProxy; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.Preferences; import java.io.IOException; import java.util.ArrayList; -import ru.vtosters.lite.proxy.RandomProxy; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.Preferences; +import static ru.vtosters.lite.proxy.GithubList.getProxy; +import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; +import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; public class Roosterkid { private static final String TAG = "Roosterkid_Socks"; diff --git a/app/src/main/java/ru/vtosters/lite/proxy/socks/TheSpeedX.java b/app/src/main/java/ru/vtosters/lite/proxy/socks/TheSpeedX.java index 29c3d63be..0098049c5 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/socks/TheSpeedX.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/socks/TheSpeedX.java @@ -1,19 +1,17 @@ package ru.vtosters.lite.proxy.socks; -import static ru.vtosters.lite.proxy.GithubList.getProxy; -import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; -import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; - import android.util.Log; - import com.vtosters.lite.R; +import ru.vtosters.lite.proxy.RandomProxy; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.Preferences; import java.io.IOException; import java.util.ArrayList; -import ru.vtosters.lite.proxy.RandomProxy; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.Preferences; +import static ru.vtosters.lite.proxy.GithubList.getProxy; +import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; +import static ru.vtosters.lite.proxy.ProxyUtils.hasProxy; public class TheSpeedX { private static final String TAG = "TheSpeedX_Socks"; diff --git a/app/src/main/java/ru/vtosters/lite/services/LogWriterService.java b/app/src/main/java/ru/vtosters/lite/services/LogWriterService.java index 8eeefe58e..bc13792f9 100644 --- a/app/src/main/java/ru/vtosters/lite/services/LogWriterService.java +++ b/app/src/main/java/ru/vtosters/lite/services/LogWriterService.java @@ -1,9 +1,5 @@ package ru.vtosters.lite.services; -import static android.widget.Toast.LENGTH_SHORT; -import static android.widget.Toast.makeText; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; - import android.app.NotificationManager; import android.app.Service; import android.content.Context; @@ -11,10 +7,9 @@ import android.content.Intent; import android.os.Environment; import android.os.IBinder; import android.util.Log; - import androidx.annotation.Nullable; - import com.vtosters.lite.R; +import ru.vtosters.lite.utils.AndroidUtils; import java.io.File; import java.io.FileOutputStream; @@ -24,7 +19,9 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; -import ru.vtosters.lite.utils.AndroidUtils; +import static android.widget.Toast.LENGTH_SHORT; +import static android.widget.Toast.makeText; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; public class LogWriterService extends Service { public LogWriterService() { diff --git a/app/src/main/java/ru/vtosters/lite/ssfs/ImBanner.java b/app/src/main/java/ru/vtosters/lite/ssfs/ImBanner.java index 11029fd8e..c2173aa3e 100644 --- a/app/src/main/java/ru/vtosters/lite/ssfs/ImBanner.java +++ b/app/src/main/java/ru/vtosters/lite/ssfs/ImBanner.java @@ -2,10 +2,10 @@ package ru.vtosters.lite.ssfs; import android.util.Log; import com.vk.core.dialogs.alert.VkAlertDialog; +import com.vtosters.lite.R; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; -import com.vtosters.lite.R; import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.LifecycleUtils; import ru.vtosters.lite.utils.Preferences; diff --git a/app/src/main/java/ru/vtosters/lite/tgs/TGPref.java b/app/src/main/java/ru/vtosters/lite/tgs/TGPref.java index d54c3f704..18cb36cf1 100644 --- a/app/src/main/java/ru/vtosters/lite/tgs/TGPref.java +++ b/app/src/main/java/ru/vtosters/lite/tgs/TGPref.java @@ -1,10 +1,10 @@ package ru.vtosters.lite.tgs; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; - import android.content.SharedPreferences; import android.preference.PreferenceManager; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; + public class TGPref { private static final SharedPreferences Prefs = PreferenceManager.getDefaultSharedPreferences(getGlobalContext()); diff --git a/app/src/main/java/ru/vtosters/lite/themes/ThemesCore.java b/app/src/main/java/ru/vtosters/lite/themes/ThemesCore.java index b83c9cccf..f34b82fd4 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/ThemesCore.java +++ b/app/src/main/java/ru/vtosters/lite/themes/ThemesCore.java @@ -167,7 +167,8 @@ public class ThemesCore { if (Preferences.getBoolValue("logColors", false)) { try { Log.d(TAG, "Requesting color by attr " + context.getResources().getResourceName(attrID)); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } } if (isCachedAccents()) { diff --git a/app/src/main/java/ru/vtosters/lite/themes/ThemesHacks.java b/app/src/main/java/ru/vtosters/lite/themes/ThemesHacks.java index 049d65005..0da42787f 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/ThemesHacks.java +++ b/app/src/main/java/ru/vtosters/lite/themes/ThemesHacks.java @@ -27,7 +27,8 @@ public class ThemesHacks { if (Preferences.getBoolValue("logColors", false)) { try { Log.d("ThemesCore", "Requesting color by color " + context.getResources().getResourceName(color)); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } } if (ThemesCore.isCachedAccents() && ColorReferences.isAccentedColor(context.getResources().getColor(color))) { diff --git a/app/src/main/java/ru/vtosters/lite/themes/ThemesManager.java b/app/src/main/java/ru/vtosters/lite/themes/ThemesManager.java index 0ec463ab5..4aeb5236e 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/ThemesManager.java +++ b/app/src/main/java/ru/vtosters/lite/themes/ThemesManager.java @@ -8,7 +8,6 @@ import com.google.devrel.gmscore.tools.apk.arsc.BinaryResourceFile; import com.vtosters.lite.R; import ru.vtosters.lite.themes.loaders.ResourcesLoader; import ru.vtosters.lite.themes.utils.ArscEditor; -import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.IOUtils; import ru.vtosters.lite.utils.Preferences; import ru.vtosters.lite.utils.ThemesUtils; @@ -125,13 +124,13 @@ public class ThemesManager { ResourcesLoader.load(app, modApk.getAbsolutePath(), false); } } catch (Exception e) { - Log.e("ThemesManager", e+""); + Log.e("ThemesManager", String.valueOf(e)); } } // validate modded apk before loading private static void validateModApk() - throws IOException { + throws IOException { final var apk = new ZipFile(modApk); apk.close(); @@ -155,18 +154,18 @@ public class ThemesManager { } public static void generateModApk(int accentColor) - throws Throwable { - try( - final var apk = new ZipFile(baseApkPath) + throws Throwable { + try ( + final var apk = new ZipFile(baseApkPath) ) { final var arscEntry = apk.getEntry("resources.arsc"); final var arscBis = new BufferedInputStream(apk.getInputStream(arscEntry)); final var arsc = BinaryResourceFile.fromInputStream(arscBis); - if(!ArscEditor.changeColors(arsc, ACCENT_COLORS, accentColor)) + if (!ArscEditor.changeColors(arsc, ACCENT_COLORS, accentColor)) throw new IllegalStateException("Not all colors have been changed"); - try( - final var zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(modApk))) + try ( + final var zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(modApk))) ) { final var arscBuff = arsc.toByteArray(); final var newArscEntry = new ZipEntry("resources.arsc"); @@ -183,24 +182,25 @@ public class ThemesManager { zos.closeEntry(); final var entries = apk.entries(); - while(entries.hasMoreElements()) { + while (entries.hasMoreElements()) { final var entry = entries.nextElement(); final var name = entry.getName(); - if(!name.startsWith("res/") && !name.startsWith("assets/") || name.equals("resources.arsc")) continue; + if (!name.startsWith("res/") && !name.startsWith("assets/") || name.equals("resources.arsc")) + continue; var doNotCompress = false; - for(var suffix : DO_NOT_COMPRESS) { - if(name.endsWith(suffix)) { - doNotCompress = true; - break; - } + for (var suffix : DO_NOT_COMPRESS) { + if (name.endsWith(suffix)) { + doNotCompress = true; + break; + } } final var entryBis = new BufferedInputStream(apk.getInputStream(entry)); final var newEntry = new ZipEntry(name); - if(doNotCompress) { + if (doNotCompress) { newEntry.setMethod(ZipEntry.STORED); newEntry.setSize(entry.getSize()); newEntry.setCrc(entry.getCrc()); diff --git a/app/src/main/java/ru/vtosters/lite/themes/ViewInjector.java b/app/src/main/java/ru/vtosters/lite/themes/ViewInjector.java index dd8002378..d0e5a4f71 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/ViewInjector.java +++ b/app/src/main/java/ru/vtosters/lite/themes/ViewInjector.java @@ -2,19 +2,11 @@ package ru.vtosters.lite.themes; import android.view.View; import android.view.ViewGroup; +import ru.vtosters.lite.themes.hooks.*; +import ru.vtosters.lite.utils.ThemesUtils; import java.util.ArrayList; -import ru.vtosters.lite.themes.hooks.BaseHook; -import ru.vtosters.lite.themes.hooks.ButtonHook; -import ru.vtosters.lite.themes.hooks.ImageViewHook; -import ru.vtosters.lite.themes.hooks.ProgressWheelHook; -import ru.vtosters.lite.themes.hooks.TabLayoutHook; -import ru.vtosters.lite.themes.hooks.TextViewHook; -import ru.vtosters.lite.themes.hooks.ToolbarHook; -import ru.vtosters.lite.themes.hooks.VKImageViewHook; -import ru.vtosters.lite.utils.ThemesUtils; - public class ViewInjector { public static ArrayList hooks = new ArrayList<>(); diff --git a/app/src/main/java/ru/vtosters/lite/themes/hooks/ButtonHook.java b/app/src/main/java/ru/vtosters/lite/themes/hooks/ButtonHook.java index 1dec07232..c3d915558 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/hooks/ButtonHook.java +++ b/app/src/main/java/ru/vtosters/lite/themes/hooks/ButtonHook.java @@ -3,7 +3,6 @@ package ru.vtosters.lite.themes.hooks; import android.content.res.ColorStateList; import android.view.View; import android.widget.Button; - import ru.vtosters.lite.themes.ColorReferences; import ru.vtosters.lite.utils.ThemesUtils; diff --git a/app/src/main/java/ru/vtosters/lite/themes/hooks/ImageViewHook.java b/app/src/main/java/ru/vtosters/lite/themes/hooks/ImageViewHook.java index b9b88ef8a..59cf0dd0c 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/hooks/ImageViewHook.java +++ b/app/src/main/java/ru/vtosters/lite/themes/hooks/ImageViewHook.java @@ -3,7 +3,6 @@ package ru.vtosters.lite.themes.hooks; import android.content.res.ColorStateList; import android.view.View; import android.widget.ImageView; - import ru.vtosters.lite.themes.ColorReferences; import ru.vtosters.lite.themes.ThemesCore; import ru.vtosters.lite.utils.ThemesUtils; diff --git a/app/src/main/java/ru/vtosters/lite/themes/hooks/ProgressWheelHook.java b/app/src/main/java/ru/vtosters/lite/themes/hooks/ProgressWheelHook.java index 01da24ac2..6a0f78f5d 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/hooks/ProgressWheelHook.java +++ b/app/src/main/java/ru/vtosters/lite/themes/hooks/ProgressWheelHook.java @@ -1,9 +1,7 @@ package ru.vtosters.lite.themes.hooks; import android.view.View; - import com.pnikosis.materialishprogress.ProgressWheel; - import ru.vtosters.lite.themes.ThemesCore; import ru.vtosters.lite.utils.ThemesUtils; diff --git a/app/src/main/java/ru/vtosters/lite/themes/hooks/TabLayoutHook.java b/app/src/main/java/ru/vtosters/lite/themes/hooks/TabLayoutHook.java index c85402c26..764c34737 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/hooks/TabLayoutHook.java +++ b/app/src/main/java/ru/vtosters/lite/themes/hooks/TabLayoutHook.java @@ -2,9 +2,7 @@ package ru.vtosters.lite.themes.hooks; import android.content.res.ColorStateList; import android.view.View; - import com.vk.core.view.VKTabLayout; - import ru.vtosters.lite.utils.ThemesUtils; diff --git a/app/src/main/java/ru/vtosters/lite/themes/hooks/TextViewHook.java b/app/src/main/java/ru/vtosters/lite/themes/hooks/TextViewHook.java index 7bc1bb9a9..8ed223f37 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/hooks/TextViewHook.java +++ b/app/src/main/java/ru/vtosters/lite/themes/hooks/TextViewHook.java @@ -6,15 +6,11 @@ import android.os.Build; import android.view.View; import android.widget.EditText; import android.widget.TextView; - import androidx.appcompat.widget.AppCompatCheckedTextView; - -import com.vk.core.extensions.EditTextExt; import com.vk.core.view.OverlayTextView; import com.vk.core.view.TintTextView; import com.vk.core.view.links.LinkedTextView; import com.vtosters.lite.R; - import ru.vtosters.lite.themes.ColorReferences; import ru.vtosters.lite.themes.ThemesHacks; import ru.vtosters.lite.themes.utils.VkUiThemer; @@ -24,6 +20,26 @@ public class TextViewHook implements BaseHook { private static final String TAG = "TextViewHook"; + public static boolean eligibleForStartTinting(TintTextView view) { + return ColorReferences.isAccentedColor(view.getTextColors()) || view.getTextColors().getDefaultColor() == ThemesUtils.getAccentColor(); + } + + public static boolean eligibleForStartTintingMuted(TintTextView view) { + return ColorReferences.isMutedAccentedColor(view.getTextColors()) || view.getTextColors().getDefaultColor() == ThemesUtils.getMutedAccentColor(); + } + + public static boolean eligibleForTinting(int id) { + return !ThemesUtils.isDarkTheme() && (id == R.id.attach_title || id == R.id.post_retweet_name); + } + + public static boolean isPositiveButton(View view) { + return !ThemesUtils.isDarkTheme() && (view.getId() == R.id.positive || view.getId() == R.id.positive_button); + } + + public static boolean isVkUiButton(View view) { + return !ThemesUtils.isDarkTheme() && (view.getId() == R.id.empty_button || view.getId() == R.id.button); + } + @SuppressLint("RestrictedApi") @Override public void inject(View view, int i, boolean z) { @@ -112,25 +128,5 @@ public class TextViewHook implements BaseHook { ThemesHacks.fixThemedFeed(textView, i); } } - - public static boolean eligibleForStartTinting(TintTextView view) { - return ColorReferences.isAccentedColor(view.getTextColors()) || view.getTextColors().getDefaultColor() == ThemesUtils.getAccentColor(); - } - - public static boolean eligibleForStartTintingMuted(TintTextView view) { - return ColorReferences.isMutedAccentedColor(view.getTextColors()) || view.getTextColors().getDefaultColor() == ThemesUtils.getMutedAccentColor(); - } - - public static boolean eligibleForTinting(int id) { - return !ThemesUtils.isDarkTheme() && (id == R.id.attach_title || id == R.id.post_retweet_name); - } - - public static boolean isPositiveButton(View view) { - return !ThemesUtils.isDarkTheme() && (view.getId() == R.id.positive || view.getId() == R.id.positive_button); - } - - public static boolean isVkUiButton(View view) { - return !ThemesUtils.isDarkTheme() && (view.getId() == R.id.empty_button || view.getId() == R.id.button); - } } diff --git a/app/src/main/java/ru/vtosters/lite/themes/hooks/VKImageViewHook.java b/app/src/main/java/ru/vtosters/lite/themes/hooks/VKImageViewHook.java index eb3133a7e..52eabf6bf 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/hooks/VKImageViewHook.java +++ b/app/src/main/java/ru/vtosters/lite/themes/hooks/VKImageViewHook.java @@ -4,14 +4,13 @@ import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.view.View; - import com.vk.imageloader.view.VKImageView; - import ru.vtosters.lite.themes.utils.RecolorUtils; import ru.vtosters.lite.utils.ThemesUtils; public class VKImageViewHook implements BaseHook { - private static Paint paint = new Paint(); + private static final Paint paint = new Paint(); + static { paint.setColorFilter(new PorterDuffColorFilter(ThemesUtils.getAccentColor(), PorterDuff.Mode.SRC_IN)); } diff --git a/app/src/main/java/ru/vtosters/lite/themes/utils/RecolorUtils.java b/app/src/main/java/ru/vtosters/lite/themes/utils/RecolorUtils.java index 40b3f1c06..991bd7406 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/utils/RecolorUtils.java +++ b/app/src/main/java/ru/vtosters/lite/themes/utils/RecolorUtils.java @@ -9,7 +9,6 @@ import android.graphics.drawable.Drawable; import android.os.Build; import android.widget.TextView; import com.vk.core.drawable.RecoloredDrawable; -import ru.vtosters.lite.R; import ru.vtosters.lite.themes.ColorReferences; import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.ThemesUtils; diff --git a/app/src/main/java/ru/vtosters/lite/themes/utils/VkUiThemer.java b/app/src/main/java/ru/vtosters/lite/themes/utils/VkUiThemer.java index d471fe84a..db93f58eb 100644 --- a/app/src/main/java/ru/vtosters/lite/themes/utils/VkUiThemer.java +++ b/app/src/main/java/ru/vtosters/lite/themes/utils/VkUiThemer.java @@ -1,14 +1,9 @@ package ru.vtosters.lite.themes.utils; import android.content.res.ColorStateList; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.DrawableContainer; -import android.graphics.drawable.GradientDrawable; -import android.graphics.drawable.RippleDrawable; -import android.graphics.drawable.StateListDrawable; +import android.graphics.drawable.*; import android.os.Build; import android.widget.TextView; - import ru.vtosters.lite.themes.ColorReferences; import ru.vtosters.lite.utils.ThemesUtils; diff --git a/app/src/main/java/ru/vtosters/lite/translators/BaseTranslator.java b/app/src/main/java/ru/vtosters/lite/translators/BaseTranslator.java index 07a994b18..5096e8d9f 100644 --- a/app/src/main/java/ru/vtosters/lite/translators/BaseTranslator.java +++ b/app/src/main/java/ru/vtosters/lite/translators/BaseTranslator.java @@ -1,14 +1,12 @@ package ru.vtosters.lite.translators; -import static ru.vtosters.lite.utils.Preferences.getPreferences; - import androidx.annotation.NonNull; import androidx.collection.LruCache; +import ru.vtosters.lite.utils.Preferences; import java.util.Locale; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.Preferences; +import static ru.vtosters.lite.utils.Preferences.getPreferences; public abstract class BaseTranslator { diff --git a/app/src/main/java/ru/vtosters/lite/translators/DeepLTranslator.java b/app/src/main/java/ru/vtosters/lite/translators/DeepLTranslator.java index 76e086704..115760963 100644 --- a/app/src/main/java/ru/vtosters/lite/translators/DeepLTranslator.java +++ b/app/src/main/java/ru/vtosters/lite/translators/DeepLTranslator.java @@ -2,22 +2,19 @@ package ru.vtosters.lite.translators; import android.text.TextUtils; import android.util.Log; - import androidx.annotation.NonNull; - +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; import org.json.JSONObject; +import ru.vtosters.lite.di.singleton.VtOkHttpClient; import java.nio.charset.StandardCharsets; import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; import java.util.regex.Pattern; -import okhttp3.MediaType; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import ru.vtosters.lite.di.singleton.VtOkHttpClient; - public class DeepLTranslator extends BaseTranslator { private static final OkHttpClient client = VtOkHttpClient.getInstance(); @@ -130,7 +127,7 @@ public class DeepLTranslator extends BaseTranslator { return text; } catch (Throwable e) { - Log.d("DeepL", e + ""); + Log.d("DeepL", String.valueOf(e)); } return text; } diff --git a/app/src/main/java/ru/vtosters/lite/translators/GoogleTranslator.java b/app/src/main/java/ru/vtosters/lite/translators/GoogleTranslator.java index d15b71342..584e6a8a9 100644 --- a/app/src/main/java/ru/vtosters/lite/translators/GoogleTranslator.java +++ b/app/src/main/java/ru/vtosters/lite/translators/GoogleTranslator.java @@ -1,17 +1,14 @@ package ru.vtosters.lite.translators; import android.text.TextUtils; - import androidx.annotation.NonNull; - -import org.json.JSONObject; - -import java.net.URLEncoder; - import okhttp3.OkHttpClient; import okhttp3.Request; +import org.json.JSONObject; import ru.vtosters.lite.di.singleton.VtOkHttpClient; +import java.net.URLEncoder; + public class GoogleTranslator extends BaseTranslator { private static final OkHttpClient client = VtOkHttpClient.getInstance(); diff --git a/app/src/main/java/ru/vtosters/lite/translators/YandexTranslator.java b/app/src/main/java/ru/vtosters/lite/translators/YandexTranslator.java index 2a0ab534a..0a734d5ec 100644 --- a/app/src/main/java/ru/vtosters/lite/translators/YandexTranslator.java +++ b/app/src/main/java/ru/vtosters/lite/translators/YandexTranslator.java @@ -1,20 +1,17 @@ package ru.vtosters.lite.translators; import android.util.Log; - import androidx.annotation.NonNull; - -import org.json.JSONObject; - -import java.net.URLEncoder; -import java.util.UUID; - import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; +import org.json.JSONObject; import ru.vtosters.lite.di.singleton.VtOkHttpClient; +import java.net.URLEncoder; +import java.util.UUID; + public class YandexTranslator extends BaseTranslator { private static final OkHttpClient client = VtOkHttpClient.getInstance(); diff --git a/app/src/main/java/ru/vtosters/lite/ui/PreferenceFragmentUtils.java b/app/src/main/java/ru/vtosters/lite/ui/PreferenceFragmentUtils.java index 3c735a425..0ebddbeb6 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/PreferenceFragmentUtils.java +++ b/app/src/main/java/ru/vtosters/lite/ui/PreferenceFragmentUtils.java @@ -53,8 +53,8 @@ public class PreferenceFragmentUtils { CharSequence[] entriesValue, Preference.OnPreferenceChangeListener listener ) { - var icon = iconRes > 0 - ? ImageUtils.setTint(screen.getContext(), ContextCompat.getDrawable(screen.getContext(), iconRes)) + var icon = iconRes > 0 + ? ImageUtils.setTint(screen.getContext(), ContextCompat.getDrawable(screen.getContext(), iconRes)) : null; var title = titleRes > 0 ? screen.getContext().getString(titleRes) @@ -84,15 +84,15 @@ public class PreferenceFragmentUtils { } public static ListPreference addListPreference( - PreferenceScreen screen, - String key, - String def, - CharSequence title, - @Nullable Drawable icon, - CharSequence summary, - CharSequence[] entries, - CharSequence[] entriesValue, - Preference.OnPreferenceChangeListener listener + PreferenceScreen screen, + String key, + String def, + CharSequence title, + @Nullable Drawable icon, + CharSequence summary, + CharSequence[] entries, + CharSequence[] entriesValue, + Preference.OnPreferenceChangeListener listener ) { ListPreference preference = new ListPreference(screen.getContext()); preference.setEntries(entries); @@ -155,8 +155,8 @@ public class PreferenceFragmentUtils { boolean defValue, Preference.OnPreferenceChangeListener listener ) { - var icon = iconRes > 0 - ? ImageUtils.setTint(screen.getContext(), ContextCompat.getDrawable(screen.getContext(), iconRes)) + var icon = iconRes > 0 + ? ImageUtils.setTint(screen.getContext(), ContextCompat.getDrawable(screen.getContext(), iconRes)) : null; return addMaterialSwitchPreference(screen, key, title, summary, icon, defValue, listener); } diff --git a/app/src/main/java/ru/vtosters/lite/ui/activities/APKInstallActivity.java b/app/src/main/java/ru/vtosters/lite/ui/activities/APKInstallActivity.java index 20bbffe02..60092bc71 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/activities/APKInstallActivity.java +++ b/app/src/main/java/ru/vtosters/lite/ui/activities/APKInstallActivity.java @@ -8,9 +8,7 @@ import android.os.Build; import android.os.Bundle; import android.provider.Settings; import android.widget.Toast; - import androidx.appcompat.app.AppCompatActivity; - import com.vtosters.lite.R; public class APKInstallActivity extends AppCompatActivity { diff --git a/app/src/main/java/ru/vtosters/lite/ui/activities/VKAdminTokenActivity.java b/app/src/main/java/ru/vtosters/lite/ui/activities/VKAdminTokenActivity.java index b6c9ec28b..4b92706f4 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/activities/VKAdminTokenActivity.java +++ b/app/src/main/java/ru/vtosters/lite/ui/activities/VKAdminTokenActivity.java @@ -1,7 +1,5 @@ package ru.vtosters.lite.ui.activities; -import static ru.vtosters.lite.proxy.ProxyUtils.getOauth; - import android.app.Activity; import android.content.Intent; import android.net.Uri; @@ -10,15 +8,15 @@ import android.webkit.WebResourceRequest; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.FrameLayout; - import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; +import ru.vtosters.lite.utils.LayoutUtils; import java.net.URLDecoder; import java.util.HashMap; import java.util.Map; -import ru.vtosters.lite.utils.LayoutUtils; +import static ru.vtosters.lite.proxy.ProxyUtils.getOauth; public class VKAdminTokenActivity extends AppCompatActivity { diff --git a/app/src/main/java/ru/vtosters/lite/ui/adapters/CategorizedAdapter.java b/app/src/main/java/ru/vtosters/lite/ui/adapters/CategorizedAdapter.java index e24e7bc0c..09e9d48d8 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/adapters/CategorizedAdapter.java +++ b/app/src/main/java/ru/vtosters/lite/ui/adapters/CategorizedAdapter.java @@ -13,6 +13,7 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.vtosters.lite.R; import ru.vtosters.lite.ui.components.IItemMovingListener; +import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.LayoutUtils; import ru.vtosters.lite.utils.ThemesUtils; @@ -20,10 +21,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import static ru.vtosters.lite.utils.AndroidUtils.dp2px; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; - -public class CategorizedAdapter< T > extends RecyclerView.Adapter< CategorizedAdapter.CategorizedViewHolder > implements IItemMovingListener { +public class CategorizedAdapter extends RecyclerView.Adapter implements IItemMovingListener { // Adapter item types public static final int MOVING_ITEM = -0x1; @@ -34,16 +32,16 @@ public class CategorizedAdapter< T > extends RecyclerView.Adapter< CategorizedAd public static final int DISABLED_STATE = -0x2; // Data of items - private final List< T > mSelectedItems; - private final List< T > mDisabledItems; - private final List< T > mUnmovedItems; + private final List mSelectedItems; + private final List mDisabledItems; + private final List mUnmovedItems; private final IViewHolderBinder mBinder; // Min and max counts private int mMinSelectedItems = -1; private int mMaxSelectedItems = -1; - public CategorizedAdapter(List< T > selectedItems, List< T > disabledItems, IViewHolderBinder binder) { + public CategorizedAdapter(List selectedItems, List disabledItems, IViewHolderBinder binder) { this.mSelectedItems = selectedItems; this.mDisabledItems = disabledItems; this.mUnmovedItems = new ArrayList<>(); @@ -69,16 +67,16 @@ public class CategorizedAdapter< T > extends RecyclerView.Adapter< CategorizedAd public boolean isUnmovedItem(int index) { return getItemViewType(index) == MOVING_ITEM - && mUnmovedItems.contains( - getTabType(index) == SELECTED_STATE - ? mSelectedItems.get(index - 1) - : mDisabledItems.get(index - mSelectedItems.size() - 2)); + && mUnmovedItems.contains( + getTabType(index) == SELECTED_STATE + ? mSelectedItems.get(index - 1) + : mDisabledItems.get(index - mSelectedItems.size() - 2)); } @NonNull @Override public CategorizedViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { - FrameLayout container = new FrameLayout(getGlobalContext()); + FrameLayout container = new FrameLayout(AndroidUtils.getGlobalContext()); container.addView(newCategoryTitle(), LayoutUtils.createFrame(-1, -2)); container.addView(newMovingItem(), LayoutUtils.createFrame(-1, -2)); container.setLayoutParams(LayoutUtils.createFrame(-1, -2)); @@ -86,54 +84,54 @@ public class CategorizedAdapter< T > extends RecyclerView.Adapter< CategorizedAd } private View newMovingItem() { - var container = new LinearLayout(getGlobalContext()); + var container = new LinearLayout(AndroidUtils.getGlobalContext()); container.setId(R.id.container); container.setGravity(Gravity.CENTER_VERTICAL); container.setOrientation(LinearLayout.HORIZONTAL); container.setPadding( - dp2px(12), - dp2px(12), - dp2px(12), - dp2px(12) + AndroidUtils.dp2px(12), + AndroidUtils.dp2px(12), + AndroidUtils.dp2px(12), + AndroidUtils.dp2px(12) ); - container.setLayoutParams(LayoutUtils.createLinear(-1, dp2px(48))); + container.setLayoutParams(LayoutUtils.createLinear(-1, AndroidUtils.dp2px(48))); container.setVisibility(View.INVISIBLE); - var icon = new ImageView(getGlobalContext()); + var icon = new ImageView(AndroidUtils.getGlobalContext()); icon.setId(R.id.icon); icon.setImageTintList(ColorStateList.valueOf(ThemesUtils.getAccentColor())); icon.setLayoutParams(new LinearLayout.LayoutParams( - dp2px(24), - dp2px(24))); + AndroidUtils.dp2px(24), + AndroidUtils.dp2px(24))); container.addView(icon); - var name = new TextView(getGlobalContext()); + var name = new TextView(AndroidUtils.getGlobalContext()); name.setId(R.id.name); name.setTextSize(16.0f); name.setTypeface(Typeface.DEFAULT_BOLD); name.setTextColor(ThemesUtils.getTextAttr()); var params = LayoutUtils.createLinear(-1, -2); params.weight = 1; - params.leftMargin = dp2px(16); + params.leftMargin = AndroidUtils.dp2px(16); container.addView(name, params); return container; } private View newCategoryTitle() { - var container = new LinearLayout(getGlobalContext()); + var container = new LinearLayout(AndroidUtils.getGlobalContext()); container.setId(R.id.title_container); container.setLayoutParams(LayoutUtils.createLinear(-1, -2)); container.setVisibility(View.INVISIBLE); - var title = new TextView(getGlobalContext()); + var title = new TextView(AndroidUtils.getGlobalContext()); title.setId(R.id.title); title.setTextSize(13.0f); title.setPadding( - dp2px(16), - dp2px(13), - dp2px(16), - dp2px(13) + AndroidUtils.dp2px(16), + AndroidUtils.dp2px(13), + AndroidUtils.dp2px(16), + AndroidUtils.dp2px(13) ); title.setAllCaps(true); title.setTextColor(ThemesUtils.getTextAttr()); @@ -144,7 +142,7 @@ public class CategorizedAdapter< T > extends RecyclerView.Adapter< CategorizedAd @Override public void onBindViewHolder(@NonNull CategorizedViewHolder viewHolder, int i) { - if(getItemViewType(i) == MOVING_ITEM) + if (getItemViewType(i) == MOVING_ITEM) mBinder.bind(viewHolder, i); else viewHolder.bindCategory(i == 0); @@ -157,9 +155,9 @@ public class CategorizedAdapter< T > extends RecyclerView.Adapter< CategorizedAd @Override public void onItemDismiss(int index) { - if(getItemViewType(index) == MOVING_ITEM) { + if (getItemViewType(index) == MOVING_ITEM) { int to; - if(getTabType(index) == SELECTED_STATE) { + if (getTabType(index) == SELECTED_STATE) { mDisabledItems.add(0, mSelectedItems.remove(index - 1)); to = mSelectedItems.size() + 2; } else { @@ -173,7 +171,7 @@ public class CategorizedAdapter< T > extends RecyclerView.Adapter< CategorizedAd @Override public boolean onItemMove(int fromPosition, int toPosition) { - if(toPosition == 0 || isUnmovedItem(toPosition)) + if (toPosition == 0 || isUnmovedItem(toPosition)) return false; switch (getTabType(fromPosition)) { @@ -231,7 +229,7 @@ public class CategorizedAdapter< T > extends RecyclerView.Adapter< CategorizedAd } public void bindMovingItem(int iconId, int textId) { - if(iconId != -1) + if (iconId != -1) mIcon.setImageResource(iconId); else mIcon.setVisibility(View.GONE); diff --git a/app/src/main/java/ru/vtosters/lite/ui/adapters/ColorPickerAdapter.java b/app/src/main/java/ru/vtosters/lite/ui/adapters/ColorPickerAdapter.java index 38239838f..e290f34dd 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/adapters/ColorPickerAdapter.java +++ b/app/src/main/java/ru/vtosters/lite/ui/adapters/ColorPickerAdapter.java @@ -6,24 +6,21 @@ import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; - import com.vk.core.drawable.BorderDrawable; import com.vk.core.util.Screen; import com.vk.stories.view.StoryCircleImageView; - -import java.util.List; - import ru.vtosters.lite.themes.items.VTLColor; import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.ThemesUtils; +import java.util.List; + public class ColorPickerAdapter extends RecyclerView.Adapter { - private List mColors; - private OnColorSelectListener mSelectListener; + private final List mColors; + private final OnColorSelectListener mSelectListener; public ColorPickerAdapter(List colors, OnColorSelectListener selectListener) { this.mColors = colors; @@ -48,12 +45,17 @@ public class ColorPickerAdapter extends RecyclerView.Adapter { diff --git a/app/src/main/java/ru/vtosters/lite/ui/adapters/MessagesPreviewAdapter.java b/app/src/main/java/ru/vtosters/lite/ui/adapters/MessagesPreviewAdapter.java index de6e3412d..782db998e 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/adapters/MessagesPreviewAdapter.java +++ b/app/src/main/java/ru/vtosters/lite/ui/adapters/MessagesPreviewAdapter.java @@ -1,27 +1,19 @@ package ru.vtosters.lite.ui.adapters; import android.content.Context; -import android.graphics.ColorFilter; -import android.graphics.ColorMatrixColorFilter; -import android.graphics.PorterDuff; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; - import com.vk.core.widget.BubbleFluidLayout; import com.vk.im.ui.components.viewcontrollers.msg_list.entry.MsgTextBuilder; import com.vk.im.ui.views.msg.MsgPartTextView; -import com.vk.im.ui.views.msg.bubble.MsgBubbleDrawable; import com.vk.im.ui.views.msg.bubble.MsgBubblePart; import com.vk.im.ui.views.msg.bubble.MsgBubbleStyle; import com.vk.im.ui.views.msg.bubble.MsgBubbleView; import com.vtosters.lite.R; -import com.vtosters.lite.m0.ToolbarHelper; - import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.ThemesUtils; diff --git a/app/src/main/java/ru/vtosters/lite/ui/components/BackupManager.java b/app/src/main/java/ru/vtosters/lite/ui/components/BackupManager.java index 7ecdfbc7f..c6032c8ff 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/components/BackupManager.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/BackupManager.java @@ -1,35 +1,29 @@ package ru.vtosters.lite.ui.components; -import static android.os.Environment.DIRECTORY_DOWNLOADS; -import static android.os.Environment.getExternalStoragePublicDirectory; -import static android.widget.Toast.LENGTH_LONG; -import static android.widget.Toast.LENGTH_SHORT; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; - import android.content.Context; import android.content.SharedPreferences; import android.os.Build; import android.util.Log; import android.widget.Toast; - import com.vtosters.lite.R; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.IOUtils; +import ru.vtosters.lite.utils.LifecycleUtils; +import ru.vtosters.lite.utils.Preferences; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashSet; -import java.util.Locale; -import java.util.Scanner; -import java.util.Set; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.IOUtils; -import ru.vtosters.lite.utils.LifecycleUtils; -import ru.vtosters.lite.utils.Preferences; +import static android.os.Environment.DIRECTORY_DOWNLOADS; +import static android.os.Environment.getExternalStoragePublicDirectory; +import static android.widget.Toast.LENGTH_LONG; +import static android.widget.Toast.LENGTH_SHORT; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; public class BackupManager { @@ -74,7 +68,7 @@ public class BackupManager { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { LifecycleUtils.getCurrentActivity().requestPermissions(new String[]{"android.permission.WRITE_EXTERNAL_STORAGE"}, 228); } - + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd.HH-mm-ss", Locale.getDefault()); var file = new File(sBackupDir, "Backup_" + dateFormat.format(new Date()) + ".xml"); diff --git a/app/src/main/java/ru/vtosters/lite/ui/components/CrashReporter.java b/app/src/main/java/ru/vtosters/lite/ui/components/CrashReporter.java index 6550f74f5..d7c7e9533 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/components/CrashReporter.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/CrashReporter.java @@ -1,28 +1,21 @@ package ru.vtosters.lite.ui.components; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; - import android.annotation.SuppressLint; -import android.app.Activity; -import android.app.Notification; -import android.app.NotificationChannel; -import android.app.NotificationManager; -import android.app.PendingIntent; +import android.app.*; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.util.Log; - import com.vtosters.lite.R; +import ru.vtosters.lite.deviceinfo.DeviceInfoCollector; +import ru.vtosters.lite.services.LogWriterService; +import ru.vtosters.lite.utils.AndroidUtils; import java.io.PrintWriter; import java.io.StringWriter; -import ru.vtosters.lite.deviceinfo.DeviceInfoCollector; -import ru.vtosters.lite.services.LogWriterService; -import ru.vtosters.lite.utils.AnalyticsHelper; -import ru.vtosters.lite.utils.AndroidUtils; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; public class CrashReporter { protected static String logString; diff --git a/app/src/main/java/ru/vtosters/lite/ui/components/DockBarEditorManager.java b/app/src/main/java/ru/vtosters/lite/ui/components/DockBarEditorManager.java index 2504a441e..ed8b03f5a 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/components/DockBarEditorManager.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/DockBarEditorManager.java @@ -25,7 +25,6 @@ import com.vtosters.lite.fragments.y2.VideoCatalogFragment; import com.vtosters.lite.general.fragments.GamesFragment; import com.vtosters.lite.general.fragments.PhotosFragment; import ru.vtosters.lite.ui.items.DockBarTab; -import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.Preferences; import java.io.File; @@ -40,15 +39,15 @@ public class DockBarEditorManager { public static final int MIN_SELECTED_TABS = 3; public static final int MAX_SELECTED_TABS = 9; - private static final List< String > ALL_TAGS = Arrays.asList( + private static final List ALL_TAGS = Arrays.asList( "tab_news", "tab_superapps", "tab_messages", "tab_feedback", "tab_profile", "tab_friends", "tab_groups", "tab_photos", "tab_audios", "tab_videos", "tab_lives", "tab_games", "tab_liked", "tab_fave", "tab_documents", "tab_payments", "tab_settings"); private static DockBarEditorManager sInstance; - private final List< DockBarTab > mSelectedTabs = new ArrayList<>(); - private final List< DockBarTab > mDisabledTabs = new ArrayList<>(); + private final List mSelectedTabs = new ArrayList<>(); + private final List mDisabledTabs = new ArrayList<>(); public DockBarEditorManager() { init(); @@ -61,10 +60,10 @@ public class DockBarEditorManager { } private void init() { - if(vkme()) { + if (vkme()) { mSelectedTabs.add(getTabByTag("tab_settings")); - if(vkme_notifs()) { - if(milkshake()) { + if (vkme_notifs()) { + if (milkshake()) { mSelectedTabs.add(getTabByTag("tab_feedback")); } else { mSelectedTabs.add(getTabByTag("tab_friends")); @@ -86,25 +85,25 @@ public class DockBarEditorManager { private void checkOldConfig() { File config = new File(getGlobalContext().getFilesDir(), "dockbar.json"); - if(config.exists()) config.deleteOnExit(); + if (config.exists()) config.deleteOnExit(); } private void parseSelectedTabs(String[] selectedTabsTags) { var allTags = new ArrayList<>(ALL_TAGS); - for(String tag : selectedTabsTags) { + for (String tag : selectedTabsTags) { mSelectedTabs.add(getTabByTag(tag)); allTags.remove(tag); } - for(String tag : allTags) { + for (String tag : allTags) { mDisabledTabs.add(getTabByTag(tag)); } } public void save() { var sb = new StringBuilder(); - for(DockBarTab tab : mSelectedTabs) + for (DockBarTab tab : mSelectedTabs) sb.append(tab.tag).append(","); getPreferences().edit().putString("dockbar_tabs", sb.toString()).commit(); } @@ -116,11 +115,11 @@ public class DockBarEditorManager { .commit(); } - public List< DockBarTab > getSelectedTabs() { + public List getSelectedTabs() { return mSelectedTabs; } - public List< DockBarTab > getDisabledTabs() { + public List getDisabledTabs() { return mDisabledTabs; } diff --git a/app/src/main/java/ru/vtosters/lite/ui/components/IconManager.java b/app/src/main/java/ru/vtosters/lite/ui/components/IconManager.java index cb0e45f30..6ff5e86b1 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/components/IconManager.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/IconManager.java @@ -70,7 +70,8 @@ public class IconManager { String currentState = "11"; - main: for (int i = 0; i < iconsList.size(); i++) { + main: + for (int i = 0; i < iconsList.size(); i++) { for (int o = 0; o < labelsList.size(); o++) { if (isComponentEnabled("id" + i + o)) { currentState = i + String.valueOf(o); diff --git a/app/src/main/java/ru/vtosters/lite/ui/components/ItemMovingCallback.java b/app/src/main/java/ru/vtosters/lite/ui/components/ItemMovingCallback.java index 4d8a897aa..673691734 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/components/ItemMovingCallback.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/ItemMovingCallback.java @@ -3,7 +3,6 @@ package ru.vtosters.lite.ui.components; import androidx.annotation.NonNull; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.RecyclerView; - import ru.vtosters.lite.ui.adapters.CategorizedAdapter; public class ItemMovingCallback extends ItemTouchHelper.Callback { diff --git a/app/src/main/java/ru/vtosters/lite/ui/components/NewsfeedListManager.java b/app/src/main/java/ru/vtosters/lite/ui/components/NewsfeedListManager.java index f12d297d3..ee3696df6 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/components/NewsfeedListManager.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/NewsfeedListManager.java @@ -1,20 +1,17 @@ package ru.vtosters.lite.ui.components; -import static ru.vtosters.lite.ui.vkui.VBListBuilder.VBListItem; -import static ru.vtosters.lite.ui.vkui.VBListBuilder.buildListOf; -import static ru.vtosters.lite.utils.AndroidUtils.sendToast; - import android.app.Activity; - -import com.vk.core.preference.Preference; import com.vtosters.lite.R; +import ru.vtosters.lite.ui.vkui.VBottomSheetBuilder; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.Preferences; import java.util.ArrayList; import java.util.Collections; -import ru.vtosters.lite.ui.vkui.VBottomSheetBuilder; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.Preferences; +import static ru.vtosters.lite.ui.vkui.VBListBuilder.VBListItem; +import static ru.vtosters.lite.ui.vkui.VBListBuilder.buildListOf; +import static ru.vtosters.lite.utils.AndroidUtils.sendToast; public class NewsfeedListManager { diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/DisableBattery.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/DisableBattery.java index 8d93afaa8..cf4da7d9f 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/DisableBattery.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/DisableBattery.java @@ -17,8 +17,8 @@ public class DisableBattery { public static void alert(Activity activity) { if (!(OEMDetector.isOEM() && Build.VERSION.SDK_INT >= 23 && Preferences.getBoolValue("showDoze", true))) return; - final var packName = activity.getPackageName(); - final var manager = (PowerManager) activity.getSystemService(Context.POWER_SERVICE); + final String packName = activity.getPackageName(); + final PowerManager manager = (PowerManager) activity.getSystemService(Context.POWER_SERVICE); if (manager.isIgnoringBatteryOptimizations(packName)) return; new VkAlertDialog.Builder(activity) .setTitle(R.string.batteryissuetitle) diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/MessageSettings.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/MessageSettings.java index 5fe4a97dd..34c063c39 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/MessageSettings.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/MessageSettings.java @@ -1,24 +1,21 @@ package ru.vtosters.lite.ui.dialogs; -import static ru.vtosters.lite.utils.AndroidUtils.dp2px; -import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; - import android.annotation.SuppressLint; import android.content.Context; import android.util.TypedValue; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.RadioGroup; - import androidx.appcompat.view.ContextThemeWrapper; import androidx.appcompat.widget.SwitchCompat; - import com.vk.core.dialogs.alert.VkAlertDialog; import com.vtosters.lite.R; - import ru.vtosters.lite.hooks.SwitchHook; import ru.vtosters.lite.utils.LayoutUtils; +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; +import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; + public class MessageSettings { public static Boolean isSilentEnabled = false; public static String bombCount = "0"; diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/OTADialog.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/OTADialog.java index d785aaf19..377845f6b 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/OTADialog.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/OTADialog.java @@ -1,20 +1,17 @@ package ru.vtosters.lite.ui.dialogs; import android.app.Activity; - -import android.graphics.Typeface; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; import com.vtosters.lite.R; - import ru.vtosters.lite.downloaders.OTADownloader; import ru.vtosters.lite.ui.vkui.ModalBottomSheetWrapper; import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.OTAUtils; import ru.vtosters.lite.utils.ThemesUtils; -public class OTADialog extends ModalBottomSheetWrapper implements OTAUtils.OTAListener { +public class OTADialog extends ModalBottomSheetWrapper implements OTAUtils.OTAListener { private final Activity mActivity; private final OTAUtils mHelper; @@ -36,17 +33,17 @@ public class OTADialog extends ModalBottomSheetWrapper implements OT mActivity.runOnUiThread(() -> { // Toast.makeText(mActivity, "Обновления найдены", Toast.LENGTH_SHORT).show(); setTitle(mActivity.getString(R.string.newversion) + " " + mHelper.getNewVersionName()) - .setView(makeUpdateInfoView(mHelper.getUpdateDescription())) - .setPositiveButton(mActivity.getString(R.string.updateanddownload), () -> { - OTADownloader.downloadBuild(mHelper.getDownloadUrl(), mHelper.getCommitSHA()); - }) - .show("ota"); + .setView(makeUpdateInfoView(mHelper.getUpdateDescription())) + .setPositiveButton(mActivity.getString(R.string.updateanddownload), () -> { + OTADownloader.downloadBuild(mHelper.getDownloadUrl(), mHelper.getCommitSHA()); + }) + .show("ota"); }); } private View makeUpdateInfoView(String changelog) { - var container = new LinearLayout(mActivity); - var changelogView = new TextView(mActivity); + LinearLayout container = new LinearLayout(mActivity); + TextView changelogView = new TextView(mActivity); container.setOrientation(LinearLayout.VERTICAL); diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/PalettesBottomSheetDialog.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/PalettesBottomSheetDialog.java index 9f2fb0b6f..9282ce9a8 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/PalettesBottomSheetDialog.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/PalettesBottomSheetDialog.java @@ -1,7 +1,6 @@ package ru.vtosters.lite.ui.dialogs; import android.app.Activity; - import ru.vtosters.lite.themes.items.VTLPalette; import ru.vtosters.lite.ui.adapters.ColorPickerAdapter; diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/RoundingSeekbarDialog.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/RoundingSeekbarDialog.java index 45fe13a0a..c71b2af9b 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/RoundingSeekbarDialog.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/RoundingSeekbarDialog.java @@ -5,12 +5,11 @@ import android.widget.LinearLayout; import android.widget.SeekBar; import com.vk.core.dialogs.alert.VkAlertDialog; import com.vtosters.lite.R; +import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.LayoutUtils; +import ru.vtosters.lite.utils.LifecycleUtils; import ru.vtosters.lite.utils.Preferences; -import static ru.vtosters.lite.utils.AndroidUtils.*; -import static ru.vtosters.lite.utils.LifecycleUtils.restartApplicationWithTimer; - public class RoundingSeekbarDialog { public static void dialog(Context context) { LinearLayout mContainer = new LinearLayout(context); @@ -18,7 +17,7 @@ public class RoundingSeekbarDialog { seek.setMax(10); seek.setKeyProgressIncrement(0); seek.setProgress(Preferences.getPreferences().getInt("pic_rounding", 0)); - seek.setPadding(dp2px(16f), dp2px(16f), dp2px(16f), dp2px(16f)); + seek.setPadding(AndroidUtils.dp2px(16f), AndroidUtils.dp2px(16f), AndroidUtils.dp2px(16f), AndroidUtils.dp2px(16f)); mContainer.addView(seek, LayoutUtils.createLinear(-1, -2)); @@ -30,7 +29,7 @@ public class RoundingSeekbarDialog { .setView(mContainer) .setPositiveButton(context.getString(R.string.vtl_confirm), (dialog, which) -> { Preferences.getPreferences().edit().putInt("pic_rounding", seek.getProgress()).commit(); - restartApplicationWithTimer(); + LifecycleUtils.restartApplicationWithTimer(); }) .show(); } diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/ServerDialog.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/ServerDialog.java index 4839a24a5..9a04483c7 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/ServerDialog.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/ServerDialog.java @@ -1,29 +1,22 @@ package ru.vtosters.lite.ui.dialogs; -import static android.content.ContentValues.TAG; -import static ru.vtosters.lite.utils.NetworkUtils.isNetworkIsSlow; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; -import static ru.vtosters.lite.utils.Preferences.hasVerification; - +import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.util.Log; - import com.vk.core.dialogs.alert.VkAlertDialog; - +import okhttp3.*; import org.json.JSONObject; +import ru.vtosters.lite.di.singleton.VtOkHttpClient; +import ru.vtosters.lite.utils.LifecycleUtils; +import ru.vtosters.lite.utils.Preferences; import java.io.IOException; import java.util.Random; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; -import ru.vtosters.lite.di.singleton.VtOkHttpClient; -import ru.vtosters.lite.utils.LifecycleUtils; -import ru.vtosters.lite.utils.Preferences; +import static android.content.ContentValues.TAG; +import static ru.vtosters.lite.utils.Preferences.getBoolValue; +import static ru.vtosters.lite.utils.Preferences.hasVerification; public class ServerDialog { private static final OkHttpClient client = VtOkHttpClient.getInstance(); @@ -40,7 +33,7 @@ public class ServerDialog { public static void sendRequest() { if (getBoolValue("dialogrecomm", false)) return; - if (!isNetworkIsSlow() && !getBoolValue("isRoamingState", false)) { + if (!getBoolValue("isRoamingState", false)) { Request request = new Request.a() .b("https://vtosters.app/dialog.json") .a(); @@ -48,7 +41,7 @@ public class ServerDialog { client.a(request).a(new Callback() { @Override public void a(Call call, IOException e) { - Log.d(TAG, "" + e); + Log.d(TAG, String.valueOf(e)); showAlert = false; } @@ -93,7 +86,7 @@ public class ServerDialog { showAlert = true; - var activity = LifecycleUtils.getCurrentActivity(); + Activity activity = LifecycleUtils.getCurrentActivity(); if (getBoolValue(key, true) && showForNotVerified() && showAlert) { activity.runOnUiThread(() -> { new VkAlertDialog.Builder(activity) @@ -104,7 +97,7 @@ public class ServerDialog { (dialogInterface, i) -> Preferences.getPreferences().edit().putBoolean(key, false).apply()) .setNeutralButton(neutralButton, (dialogInterface, i) -> { Preferences.getPreferences().edit().putBoolean(key, false).apply(); - var intent = new Intent(Intent.ACTION_VIEW) + Intent intent = new Intent(Intent.ACTION_VIEW) .setData(Uri.parse(link)); activity.startActivity(intent); }) diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/Translate.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/Translate.java index 09a8f543b..2d5f2b421 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/Translate.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/Translate.java @@ -1,22 +1,20 @@ package ru.vtosters.lite.ui.dialogs; -import static ru.vtosters.lite.utils.AndroidUtils.sendToast; - import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.util.Log; - import com.vk.core.dialogs.alert.VkAlertDialog; import com.vtosters.lite.R; +import ru.vtosters.lite.translators.BaseTranslator; +import ru.vtosters.lite.utils.AndroidUtils; import java.util.concurrent.Executor; import java.util.concurrent.Executors; -import ru.vtosters.lite.translators.BaseTranslator; -import ru.vtosters.lite.utils.AndroidUtils; +import static ru.vtosters.lite.utils.AndroidUtils.sendToast; public class Translate { private static final Executor ASYNC_EXECUTOR @@ -29,7 +27,7 @@ public class Translate { if (translator == null) return; ASYNC_EXECUTOR.execute(() -> { try { - var translation = translator.getTranslation(text); + String translation = translator.getTranslation(text); MAIN_EXECUTOR.execute(() -> showDialog(context, translation)); } catch (Exception e) { Log.e("Translate", String.valueOf(e)); diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/VKIDProtection.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/VKIDProtection.java index 2a85465e4..182e79e5a 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/VKIDProtection.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/VKIDProtection.java @@ -3,17 +3,14 @@ package ru.vtosters.lite.ui.dialogs; import android.app.Activity; import com.vk.core.dialogs.alert.VkAlertDialog; import com.vtosters.lite.R; +import ru.vtosters.lite.proxy.ProxyUtils; import ru.vtosters.lite.ui.fragments.VKUIwrapper; import ru.vtosters.lite.utils.NavigatorUtils; import ru.vtosters.lite.utils.Preferences; -import static ru.vtosters.lite.proxy.ProxyUtils.getApi; -import static ru.vtosters.lite.proxy.ProxyUtils.isAnyProxyEnabled; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; - public class VKIDProtection { public static void alert(final Activity activity) { - if (!getBoolValue("showAlertVkId", true)) return; + if (!Preferences.getBoolValue("showAlertVkId", true)) return; new VkAlertDialog.Builder(activity) .setTitle(R.string.warning) .setMessage(R.string.vkidsumm) @@ -23,9 +20,9 @@ public class VKIDProtection { .setNeutralButton(R.string.vkiddisable, (dialogInterface, i) -> { Preferences.getPreferences().edit().putBoolean("showAlertVkId", false).apply(); VKUIwrapper.setLink( - isAnyProxyEnabled() + ProxyUtils.isAnyProxyEnabled() ? "https://id.vk.com/account" - : "https://" + getApi() + "/_/id.vk.com/account"); + : "https://" + ProxyUtils.getApi() + "/_/id.vk.com/account"); NavigatorUtils.switchFragment(activity, VKUIwrapper.class); }) .show(); diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/VTColorPickerBottomSheetDialog.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/VTColorPickerBottomSheetDialog.java index 924042f12..01fdbf854 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/VTColorPickerBottomSheetDialog.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/VTColorPickerBottomSheetDialog.java @@ -2,10 +2,8 @@ package ru.vtosters.lite.ui.dialogs; import android.app.Activity; import android.widget.LinearLayout; - import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; - import ru.vtosters.lite.ui.adapters.ColorPickerAdapter; import ru.vtosters.lite.ui.vkui.ModalBottomSheetWrapper; import ru.vtosters.lite.utils.LayoutUtils; diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/ActivityFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/ActivityFragment.java index 1eab1069c..2e924991d 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/ActivityFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/ActivityFragment.java @@ -1,13 +1,11 @@ package ru.vtosters.lite.ui.fragments; -import static ru.vtosters.lite.utils.Preferences.offline; - import android.os.Bundle; - import androidx.preference.Preference; - import com.vtosters.lite.R; +import static ru.vtosters.lite.utils.Preferences.offline; + public class ActivityFragment extends TrackedMaterialPreferenceToolbarFragment { @Override public void onCreate(Bundle bundle) { diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/BaseToolbarFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/BaseToolbarFragment.java index 42beb9f76..a27aff980 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/BaseToolbarFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/BaseToolbarFragment.java @@ -6,17 +6,13 @@ import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; - -import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; - import com.vk.core.fragments.FragmentImpl; import com.vtosters.lite.R; import com.vtosters.lite.ViewUtils; import com.vtosters.lite.m0.ToolbarHelper; - import ru.vtosters.lite.utils.LayoutUtils; public abstract class BaseToolbarFragment extends FragmentImpl { diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/DockBarEditorFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/DockBarEditorFragment.java index 432897a1b..a5c07655e 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/DockBarEditorFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/DockBarEditorFragment.java @@ -1,8 +1,5 @@ package ru.vtosters.lite.ui.fragments; -import static ru.vtosters.lite.utils.AndroidUtils.dp2px; -import static ru.vtosters.lite.utils.LifecycleUtils.restartApplication; - import android.os.Bundle; import android.view.ContextThemeWrapper; import android.view.Gravity; @@ -11,22 +8,22 @@ import android.view.View; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; - import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; - import com.vtosters.lite.R; - import ru.vtosters.lite.themes.hooks.TextViewHook; import ru.vtosters.lite.ui.adapters.CategorizedAdapter; import ru.vtosters.lite.ui.components.DockBarEditorManager; import ru.vtosters.lite.ui.components.ItemMovingCallback; import ru.vtosters.lite.utils.LayoutUtils; +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; +import static ru.vtosters.lite.utils.LifecycleUtils.restartApplication; + public class DockBarEditorFragment extends BaseToolbarFragment { @CallSuper diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/FeedFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/FeedFragment.java index 545d30af8..fe75aa3e9 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/FeedFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/FeedFragment.java @@ -1,26 +1,23 @@ package ru.vtosters.lite.ui.fragments; -import static ru.vtosters.lite.utils.AndroidUtils.sendToast; - import android.content.Context; import android.os.Bundle; import android.text.TextUtils; - import androidx.preference.Preference; - import com.vk.core.dialogs.alert.VkAlertDialog; import com.vk.newsfeed.NewsfeedSettingsFragment; import com.vk.newsfeed.controllers.NewsfeedController; import com.vtosters.lite.R; import com.vtosters.lite.ui.SummaryListPreference; - -import java.util.Objects; - import ru.vtosters.lite.ui.components.NewsfeedListManager; import ru.vtosters.lite.utils.NavigatorUtils; import ru.vtosters.lite.utils.NewsFeedFiltersUtils; import ru.vtosters.lite.utils.Preferences; +import java.util.Objects; + +import static ru.vtosters.lite.utils.AndroidUtils.sendToast; + public class FeedFragment extends TrackedMaterialPreferenceToolbarFragment { @Override public void onCreate(Bundle bundle) { diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/IconsFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/IconsFragment.java index c15204872..acfe67517 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/IconsFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/IconsFragment.java @@ -9,13 +9,10 @@ import android.os.Bundle; import android.util.TypedValue; import android.widget.RadioButton; import android.widget.RadioGroup; - import androidx.appcompat.view.ContextThemeWrapper; import androidx.core.content.res.ResourcesCompat; - import com.vk.core.dialogs.alert.VkAlertDialog; import com.vtosters.lite.R; - import ru.vtosters.lite.hooks.SwitchHook; import ru.vtosters.lite.ui.PreferenceFragmentUtils; import ru.vtosters.lite.ui.components.IconManager; diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/InstallGMSFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/InstallGMSFragment.java index b9f4463fd..468af442e 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/InstallGMSFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/InstallGMSFragment.java @@ -1,7 +1,6 @@ package ru.vtosters.lite.ui.fragments; import android.os.Bundle; - import com.vtosters.lite.R; public class InstallGMSFragment extends TrackedMaterialPreferenceToolbarFragment { diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java index dc0e09b29..cd4c836ca 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/MediaFragment.java @@ -1,17 +1,5 @@ package ru.vtosters.lite.ui.fragments; -import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.isVkxInstalled; -import static ru.vtosters.lite.music.LastFMScrobbler.isLoggedIn; -import static ru.vtosters.lite.proxy.ProxyUtils.getApi; -import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; -import static ru.vtosters.lite.utils.AndroidUtils.dp2px; -import static ru.vtosters.lite.utils.AndroidUtils.sendToast; -import static ru.vtosters.lite.utils.LifecycleUtils.restartApplicationWithTimer; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; -import static ru.vtosters.lite.utils.Preferences.isEnableExternalOpening; -import static ru.vtosters.lite.utils.ThemesUtils.getSTextAttr; -import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; - import android.content.Context; import android.content.Intent; import android.os.Bundle; @@ -21,39 +9,34 @@ import android.view.ViewGroup; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.LinearLayout; - import androidx.preference.Preference; - +import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; import com.vk.core.dialogs.alert.VkAlertDialog; import com.vk.core.network.Network; import com.vtosters.lite.R; - +import okhttp3.Headers; +import okhttp3.OkHttpClient; +import okhttp3.Request; import org.json.JSONObject; +import ru.vtosters.lite.downloaders.AudioDownloader; +import ru.vtosters.lite.downloaders.VideoDownloader; +import ru.vtosters.lite.music.LastFMScrobbler; +import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; +import ru.vtosters.lite.proxy.ProxyUtils; +import ru.vtosters.lite.ui.adapters.ImagineArrayAdapter; +import ru.vtosters.lite.utils.*; import java.io.IOException; import java.util.Arrays; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; -import okhttp3.Headers; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import ru.vtosters.lite.downloaders.AudioDownloader; -import ru.vtosters.lite.downloaders.VideoDownloader; -import ru.vtosters.lite.music.LastFMScrobbler; -import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; -import ru.vtosters.lite.ui.adapters.ImagineArrayAdapter; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.Preferences; -import ru.vtosters.lite.utils.ThemesUtils; - public class MediaFragment extends TrackedMaterialPreferenceToolbarFragment { private static final ExecutorService executor = Executors.newCachedThreadPool(); public static void download(Context ctx) { final EditText input = new EditText(ctx); - input.setTextColor(getTextAttr()); + input.setTextColor(ThemesUtils.getTextAttr()); input.setBackgroundTintList(ThemesUtils.getAccenedColorStateList()); var lp = new FrameLayout.LayoutParams(-1, -2); @@ -91,7 +74,7 @@ public class MediaFragment extends TrackedMaterialPreferenceToolbarFragment { @Override public boolean onPreferenceTreeClick(Preference preference) { - findPreference("maxquality").setEnabled(isEnableExternalOpening()); + findPreference("maxquality").setEnabled(Preferences.isEnableExternalOpening()); return super.onPreferenceTreeClick(preference); } @@ -106,7 +89,7 @@ public class MediaFragment extends TrackedMaterialPreferenceToolbarFragment { return true; }); findPreference("lastfm_auth").setOnPreferenceClickListener(preference -> { - if (isLoggedIn()) { + if (LastFMScrobbler.isLoggedIn()) { logout(getContext()); } else { lastfmAuth(getContext()); @@ -114,7 +97,7 @@ public class MediaFragment extends TrackedMaterialPreferenceToolbarFragment { return true; }); - if (isLoggedIn()) { + if (LastFMScrobbler.isLoggedIn()) { findPreference("lastfm_auth").setSummary(requireContext().getString(R.string.lastfm_authorized_as) + " " + LastFMScrobbler.getUserName()); } else { findPreference("lastfm_enabled").setEnabled(false); @@ -123,7 +106,7 @@ public class MediaFragment extends TrackedMaterialPreferenceToolbarFragment { findPreference("cached_tracks").setSummary(String.format(requireContext().getString(R.string.cached_tracks_counter), CacheDatabaseDelegate.getTrackCount())); findPreference("cached_tracks").setOnPreferenceClickListener(preference -> { if (CacheDatabaseDelegate.getTrackCount() == 0) { - sendToast(requireContext().getString(R.string.no_cache_error)); + AndroidUtils.sendToast(requireContext().getString(R.string.no_cache_error)); } else { delcache(requireContext()); } @@ -135,13 +118,13 @@ public class MediaFragment extends TrackedMaterialPreferenceToolbarFragment { return true; }); - if (!isVkxInstalled()) { + if (!LibVKXClient.isVkxInstalled()) { findPreference("vkx_sett").setVisible(false); } - findPreference("musicdefcatalog").setVisible(!getBoolValue("useOldAppVer", false)); + findPreference("musicdefcatalog").setVisible(!Preferences.getBoolValue("useOldAppVer", false)); findPreference("useOldAppVer").setOnPreferenceClickListener(preference -> { - restartApplicationWithTimer(); + LifecycleUtils.restartApplicationWithTimer(); return true; }); @@ -157,7 +140,7 @@ public class MediaFragment extends TrackedMaterialPreferenceToolbarFragment { new ImagineArrayAdapter.ImagineArrayAdapterItem(deficon, "TraceMoe"), new ImagineArrayAdapter.ImagineArrayAdapterItem(deficon, "Ascii2d"), new ImagineArrayAdapter.ImagineArrayAdapterItem(deficon, "Saucenao") - ); + ); var adapter = new ImagineArrayAdapter(requireContext(), items); adapter.setSelected(Preferences.getPreferences().getInt("search_engine", 0)); @@ -171,7 +154,7 @@ public class MediaFragment extends TrackedMaterialPreferenceToolbarFragment { return true; }); - findPreference("maxquality").setEnabled(isEnableExternalOpening()); + findPreference("maxquality").setEnabled(Preferences.isEnableExternalOpening()); } private void lastfmAuth(Context ctx) { @@ -180,19 +163,19 @@ public class MediaFragment extends TrackedMaterialPreferenceToolbarFragment { final EditText fn = new EditText(ctx); fn.setHint(R.string.lastfm_login); - fn.setTextColor(getTextAttr()); - fn.setHintTextColor(getSTextAttr()); + fn.setTextColor(ThemesUtils.getTextAttr()); + fn.setHintTextColor(ThemesUtils.getSTextAttr()); fn.setBackgroundTintList(ThemesUtils.getAccenedColorStateList()); linearLayout.addView(fn); fn.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT; ViewGroup.MarginLayoutParams margin = ((ViewGroup.MarginLayoutParams) fn.getLayoutParams()); - margin.setMargins(dp2px(20f), 0, dp2px(20f), 0); + margin.setMargins(AndroidUtils.dp2px(20f), 0, AndroidUtils.dp2px(20f), 0); fn.setLayoutParams(margin); final EditText ln = new EditText(ctx); ln.setHint(R.string.lastfm_password); - ln.setTextColor(getTextAttr()); - ln.setHintTextColor(getSTextAttr()); + ln.setTextColor(ThemesUtils.getTextAttr()); + ln.setHintTextColor(ThemesUtils.getSTextAttr()); ln.setBackgroundTintList(ThemesUtils.getAccenedColorStateList()); linearLayout.addView(ln); ln.getLayoutParams().width = ViewGroup.LayoutParams.MATCH_PARENT; @@ -235,7 +218,7 @@ public class MediaFragment extends TrackedMaterialPreferenceToolbarFragment { private void dlaudio(Context ctx) { if (LibVKXClient.isIntegrationEnabled()) { - sendToast(AndroidUtils.getString("vkx_integration_enabled_info")); + AndroidUtils.sendToast(AndroidUtils.getString("vkx_integration_enabled_info")); return; } @@ -255,7 +238,7 @@ public class MediaFragment extends TrackedMaterialPreferenceToolbarFragment { Thread thread = new Thread(() -> { try { var request = new Request.a() - .b("https://" + getApi() + "/method/" + "video.clearViewingHistoryRecords" + "?https=1" + "&access_token=" + getUserToken() + "&v=5.119") + .b("https://" + ProxyUtils.getApi() + "/method/" + "video.clearViewingHistoryRecords" + "?https=1" + "&access_token=" + AccountManagerUtils.getUserToken() + "&v=5.119") .a(Headers.a("User-Agent", Network.l.c().a(), "Content-Type", "application/x-www-form-urlencoded; charset=utf-8")) .a(); @@ -263,9 +246,9 @@ public class MediaFragment extends TrackedMaterialPreferenceToolbarFragment { var response = new JSONObject(new OkHttpClient().a(request).execute().a().g()); if (response.optInt("response") == 1) { - requireActivity().runOnUiThread(() -> sendToast(requireContext().getString(R.string.video_history_cleaned))); + requireActivity().runOnUiThread(() -> AndroidUtils.sendToast(requireContext().getString(R.string.video_history_cleaned))); } else { - requireActivity().runOnUiThread(() -> sendToast(requireContext().getString(R.string.delete_video_history_error))); + requireActivity().runOnUiThread(() -> AndroidUtils.sendToast(requireContext().getString(R.string.delete_video_history_error))); } Log.d("VideoHistory", response.toString()); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/MessagesFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/MessagesFragment.java index 8d7242c07..b4e533991 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/MessagesFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/MessagesFragment.java @@ -13,6 +13,7 @@ import ru.vtosters.lite.utils.NavigatorUtils; import ru.vtosters.lite.utils.Preferences; import java.util.Arrays; +import java.util.List; public class MessagesFragment extends TrackedMaterialPreferenceToolbarFragment { @Override @@ -38,13 +39,13 @@ public class MessagesFragment extends TrackedMaterialPreferenceToolbarFragment { findPreference("autotranslate").setEnabled(!Preferences.autoalltranslate()); findPreference("lang_service").setOnPreferenceClickListener(preference -> { - var items = Arrays.asList( + List items = Arrays.asList( new ImagineArrayAdapter.ImagineArrayAdapterItem(R.drawable.ic_yandex_translate_icon, "Yandex Translate"), new ImagineArrayAdapter.ImagineArrayAdapterItem(R.drawable.ic_google_translate_logo, "Google Translate") // new ImagineArrayAdapter.ImagineArrayAdapterItem(getIdentifier("ic_deepl_logo_icon", "drawable"), "DeepL") ); - var adapter = new ImagineArrayAdapter(requireContext(), items); + ImagineArrayAdapter adapter = new ImagineArrayAdapter(requireContext(), items); adapter.setSelected(Preferences.getPreferences().getInt("translator", 0)); new VkAlertDialog.Builder(getActivity()) diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java index 18d23df23..8a587a9a1 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/OtherFragment.java @@ -3,7 +3,6 @@ package ru.vtosters.lite.ui.fragments; import android.annotation.SuppressLint; import android.app.Activity; import android.content.*; -import android.net.Uri; import android.os.Bundle; import android.util.TypedValue; import android.webkit.WebView; @@ -35,6 +34,7 @@ import ru.vtosters.lite.utils.*; public class OtherFragment extends TrackedMaterialPreferenceToolbarFragment { private static final int VK_ADMIN_TOKEN_REQUEST_CODE = 1; + @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); @@ -81,7 +81,7 @@ public class OtherFragment extends TrackedMaterialPreferenceToolbarFragment { findPreference("microgsettings").setOnPreferenceClickListener(preference -> { try { Intent intent = new Intent(Intent.ACTION_MAIN); - intent.setComponent(new ComponentName("com.mgoogle.android.gms","org.microg.gms.ui.SettingsActivity")); + intent.setComponent(new ComponentName("com.mgoogle.android.gms", "org.microg.gms.ui.SettingsActivity")); startActivity(intent); } catch (Exception e) { e.printStackTrace(); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/ProxySettingsFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/ProxySettingsFragment.java index 027fa903a..b60b51135 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/ProxySettingsFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/ProxySettingsFragment.java @@ -1,14 +1,13 @@ package ru.vtosters.lite.ui.fragments; -import static ru.vtosters.lite.proxy.RandomProxy.setupNewProxy; -import static ru.vtosters.lite.utils.AndroidUtils.sendToast; - import android.os.Bundle; - import com.vtosters.lite.R; import java.io.IOException; +import static ru.vtosters.lite.proxy.RandomProxy.setupNewProxy; +import static ru.vtosters.lite.utils.AndroidUtils.sendToast; + public class ProxySettingsFragment extends TrackedMaterialPreferenceToolbarFragment { @Override public void onCreate(Bundle bundle) { diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/SuperAppEditorFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/SuperAppEditorFragment.java index d7de286a1..e132a407b 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/SuperAppEditorFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/SuperAppEditorFragment.java @@ -19,6 +19,7 @@ import ru.vtosters.lite.themes.hooks.TextViewHook; import ru.vtosters.lite.ui.adapters.CategorizedAdapter; import ru.vtosters.lite.ui.components.ItemMovingCallback; import ru.vtosters.lite.ui.components.SuperAppEditorManager; +import ru.vtosters.lite.ui.items.SuperAppItem; import ru.vtosters.lite.utils.LayoutUtils; import ru.vtosters.lite.utils.ThemesUtils; @@ -32,13 +33,13 @@ public class SuperAppEditorFragment extends BaseToolbarFragment { public View onCreateContent(@NonNull LayoutInflater inflater, @Nullable Bundle bundle) { setTitle(R.string.superapp_editor); - var content = new FrameLayout(getContext()); + FrameLayout content = new FrameLayout(getContext()); - var container = new LinearLayout(getContext()); + LinearLayout container = new LinearLayout(getContext()); container.setOrientation(LinearLayout.VERTICAL); content.addView(container, LayoutUtils.createFrame(-1, -1)); - var message = new TextView(getContext()); + TextView message = new TextView(getContext()); message.setText(R.string.superapp_editor_message); message.setTextSize(16.0f); message.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); @@ -51,7 +52,7 @@ public class SuperAppEditorFragment extends BaseToolbarFragment { ); container.addView(message, LayoutUtils.createLinear(-1, -2)); - var buttonsContainer = new LinearLayout(getContext()); + LinearLayout buttonsContainer = new LinearLayout(getContext()); buttonsContainer.setPadding( dp2px(13), dp2px(10), @@ -60,7 +61,7 @@ public class SuperAppEditorFragment extends BaseToolbarFragment { ); container.addView(buttonsContainer, new LinearLayout.LayoutParams(-1, -2)); - var save = new TextView(new ContextThemeWrapper(getContext(), R.style.VKUIButton_Primary)); + TextView save = new TextView(new ContextThemeWrapper(getContext(), R.style.VKUIButton_Primary)); save.setText(R.string.save); save.setOnClickListener(v -> { SuperAppEditorManager.getInstance().save(); @@ -69,14 +70,14 @@ public class SuperAppEditorFragment extends BaseToolbarFragment { new TextViewHook().inject(save, 0, false); - var saveParams = LayoutUtils.createLinear(0, -2); + LinearLayout.LayoutParams saveParams = LayoutUtils.createLinear(0, -2); saveParams.weight = 1.0f; buttonsContainer.addView(save, saveParams); - var divider = new View(getContext()); + View divider = new View(getContext()); buttonsContainer.addView(divider, new LinearLayout.LayoutParams(dp2px(10), 0)); - var reset = new TextView(new ContextThemeWrapper(getContext(), R.style.VKUIButton_Primary)); + TextView reset = new TextView(new ContextThemeWrapper(getContext(), R.style.VKUIButton_Primary)); reset.setText(R.string.reset); reset.setOnClickListener(v -> { SuperAppEditorManager.getInstance().reset(); @@ -95,19 +96,19 @@ public class SuperAppEditorFragment extends BaseToolbarFragment { holder.bindMovingItem(item.title); }); - for(var item : manager.getSelectedTabs()) - if(item.type.equals("menu")) + for (SuperAppItem item : manager.getSelectedTabs()) + if (item.type.equals("menu")) adapter.addUnmovedItem(item); - for(var item : manager.getDisabledTabs()) - if(item.type.equals("menu")) + for (SuperAppItem item : manager.getDisabledTabs()) + if (item.type.equals("menu")) adapter.addUnmovedItem(item); - var recyclerView = new RecyclerView(requireContext()); + RecyclerView recyclerView = new RecyclerView(requireContext()); recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); recyclerView.setAdapter(adapter); recyclerView.setHasFixedSize(true); - var params = LayoutUtils.createLinear(-1, -1); + LinearLayout.LayoutParams params = LayoutUtils.createLinear(-1, -1); params.gravity = Gravity.CENTER; container.addView(recyclerView, params); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/SystemInfo.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/SystemInfo.java index 7530a4371..80c34e99c 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/SystemInfo.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/SystemInfo.java @@ -5,9 +5,7 @@ import android.content.ClipboardManager; import android.content.Context; import android.os.Build; import android.os.Bundle; - import com.vtosters.lite.R; - import ru.vtosters.lite.deviceinfo.OEMDetector; import ru.vtosters.lite.ui.PreferenceFragmentUtils; import ru.vtosters.lite.utils.About; @@ -21,34 +19,34 @@ public class SystemInfo extends TrackedMaterialPreferenceToolbarFragment { super.onCreate(bundle); addPreferencesFromResource(R.xml.empty); - var oneUiMajorVersion = String.valueOf(OEMDetector.getOneUiMajorVersion()); - var oneUiMinorVersion = String.valueOf(OEMDetector.getOneUiMinorVersion()); - var sdkVersion = String.valueOf(Build.VERSION.SDK_INT); - var productName = Build.PRODUCT; - var deviceName = Build.DEVICE; - var boardName = Build.BOARD; - var manufacturerName = Build.MANUFACTURER; - var brandName = Build.BRAND; - var modelName = Build.MODEL; - var miuiUiVersionName = OEMDetector.getMiuiUiVersionName(); - var miuiIncrementalCodeName = OEMDetector.getMiuiUiVersionIncrementalCode(); - var miuiUiVersionCodeName = OEMDetector.getMiuiUiVersionCode(); - var emuiVersionCode = OEMDetector.getEmuiVersionCode(); - var packageName = requireContext().getPackageName(); - var commit = About.getBuildNumber(); + String oneUiMajorVersion = String.valueOf(OEMDetector.getOneUiMajorVersion()); + String oneUiMinorVersion = String.valueOf(OEMDetector.getOneUiMinorVersion()); + String sdkVersion = String.valueOf(Build.VERSION.SDK_INT); + String productName = Build.PRODUCT; + String deviceName = Build.DEVICE; + String boardName = Build.BOARD; + String manufacturerName = Build.MANUFACTURER; + String brandName = Build.BRAND; + String modelName = Build.MODEL; + String miuiUiVersionName = OEMDetector.getMiuiUiVersionName(); + String miuiIncrementalCodeName = OEMDetector.getMiuiUiVersionIncrementalCode(); + String miuiUiVersionCodeName = OEMDetector.getMiuiUiVersionCode(); + String emuiVersionCode = OEMDetector.getEmuiVersionCode(); + String packageName = requireContext().getPackageName(); + String commit = About.getBuildNumber(); - var isMiui = OEMDetector.isMIUI(); - var isFlyme = OEMDetector.isFlyme(); - var isSamsung = OEMDetector.isSamsung(); - var isOneUi = OEMDetector.isOneUi(); - var isVivo = OEMDetector.isVivo(); - var isZenUI = OEMDetector.isZenUI(); - var isEMUI = OEMDetector.isEMUI(); - var hasMiuiIncrCode = OEMDetector.hasMiuiIncrCode(); + boolean isMiui = OEMDetector.isMIUI(); + boolean isFlyme = OEMDetector.isFlyme(); + boolean isSamsung = OEMDetector.isSamsung(); + boolean isOneUi = OEMDetector.isOneUi(); + boolean isVivo = OEMDetector.isVivo(); + boolean isZenUI = OEMDetector.isZenUI(); + boolean isEMUI = OEMDetector.isEMUI(); + boolean hasMiuiIncrCode = OEMDetector.hasMiuiIncrCode(); - var isValidSignature = Preferences.isValidSignature(); - var isTablet = AndroidUtils.isTablet(); - var isDebuggable = AndroidUtils.isDebuggable(); + boolean isValidSignature = Preferences.isValidSignature(); + boolean isTablet = AndroidUtils.isTablet(); + boolean isDebuggable = AndroidUtils.isDebuggable(); PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), "App information"); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/ThemesFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/ThemesFragment.java index eaa3f9017..16771c9e9 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/ThemesFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/ThemesFragment.java @@ -215,7 +215,7 @@ public class ThemesFragment extends TrackedMaterialPreferenceToolbarFragment { ThemesManager.generateModApk(color); requireActivity().runOnUiThread(this::restart); } catch (Throwable e) { - Log.e("ThemesFragment", e + ""); + Log.e("ThemesFragment", String.valueOf(e)); ThemesManager.deleteModification(); requireActivity().runOnUiThread(() -> { dialog.dismiss(); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/TrackedMaterialPreferenceToolbarFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/TrackedMaterialPreferenceToolbarFragment.java index c8c20bcde..c7d4b4d1b 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/TrackedMaterialPreferenceToolbarFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/TrackedMaterialPreferenceToolbarFragment.java @@ -1,9 +1,7 @@ package ru.vtosters.lite.ui.fragments; import android.os.Bundle; - import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; - import ru.vtosters.lite.utils.AnalyticsHelper; public class TrackedMaterialPreferenceToolbarFragment extends MaterialPreferenceToolbarFragment { diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/VKUIwrapper.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/VKUIwrapper.java index aff57bee9..2900621bf 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/VKUIwrapper.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/VKUIwrapper.java @@ -2,7 +2,6 @@ package ru.vtosters.lite.ui.fragments; import android.net.Uri; import android.os.Bundle; - import com.vk.core.util.LangUtils; import com.vk.core.util.UriExt; import com.vk.webapp.VkUiFragment; diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java index a9949efe3..39b275902 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/VTSettings.java @@ -1,10 +1,12 @@ package ru.vtosters.lite.ui.fragments; import android.content.Intent; +import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build; import android.os.Bundle; import androidx.annotation.StringRes; +import androidx.preference.Preference; import com.aefyr.tsg.g2.TelegramStickersPack; import com.aefyr.tsg.g2.TelegramStickersService; import com.vk.about.AboutAppFragment; @@ -55,7 +57,7 @@ public class VTSettings extends TrackedMaterialPreferenceToolbarFragment impleme } public static String getProxysumm() { - var type = Preferences.getString("proxy"); + String type = Preferences.getString("proxy"); if (type.equals("noproxy") || type.isEmpty()) type = AndroidUtils.getString(R.string.vtlsettdisabled); @@ -109,7 +111,7 @@ public class VTSettings extends TrackedMaterialPreferenceToolbarFragment impleme AndroidUtils.checkLinksVerified(this.requireActivity()); if (AccountManagerUtils.isLogin()) { - var accountSwitcher = PreferenceFragmentUtils.addPreference( + Preference accountSwitcher = PreferenceFragmentUtils.addPreference( getPreferenceScreen(), "account_switcher", AccountManagerUtils.getUsername(), @@ -121,7 +123,7 @@ public class VTSettings extends TrackedMaterialPreferenceToolbarFragment impleme } catch (Exception ignored) { } - var intent = new Intent(requireContext(), MainActivity.class) + Intent intent = new Intent(requireContext(), MainActivity.class) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -131,7 +133,7 @@ public class VTSettings extends TrackedMaterialPreferenceToolbarFragment impleme }); VTExecutors.getIoScheduler().a(() -> { - var icon = ImageUtils.getDrawableFromUrl(AccountManagerUtils.getUserPhoto(), 0, true, true); + Drawable icon = ImageUtils.getDrawableFromUrl(AccountManagerUtils.getUserPhoto(), 0, true, true); if (icon == null) return; requireActivity().runOnUiThread(() -> { accountSwitcher.setIcon(icon); @@ -166,8 +168,8 @@ public class VTSettings extends TrackedMaterialPreferenceToolbarFragment impleme AndroidUtils.sendToast(AndroidUtils.getString("systemtheme_enabled")); return false; } - final var switchPreference = (MaterialSwitchPreference) preference; - final var isDarkTheme = !switchPreference.isChecked(); + final MaterialSwitchPreference switchPreference = (MaterialSwitchPreference) preference; + final boolean isDarkTheme = !switchPreference.isChecked(); switchTheme(isDarkTheme); return true; } diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java index 719484f68..a6030209e 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersFragment.java @@ -22,7 +22,6 @@ import com.aefyr.tsg.g2.TelegramStickersService; import com.aefyr.tsg.g2.stickersgrabber.TelegramStickersGrabber; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.vk.core.dialogs.alert.VkAlertDialog; -import com.vk.navigation.Navigator; import com.vtosters.lite.R; import ru.vtosters.lite.tgs.TGPref; import ru.vtosters.lite.ui.adapters.StickerPackAdapter; @@ -69,9 +68,9 @@ public class StickersFragment extends BaseToolbarFragment { @Override protected void onCreateMenu(Menu menu) { - var item = menu.add(0, 0, 0, ""); + MenuItem item = menu.add(0, 0, 0, ""); item.setIcon(ThemesUtils.recolorDrawable(AndroidUtils.getGlobalContext().getDrawable(R.drawable.ic_settings_outline_28))) - .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); + .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); super.onCreateMenu(menu); } @@ -107,8 +106,8 @@ public class StickersFragment extends BaseToolbarFragment { mAdapter = new StickerPackAdapter(); RecyclerView mRecycler = new RecyclerView(requireContext()); - var callback = new StickerTouchHelperCallback(mAdapter); - var touchHelper = new ItemTouchHelper(callback); + StickerTouchHelperCallback callback = new StickerTouchHelperCallback(mAdapter); + ItemTouchHelper touchHelper = new ItemTouchHelper(callback); touchHelper.attachToRecyclerView(mRecycler); mRecycler.setAdapter(mAdapter); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersPreferencesFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersPreferencesFragment.java index d609386e4..0c40f5926 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersPreferencesFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/tgstickers/StickersPreferencesFragment.java @@ -1,11 +1,9 @@ package ru.vtosters.lite.ui.fragments.tgstickers; import android.os.Bundle; - import com.aefyr.tsg.g2.stickersgrabber.TelegramStickersGrabber; import com.vk.core.util.ToastUtils; import com.vtosters.lite.R; - import ru.vtosters.lite.tgs.TGPref; import ru.vtosters.lite.tgs.TGRoot; import ru.vtosters.lite.ui.PreferenceFragmentUtils; @@ -28,9 +26,9 @@ public class StickersPreferencesFragment extends TrackedMaterialPreferenceToolba }); PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), requireContext().getString(R.string.sprefsnetwork)); - PreferenceFragmentUtils.addListPreference(getPreferenceScreen(), "VTGS:CM", "0", requireContext().getString(R.string.sprefsctype), new CharSequence[] { + PreferenceFragmentUtils.addListPreference(getPreferenceScreen(), "VTGS:CM", "0", requireContext().getString(R.string.sprefsctype), new CharSequence[]{ requireContext().getString(R.string.ctypedirect), requireContext().getString(R.string.ctypesocks) - }, new String[] { + }, new String[]{ "0", "2" }); @@ -54,7 +52,7 @@ public class StickersPreferencesFragment extends TrackedMaterialPreferenceToolba try { TGPref.setTGProxyPort(Integer.parseInt(o)); return true; - } catch(Exception e) { + } catch (Exception e) { ToastUtils.a(requireContext().getString(R.string.ssockswport)); return false; } diff --git a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/AlphaView.java b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/AlphaView.java index e99aff955..4c92e33fc 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/AlphaView.java +++ b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/AlphaView.java @@ -18,14 +18,14 @@ public class AlphaView extends SliderViewBase implements ColorObserver { @Override public void updateColor(ObservableColor observableColor) { - setPos((float)observableColor.getAlpha()/0xff); + setPos((float) observableColor.getAlpha() / 0xff); updateBitmap(); invalidate(); } @Override protected void notifyListener(float currentPos) { - observableColor.updateAlpha((int)(currentPos * 0xff), this); + observableColor.updateAlpha((int) (currentPos * 0xff), this); } @Override @@ -42,8 +42,8 @@ public class AlphaView extends SliderViewBase implements ColorObserver { int color = observableColor.getColor(); int[] colors = new int[n]; for (int i = 0; i < n; ++i) { - float alpha = isWide ? (float)i / n : 1 - (float)i / n; - colors[i] = color & 0xffffff | (int)(alpha * 0xff) << 24; + float alpha = isWide ? (float) i / n : 1 - (float) i / n; + colors[i] = color & 0xffffff | (int) (alpha * 0xff) << 24; } final int bmpWidth = isWide ? w : 1; final int bmpHeight = isWide ? 1 : h; diff --git a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/ColorPickerView.java b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/ColorPickerView.java index 10f8433e8..5e60b4b14 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/ColorPickerView.java +++ b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/ColorPickerView.java @@ -1,7 +1,5 @@ package ru.vtosters.lite.ui.views.rarepebble; -import static ru.vtosters.lite.utils.AndroidUtils.dp2px; - import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Color; @@ -15,9 +13,10 @@ import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.LinearLayout; - import ru.vtosters.lite.utils.LayoutUtils; +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; + public class ColorPickerView extends FrameLayout { private final AlphaView alphaView; @@ -29,14 +28,14 @@ public class ColorPickerView extends FrameLayout { public ColorPickerView(Context context) { super(context); - var container = new LinearLayout(context); + LinearLayout container = new LinearLayout(context); container.setOrientation(LinearLayout.VERTICAL); container.setPadding(dp2px(16), dp2px(16), dp2px(16), dp2px(16)); container.setGravity(Gravity.CENTER); this.addView(container, LayoutUtils.createFrame(-2, -2)); - var colorPickerFrame = new FrameLayout(context); - var colorPickerFrameParams = LayoutUtils.createLinear(-2, -2); + FrameLayout colorPickerFrame = new FrameLayout(context); + LinearLayout.LayoutParams colorPickerFrameParams = LayoutUtils.createLinear(-2, -2); colorPickerFrameParams.weight = 1.0f; container.addView(colorPickerFrame, colorPickerFrameParams); @@ -47,12 +46,12 @@ public class ColorPickerView extends FrameLayout { colorPickerFrame.addView(hueSatView, LayoutUtils.createFrame(-2, -2)); ValueView valueView = new ValueView(context); - var valueViewParams = LayoutUtils.createLinear(-1, dp2px(36)); + LinearLayout.LayoutParams valueViewParams = LayoutUtils.createLinear(-1, dp2px(36)); valueViewParams.topMargin = dp2px(16); container.addView(valueView, valueViewParams); alphaView = new AlphaView(context); - var alphaViewParams = LayoutUtils.createLinear(-1, dp2px(36)); + LinearLayout.LayoutParams alphaViewParams = LayoutUtils.createLinear(-1, dp2px(36)); valueViewParams.topMargin = dp2px(16); container.addView(alphaView, alphaViewParams); @@ -60,7 +59,7 @@ public class ColorPickerView extends FrameLayout { hexEdit.setText("000000"); hexEdit.setKeyListener(DigitsKeyListener.getInstance("0123456789ABCDEFabcdef")); hexEdit.setGravity(Gravity.CENTER_HORIZONTAL); - hexEdit.setFilters(new InputFilter[]{ new InputFilter.LengthFilter(4) }); + hexEdit.setFilters(new InputFilter[]{new InputFilter.LengthFilter(4)}); hexEdit.setBackground(null); hexEdit.setTypeface(Typeface.MONOSPACE); hexEdit.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); @@ -81,15 +80,17 @@ public class ColorPickerView extends FrameLayout { // thanks to the EditText and its listeners! } - /** Returns the color selected by the user */ + /** + * Returns the color selected by the user + */ public int getColor() { return observableColor.getColor(); } /** - * Sets the original color swatch and the current color to the specified value.
- * Using dark colors may lead to a loss of color information caused by the ARGB color space. - * Use {@link #setColor(int, float, float, float)} instead to avoid this. + * Sets the original color swatch and the current color to the specified value.
+ * Using dark colors may lead to a loss of color information caused by the ARGB color space. + * Use {@link #setColor(int, float, float, float)} instead to avoid this. */ public void setColor(int color) { setOriginalColor(color); @@ -105,28 +106,37 @@ public class ColorPickerView extends FrameLayout { *
  • Saturation [0...1]
  • *
  • Brightness [0...1]
  • * - */ public void setColor(int alpha, float hue, float sat, float bri) { + */ + public void setColor(int alpha, float hue, float sat, float bri) { setOriginalColor(alpha, hue, sat, bri); setCurrentColor(alpha, hue, sat, bri); } - /** Sets the original color swatch without changing the current color. */ + /** + * Sets the original color swatch without changing the current color. + */ public void setOriginalColor(int color) { swatchView.setOriginalColor(color); } - /** Sets the original color swatch without changing the current color. */ + /** + * Sets the original color swatch without changing the current color. + */ public void setOriginalColor(int alpha, float hue, float sat, float bri) { int color = Color.HSVToColor(alpha, new float[]{hue, sat, bri}); swatchView.setOriginalColor(color); } - /** Updates the current color without changing the original color swatch. */ + /** + * Updates the current color without changing the original color swatch. + */ public void setCurrentColor(int color) { observableColor.updateColor(color, null); } - /** Updates the current color without changing the original color swatch. */ + /** + * Updates the current color without changing the original color swatch. + */ public void setCurrentColor(int alpha, float hue, float sat, float bri) { observableColor.updateColor(alpha, hue, sat, bri, null); } diff --git a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/HexEdit.java b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/HexEdit.java index 567bbe219..827fe8055 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/HexEdit.java +++ b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/HexEdit.java @@ -9,11 +9,11 @@ import android.widget.EditText; class HexEdit { - private static InputFilter[] withoutAlphaDigits = { + private static final InputFilter[] withoutAlphaDigits = { new ColorPasteLengthFilter(), new HexFilter() }; - private static InputFilter[] withAlphaDigits = { + private static final InputFilter[] withAlphaDigits = { new InputFilter.LengthFilter(8), new HexFilter() }; @@ -65,9 +65,8 @@ class HexEdit { private static int parseHexColor(CharSequence s) { try { - return (int)(Long.parseLong(s.toString(), 16) & 0xffffffffL); - } - catch (NumberFormatException e) { + return (int) (Long.parseLong(s.toString(), 16) & 0xffffffffL); + } catch (NumberFormatException e) { return Color.GRAY; } } @@ -92,8 +91,7 @@ class HexEdit { if (srcLength == PASTED_LEN && dstSelLength == dest.length()) { // Discard alpha digits: return source.subSequence(PASTED_LEN - MAX_LENGTH, PASTED_LEN); - } - else { + } else { return sixDigitFilter.filter(source, start, end, dest, dstart, dend); } } @@ -103,10 +101,10 @@ class HexEdit { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { - var state = true; + boolean state = true; for (int i = start; i < end; i++) { char ch = source.charAt(i); - if (ch < '0' || ch> '9' && ch < 'A' || ch > 'F' && ch < 'a' || ch > 'f') { + if (ch < '0' || ch > '9' && ch < 'A' || ch > 'F' && ch < 'a' || ch > 'f') { state = false; break; } diff --git a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/HueSatView.java b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/HueSatView.java index e2a0bf344..0dca2bc52 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/HueSatView.java +++ b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/HueSatView.java @@ -1,32 +1,23 @@ package ru.vtosters.lite.ui.views.rarepebble; import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.PointF; -import android.graphics.Rect; -import android.graphics.RectF; +import android.graphics.*; import android.os.Build; import android.util.DisplayMetrics; import android.view.MotionEvent; public class HueSatView extends SquareView implements ColorObserver { - private Paint borderPaint; - private Paint pointerPaint; - private Path pointerPath; - private Path borderPath; - private Rect viewRect = new Rect(); - private int w; - private int h; - // Bitmap is generated once and shared across instances. private static Bitmap bitmap; - private final PointF pointer = new PointF(); + private final Paint borderPaint; + private final Paint pointerPaint; + private final Path pointerPath; + private final Path borderPath; + private final Rect viewRect = new Rect(); + private int w; + private int h; private ObservableColor observableColor = new ObservableColor(0); public HueSatView(Context context) { @@ -44,13 +35,67 @@ public class HueSatView extends SquareView implements ColorObserver { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // Need clipPath() and setLayerType()... throw new UnsupportedOperationException("Android API 10 and below is not supported."); - } - else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) { + } else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) { // clipPath() is only supported on a software layer. setLayerType(LAYER_TYPE_SOFTWARE, null); } } + private static void makeBorderPath(Path borderPath, int w, int h, float inset) { + w -= inset; + h -= inset; + borderPath.reset(); + borderPath.moveTo(w, inset); + borderPath.lineTo(w, h); + borderPath.lineTo(inset, h); + borderPath.addArc(new RectF(inset, inset, 2 * w, 2 * h), 180, 270); + borderPath.close(); + } + + private static Bitmap makeBitmap(int radiusPx) { + int[] colors = new int[radiusPx * radiusPx]; + float[] hsv = new float[]{0f, 0f, 1f}; + for (int y = 0; y < radiusPx; ++y) { + for (int x = 0; x < radiusPx; ++x) { + final int i = x + y * radiusPx; + final float sat = satForPos(x, y, radiusPx); + final float arcBleed = 2f / radiusPx; // extend curved edge pixels just outside clip area. + if (sat <= 1 + arcBleed) { + hsv[0] = hueForPos(x, y, radiusPx); + hsv[1] = sat; + colors[i] = Color.HSVToColor(0xff, hsv); + } + } + } + return Bitmap.createBitmap(colors, radiusPx, radiusPx, Bitmap.Config.ARGB_8888); + } + + private static float hueForPos(float x, float y, float radiusPx) { + final double r = radiusPx - 1; // gives values 0...1 inclusive + final double dx = (r - x) / r; + final double dy = (r - y) / r; + final double angle = Math.atan2(dy, dx); + final double hue = 360 * angle / (Math.PI / 2); + return (float) hue; + } + + private static float satForPos(float x, float y, float radiusPx) { + final double r = radiusPx - 1; // gives values 0...1 inclusive + final double dx = (r - x) / r; + final double dy = (r - y) / r; + final double sat = dx * dx + dy * dy; // leave it squared -- exaggerates pale colors + return (float) sat; + } + + private static void setPointer(PointF pointer, float hue, float sat, float radiusPx) { + final float r = radiusPx - 1; // for values 0...1 inclusive + final double distance = r * Math.sqrt(sat); + final double angle = hue / 360 * Math.PI / 2; + final double dx = distance * Math.cos(angle); + final double dy = distance * Math.sin(angle); + pointer.set(r - (float) dx, r - (float) dy); + } + private int optimalBitmapSize() { final int scale = 2; final int maxBitmapSize = 128; @@ -83,17 +128,6 @@ public class HueSatView extends SquareView implements ColorObserver { updateColor(observableColor); } - private static void makeBorderPath(Path borderPath, int w, int h, float inset) { - w -= inset; - h -= inset; - borderPath.reset(); - borderPath.moveTo(w, inset); - borderPath.lineTo(w, h); - borderPath.lineTo(inset, h); - borderPath.addArc(new RectF(inset, inset, 2 * w, 2 * h), 180, 270); - borderPath.close(); - } - @Override public boolean onTouchEvent(MotionEvent event) { int action = event.getActionMasked(); @@ -127,7 +161,7 @@ public class HueSatView extends SquareView implements ColorObserver { y = Math.min(y, h); final float dx = w - x; final float dy = h - y; - final float r = (float)Math.sqrt(dx * dx + dy * dy); + final float r = (float) Math.sqrt(dx * dx + dy * dy); boolean outside = r > w; if (!outside || !rejectOutside) { if (outside) { @@ -160,48 +194,4 @@ public class HueSatView extends SquareView implements ColorObserver { canvas.drawPath(borderPath, borderPaint); } - - private static Bitmap makeBitmap(int radiusPx) { - int[] colors = new int[radiusPx * radiusPx]; - float[] hsv = new float[]{0f, 0f, 1f}; - for (int y = 0; y < radiusPx; ++y) { - for (int x = 0; x < radiusPx; ++x) { - final int i = x + y * radiusPx; - final float sat = satForPos(x, y, radiusPx); - final float arcBleed = 2f / radiusPx; // extend curved edge pixels just outside clip area. - if (sat <= 1 + arcBleed) { - hsv[0] = hueForPos(x, y, radiusPx); - hsv[1] = sat; - colors[i] = Color.HSVToColor(0xff, hsv); - } - } - } - return Bitmap.createBitmap(colors, radiusPx, radiusPx, Bitmap.Config.ARGB_8888); - } - - private static float hueForPos(float x, float y, float radiusPx) { - final double r = radiusPx - 1; // gives values 0...1 inclusive - final double dx = (r - x) / r; - final double dy = (r - y) / r; - final double angle = Math.atan2(dy, dx); - final double hue = 360 * angle / (Math.PI / 2); - return (float)hue; - } - - private static float satForPos(float x, float y, float radiusPx) { - final double r = radiusPx - 1; // gives values 0...1 inclusive - final double dx = (r - x) / r; - final double dy = (r - y) / r; - final double sat = dx * dx + dy * dy; // leave it squared -- exaggerates pale colors - return (float)sat; - } - - private static void setPointer(PointF pointer, float hue, float sat, float radiusPx) { - final float r = radiusPx - 1; // for values 0...1 inclusive - final double distance = r * Math.sqrt(sat); - final double angle = hue / 360 * Math.PI / 2; - final double dx = distance * Math.cos(angle); - final double dy = distance * Math.sin(angle); - pointer.set(r - (float)dx, r - (float)dy); - } } diff --git a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/ObservableColor.java b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/ObservableColor.java index 8cf482ec1..35e724ec8 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/ObservableColor.java +++ b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/ObservableColor.java @@ -9,15 +9,15 @@ public class ObservableColor { // Store as HSV & A, otherwise round-trip to int causes color drift. private final float[] hsv = {0, 0, 0}; - private int alpha; private final List observers = new ArrayList(); + private int alpha; public ObservableColor(int color) { Color.colorToHSV(color, hsv); alpha = Color.alpha(color); } - public void getHsv(float hsvOut[]) { + public void getHsv(float[] hsvOut) { hsvOut[0] = hsv[0]; hsvOut[1] = hsv[1]; hsvOut[2] = hsv[2]; @@ -50,7 +50,7 @@ public class ObservableColor { public float getLightnessWithValue(float value) { float[] hsV = {hsv[0], hsv[1], value}; final int color = Color.HSVToColor(hsV); - return (Color.red(color) * 0.2126f + Color.green(color) * 0.7152f + Color.blue(color) * 0.0722f)/0xff; + return (Color.red(color) * 0.2126f + Color.green(color) * 0.7152f + Color.blue(color) * 0.0722f) / 0xff; } public void addObserver(ColorObserver observer) { diff --git a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/Resources.java b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/Resources.java index df66096d3..a273c7f29 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/Resources.java +++ b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/Resources.java @@ -1,15 +1,7 @@ package ru.vtosters.lite.ui.views.rarepebble; -import static ru.vtosters.lite.utils.AndroidUtils.dp2px; - import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.BitmapShader; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.Shader; - +import android.graphics.*; import ru.vtosters.lite.utils.AndroidUtils; class Resources { @@ -21,7 +13,7 @@ class Resources { public static Paint makeLinePaint() { Paint paint = new Paint(); paint.setColor(VIEW_OUTLINE_COLOR); - paint.setStrokeWidth(dp2px(LINE_WIDTH_DIP)); + paint.setStrokeWidth(AndroidUtils.dp2px(LINE_WIDTH_DIP)); paint.setStyle(Paint.Style.STROKE); paint.setAntiAlias(true); return paint; @@ -31,7 +23,7 @@ class Resources { Paint paint = new Paint(); final Bitmap checkerBmp = BitmapFactory.decodeResource(context.getResources(), AndroidUtils.getIdentifier("checker_background", "drawable")); paint.setShader(new BitmapShader(checkerBmp, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT)); - paint.setStrokeWidth(dp2px(LINE_WIDTH_DIP)); + paint.setStrokeWidth(AndroidUtils.dp2px(LINE_WIDTH_DIP)); paint.setStyle(Paint.Style.FILL); paint.setAntiAlias(true); return paint; @@ -39,7 +31,7 @@ class Resources { public static Path makePointerPath() { Path pointerPath = new Path(); - final float radiusPx = dp2px(POINTER_RADIUS_DIP); + final float radiusPx = AndroidUtils.dp2px(POINTER_RADIUS_DIP); pointerPath.addCircle(0, 0, radiusPx, Path.Direction.CW); return pointerPath; } diff --git a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/SliderViewBase.java b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/SliderViewBase.java index 56b4c1167..53b5bfc91 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/SliderViewBase.java +++ b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/SliderViewBase.java @@ -1,12 +1,7 @@ package ru.vtosters.lite.ui.views.rarepebble; import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.Rect; -import android.graphics.RectF; +import android.graphics.*; import android.view.MotionEvent; import android.view.View; @@ -15,13 +10,12 @@ public abstract class SliderViewBase extends View { private final Paint borderPaint; private final Paint checkerPaint; private final Rect viewRect = new Rect(); - private int w; - private int h; private final Path borderPath; - private Bitmap bitmap; private final Path pointerPath; private final Paint pointerPaint; - + private int w; + private int h; + private Bitmap bitmap; private float currentPos; public SliderViewBase(Context context) { @@ -89,8 +83,7 @@ public abstract class SliderViewBase extends View { canvas.save(); if (isWide()) { canvas.translate(w * currentPos, h / 2); - } - else { + } else { canvas.translate(w / 2, h * (1 - currentPos)); } canvas.drawPath(pointerPath, pointerPaint); diff --git a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/SquareView.java b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/SquareView.java index 813aaee6c..355ae9e45 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/SquareView.java +++ b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/SquareView.java @@ -1,10 +1,10 @@ package ru.vtosters.lite.ui.views.rarepebble; -import static ru.vtosters.lite.utils.AndroidUtils.dp2px; - import android.content.Context; import android.view.View; +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; + class SquareView extends View { private static final int MIN_SIZE_DIP = 200; @@ -25,11 +25,9 @@ class SquareView extends View { int size = minSizePx; if (modeW == MeasureSpec.UNSPECIFIED) { size = h; - } - else if (modeH == MeasureSpec.UNSPECIFIED) { + } else if (modeH == MeasureSpec.UNSPECIFIED) { size = w; - } - else { + } else { size = Math.min(w, h); } size = Math.max(size, minSizePx); diff --git a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/SwatchView.java b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/SwatchView.java index e2c9cf909..b09260488 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/SwatchView.java +++ b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/SwatchView.java @@ -5,7 +5,6 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RectF; - import ru.vtosters.lite.utils.AndroidUtils; public class SwatchView extends SquareView implements ColorObserver { @@ -34,6 +33,31 @@ public class SwatchView extends SquareView implements ColorObserver { newFillPath = new Path(); } + private static void beginBorder(Path path, float inset, float edgeLen, float cornerRadius, float cornerSweepAngle) { + path.reset(); + path.moveTo(inset, inset); + cornerArc(path, edgeLen, inset, cornerRadius - inset, 0, cornerSweepAngle); + } + + private static void endBorder(Path path, float inset, float edgeLen, float cornerRadius, float cornerSweepAngle) { + cornerArc(path, inset, edgeLen, cornerRadius - inset, 90 - cornerSweepAngle, cornerSweepAngle); + path.lineTo(inset, inset); + path.close(); + } + + private static void cornerArc(Path path, float cx, float cy, float r, float startAngle, float sweepAngle) { + final RectF ovalRect = new RectF(-r, -r, r, r); + ovalRect.offset(cx, cy); + path.arcTo(ovalRect, startAngle, sweepAngle); + } + + private static void mainArc(Path path, float viewSize, float margin, float startAngle, float sweepAngle) { + float r = viewSize + margin; + final RectF ovalRect = new RectF(-r, -r, r, r); + ovalRect.offset(viewSize, viewSize); + path.arcTo(ovalRect, startAngle, sweepAngle); + } + void setOriginalColor(int color) { oldFillPaint.setColor(color); invalidate(); @@ -60,11 +84,11 @@ public class SwatchView extends SquareView implements ColorObserver { // find how long the outeredges are: final float margin = radialMarginPx; final float diagonal = r + 2 * margin; - final float opp = (float)Math.sqrt(diagonal * diagonal - r * r); + final float opp = (float) Math.sqrt(diagonal * diagonal - r * r); final float edgeLen = r - opp; // Arc angles for drawing CCW - final float outerAngle = (float)Math.toDegrees(Math.atan2(opp, r)); + final float outerAngle = (float) Math.toDegrees(Math.atan2(opp, r)); final float startAngle = 270 - outerAngle; // Sweep angle for each half of the swatch: final float sweepAngle = outerAngle - 45; @@ -89,31 +113,6 @@ public class SwatchView extends SquareView implements ColorObserver { newFillPath.close(); } - private static void beginBorder(Path path, float inset, float edgeLen, float cornerRadius, float cornerSweepAngle) { - path.reset(); - path.moveTo(inset, inset); - cornerArc(path, edgeLen, inset, cornerRadius-inset, 0, cornerSweepAngle); - } - - private static void endBorder(Path path, float inset, float edgeLen, float cornerRadius, float cornerSweepAngle) { - cornerArc(path, inset, edgeLen, cornerRadius - inset, 90 - cornerSweepAngle, cornerSweepAngle); - path.lineTo(inset, inset); - path.close(); - } - - private static void cornerArc(Path path, float cx, float cy, float r, float startAngle, float sweepAngle) { - final RectF ovalRect = new RectF(-r, -r, r, r); - ovalRect.offset(cx, cy); - path.arcTo(ovalRect, startAngle, sweepAngle); - } - - private static void mainArc(Path path, float viewSize, float margin, float startAngle, float sweepAngle) { - float r = viewSize + margin; - final RectF ovalRect = new RectF(-r, -r, r, r); - ovalRect.offset(viewSize, viewSize); - path.arcTo(ovalRect, startAngle, sweepAngle); - } - protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawPath(borderPath, checkerPaint); diff --git a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/ValueView.java b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/ValueView.java index ad4444f15..c73f0449f 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/ValueView.java +++ b/app/src/main/java/ru/vtosters/lite/ui/views/rarepebble/ValueView.java @@ -45,7 +45,7 @@ public class ValueView extends SliderViewBase implements ColorObserver { observableColor.getHsv(hsv); for (int i = 0; i < n; ++i) { - hsv[2] = isWide ? (float)i / n : 1 - (float)i / n; + hsv[2] = isWide ? (float) i / n : 1 - (float) i / n; colors[i] = Color.HSVToColor(hsv); } final int bmpWidth = isWide ? w : 1; diff --git a/app/src/main/java/ru/vtosters/lite/ui/vkui/MenuBuilder.java b/app/src/main/java/ru/vtosters/lite/ui/vkui/MenuBuilder.java index 7343b8cc7..7d1129034 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/vkui/MenuBuilder.java +++ b/app/src/main/java/ru/vtosters/lite/ui/vkui/MenuBuilder.java @@ -1,35 +1,30 @@ package ru.vtosters.lite.ui.vkui; -import static ru.vtosters.lite.foaf.FoafBase.loadAndShow; -import static ru.vtosters.lite.hooks.NewsfeedHook.*; -import static ru.vtosters.lite.utils.AccountManagerUtils.getUserID; -import static ru.vtosters.lite.utils.AndroidUtils.sendToast; - import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.graphics.drawable.Drawable; import android.util.Log; import android.view.View; - import com.vk.core.dialogs.actionspopup.ActionsPopup; import com.vk.profile.ui.components.CommunityFragmentActionsMenuBuilder; import com.vk.profile.ui.components.ProfileFragmentActionsMenuBuilder; import com.vtosters.lite.R; import com.vtosters.lite.api.ExtendedCommunityProfile; import com.vtosters.lite.api.ExtendedUserProfile; +import kotlin.Unit; +import kotlin.jvm.b.Functions; +import ru.vtosters.lite.foaf.FoafBase; +import ru.vtosters.lite.hooks.NewsfeedHook; +import ru.vtosters.lite.utils.AccountManagerUtils; +import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.RenameTool; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Objects; -import kotlin.Unit; -import kotlin.jvm.b.Functions; -import ru.vtosters.lite.hooks.NewsfeedHook; -import ru.vtosters.lite.utils.AndroidUtils; -import ru.vtosters.lite.utils.RenameTool; - public class MenuBuilder { private static Field apView; private static Field pfambObject; @@ -59,12 +54,12 @@ public class MenuBuilder { final ExtendedUserProfile eup = (ExtendedUserProfile) pfambObject.get(mb); final Context ctx = ((View) Objects.requireNonNull(apView.get(builder))).getContext(); addItem(builder, AndroidUtils.getString(R.string.menu_copy_id), () -> { - copy(ctx, String.valueOf(getUserID(eup))); + copy(ctx, String.valueOf(AccountManagerUtils.getUserID(eup))); return Unit.a; }); addItem(builder, AndroidUtils.getString(R.string.menu_addon_info), () -> { - loadAndShow(ctx, getUserID(eup)); + FoafBase.loadAndShow(ctx, AccountManagerUtils.getUserID(eup)); return Unit.a; }); @@ -87,7 +82,7 @@ public class MenuBuilder { final boolean isPageWhitelistedAdsStories = NewsfeedHook.isWhitelistedAdStories(ecp); addItem(builder, AndroidUtils.getString(R.string.menu_copy_id), () -> { - copy(ctx, String.valueOf(getUserID(ecp))); + copy(ctx, String.valueOf(AccountManagerUtils.getUserID(ecp))); return Unit.a; }); @@ -97,20 +92,20 @@ public class MenuBuilder { }); addItem(builder, AndroidUtils.getString(isPageWhitelistedFilter ? R.string.remove_from_filter_whitelist : R.string.add_to_filter_whitelist), () -> { - setWhitelistedFilter(ecp, !isPageWhitelistedFilter); - sendToast(AndroidUtils.getString(isPageWhitelistedFilter ? R.string.removed_from_whitelist_success : R.string.added_to_whitelist_success)); + NewsfeedHook.setWhitelistedFilter(ecp, !isPageWhitelistedFilter); + AndroidUtils.sendToast(AndroidUtils.getString(isPageWhitelistedFilter ? R.string.removed_from_whitelist_success : R.string.added_to_whitelist_success)); return Unit.a; }); addItem(builder, AndroidUtils.getString(isPageWhitelistedAds ? R.string.remove_from_ads_whitelist : R.string.add_to_ads_whitelist), () -> { - setWhitelistedAd(ecp, !isPageWhitelistedAds); - sendToast(AndroidUtils.getString(isPageWhitelistedAds ? R.string.removed_from_whitelist_success : R.string.added_to_whitelist_success)); + NewsfeedHook.setWhitelistedAd(ecp, !isPageWhitelistedAds); + AndroidUtils.sendToast(AndroidUtils.getString(isPageWhitelistedAds ? R.string.removed_from_whitelist_success : R.string.added_to_whitelist_success)); return Unit.a; }); addItem(builder, AndroidUtils.getString(isPageWhitelistedAdsStories ? R.string.remove_from_ads_stories_whitelist : R.string.add_to_ads_stories_whitelist), () -> { - setWhitelistedAdStories(ecp, !isPageWhitelistedAdsStories); - sendToast(AndroidUtils.getString(isPageWhitelistedAdsStories ? R.string.removed_from_whitelist_success : R.string.added_to_whitelist_success)); + NewsfeedHook.setWhitelistedAdStories(ecp, !isPageWhitelistedAdsStories); + AndroidUtils.sendToast(AndroidUtils.getString(isPageWhitelistedAdsStories ? R.string.removed_from_whitelist_success : R.string.added_to_whitelist_success)); return Unit.a; }); @@ -124,7 +119,7 @@ public class MenuBuilder { ClipData clip = ClipData.newPlainText("MBH-ST", txt); clipboard.setPrimaryClip(clip); - sendToast(AndroidUtils.getString(R.string.menu_copied)); + AndroidUtils.sendToast(AndroidUtils.getString(R.string.menu_copied)); } public static void addItem(final ActionsPopup.b builder, final String title, final Functions onClick) throws InvocationTargetException, IllegalAccessException { diff --git a/app/src/main/java/ru/vtosters/lite/ui/vkui/ModalBottomSheetWrapper.java b/app/src/main/java/ru/vtosters/lite/ui/vkui/ModalBottomSheetWrapper.java index 3f2aa533a..ace70af16 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/vkui/ModalBottomSheetWrapper.java +++ b/app/src/main/java/ru/vtosters/lite/ui/vkui/ModalBottomSheetWrapper.java @@ -2,7 +2,6 @@ package ru.vtosters.lite.ui.vkui; import android.app.Activity; import android.view.View; - import com.vk.core.dialogs.bottomsheet.ModalBottomSheet; public class ModalBottomSheetWrapper { diff --git a/app/src/main/java/ru/vtosters/lite/ui/vkui/VBListBuilder.java b/app/src/main/java/ru/vtosters/lite/ui/vkui/VBListBuilder.java index 80b85963b..9c0fccd89 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/vkui/VBListBuilder.java +++ b/app/src/main/java/ru/vtosters/lite/ui/vkui/VBListBuilder.java @@ -1,8 +1,5 @@ package ru.vtosters.lite.ui.vkui; -import static ru.vtosters.lite.utils.AndroidUtils.dp2px; -import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; - import android.content.Context; import android.util.TypedValue; import android.view.ViewGroup; @@ -11,6 +8,9 @@ import android.widget.LinearLayout; import java.util.List; +import static ru.vtosters.lite.utils.AndroidUtils.dp2px; +import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; + public class VBListBuilder { public static ViewGroup buildListOf(Context ctx, List items) { LinearLayout mainView = new LinearLayout(ctx); diff --git a/app/src/main/java/ru/vtosters/lite/ui/vkui/VBottomSheetBuilder.java b/app/src/main/java/ru/vtosters/lite/ui/vkui/VBottomSheetBuilder.java index a3131ee20..9a0056342 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/vkui/VBottomSheetBuilder.java +++ b/app/src/main/java/ru/vtosters/lite/ui/vkui/VBottomSheetBuilder.java @@ -4,7 +4,6 @@ import android.app.Activity; import android.os.Handler; import android.os.Looper; import android.view.View; - import androidx.annotation.Nullable; public class VBottomSheetBuilder { diff --git a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ImageEffect.java b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ImageEffect.java index ceac13b09..eba36bc4a 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ImageEffect.java +++ b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ImageEffect.java @@ -182,6 +182,19 @@ enum ImageEffects { this.title = title; } + public static Boolean hasEffects() { + return !Preferences.getString("msg_Blur").contains("disabled") && !Preferences.getString("msg_Blur").isEmpty() || + !Preferences.getString("msg_Dim").contains("disabled") && !Preferences.getString("msg_Dim").isEmpty() || + !Preferences.getString("msg_Mosaic").contains("disabled") && !Preferences.getString("msg_Mosaic").isEmpty() || + Preferences.getBoolValue("msg_Emboss", false) || + Preferences.getBoolValue("msg_Sepia", false) || + Preferences.getBoolValue("msg_Invert", false) || + Preferences.getBoolValue("msg_Snow", false) || + Preferences.getBoolValue("msg_Flea", false) || + Preferences.getBoolValue("msg_Engrave", false) || + Preferences.getBoolValue("msg_Monochrome", false); + } + public String getTitle() { return title; } @@ -218,19 +231,6 @@ enum ImageEffects { return Preferences.getPreferences().getBoolean(this.toString(), false); } - public static Boolean hasEffects() { - return !Preferences.getString("msg_Blur").contains("disabled") && !Preferences.getString("msg_Blur").isEmpty() || - !Preferences.getString("msg_Dim").contains("disabled") && !Preferences.getString("msg_Dim").isEmpty() || - !Preferences.getString("msg_Mosaic").contains("disabled") && !Preferences.getString("msg_Mosaic").isEmpty() || - Preferences.getBoolValue("msg_Emboss", false) || - Preferences.getBoolValue("msg_Sepia", false) || - Preferences.getBoolValue("msg_Invert", false) || - Preferences.getBoolValue("msg_Snow", false) || - Preferences.getBoolValue("msg_Flea", false) || - Preferences.getBoolValue("msg_Engrave", false) || - Preferences.getBoolValue("msg_Monochrome", false); - } - @NonNull @Override public String toString() { diff --git a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ImageFilters.java b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ImageFilters.java index f109addbd..354ac979e 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ImageFilters.java +++ b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ImageFilters.java @@ -3,7 +3,6 @@ package ru.vtosters.lite.ui.wallpapers; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; -import android.util.Log; import java.nio.ByteBuffer; import java.nio.ByteOrder; diff --git a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperMenuFragment.java b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperMenuFragment.java index 9d3f789ed..6062cb005 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperMenuFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperMenuFragment.java @@ -1,15 +1,12 @@ package ru.vtosters.lite.ui.wallpapers; -import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; import android.net.Uri; import android.os.Bundle; import android.widget.Toast; import androidx.annotation.Nullable; import com.vtosters.lite.R; import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; -import com.vtosters.lite.im.ImEngineProvider; import ru.vtosters.lite.ui.PreferenceFragmentUtils; import ru.vtosters.lite.utils.Preferences; @@ -19,10 +16,6 @@ import java.io.InputStream; import java.io.OutputStream; import java.util.Arrays; -import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.*; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; -import static ru.vtosters.lite.utils.Preferences.hasVerification; - public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment { private WallpaperPreferences mWPPreviewPref; @@ -79,15 +72,15 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment { "", R.drawable.ic_delete_outline_28, preference -> { - removeWallpaper(); - requestUpdateWallpaper(); + WallpapersHooks.removeWallpaper(); + WallpapersHooks.requestUpdateWallpaper(); mWPPreviewPref.redraw(); return true; }); PreferenceFragmentUtils.addPreferenceCategory(getPreferenceScreen(), requireContext().getString(R.string.vtlfilters)); - if (!hasVerification() && !getBoolValue("dialogrecomm", false)) { + if (!Preferences.hasVerification() && !Preferences.getBoolValue("dialogrecomm", false)) { PreferenceFragmentUtils.addPreference( getPreferenceScreen(), "", @@ -104,7 +97,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment { } Arrays.stream(ImageEffects.values()) - .filter(imageEffects -> imageEffects.isFree() || hasVerification()) + .filter(imageEffects -> imageEffects.isFree() || Preferences.hasVerification()) .forEach(it -> { if (it.isList()) { var pref = PreferenceFragmentUtils.addListPreference( @@ -119,7 +112,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment { pref.setOnPreferenceChangeListener((preference, o) -> { Preferences.getPreferences().edit().putString(it.toString(), (String) o).apply(); preference.setSummary(it.getSummary()); - requestUpdateWallpaper(); + WallpapersHooks.requestUpdateWallpaper(); mWPPreviewPref.redraw(); return true; }); @@ -133,7 +126,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment { false, (preference, o) -> { Preferences.getPreferences().edit().putBoolean(it.toString(), (Boolean) o).apply(); - requestUpdateWallpaper(); + WallpapersHooks.requestUpdateWallpaper(); mWPPreviewPref.redraw(); return true; }); @@ -150,7 +143,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment { (preference, o) -> { boolean value = (boolean) o; Preferences.getPreferences().edit().putBoolean("compresswp", value).commit(); - requestUpdateWallpaper(); + WallpapersHooks.requestUpdateWallpaper(); mWPPreviewPref.redraw(); return true; }); @@ -164,13 +157,13 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment { return; try { - removeWallpaper(); + WallpapersHooks.removeWallpaper(); InputStream fileInputStream = requireActivity().getContentResolver().openInputStream(intent.getData()); - OutputStream outputStream = new FileOutputStream(getWallpaperFile()); + OutputStream outputStream = new FileOutputStream(WallpapersHooks.getWallpaperFile()); copyStream(fileInputStream, outputStream); - requestUpdateWallpaper(); + WallpapersHooks.requestUpdateWallpaper(); if (i == 1488) { mWPPreviewPref.redraw(); diff --git a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperPreferences.java b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperPreferences.java index 1d339ee68..60423dc2a 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperPreferences.java +++ b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpaperPreferences.java @@ -13,11 +13,7 @@ import com.vtosters.lite.R; import ru.vtosters.lite.ui.adapters.MessagesPreviewAdapter; import ru.vtosters.lite.utils.AndroidUtils; -import static ru.vtosters.lite.ui.wallpapers.WallpapersHooks.getWallpaper; -import static ru.vtosters.lite.utils.AndroidUtils.dp2px; - public class WallpaperPreferences extends Preference { - RecyclerView mRecyclerView; ImageView mChatBackground; private MessagesPreviewAdapter mAdapter; @@ -44,7 +40,7 @@ public class WallpaperPreferences extends Preference { super.onBindViewHolder(preferenceViewHolder); mRecyclerView = (RecyclerView) preferenceViewHolder.findViewById(R.id.install_btn_container); - mRecyclerView.setPadding(0, dp2px(8), 0, 0); + mRecyclerView.setPadding(0, AndroidUtils.dp2px(8), 0, 0); mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); mRecyclerView.setAdapter((mAdapter = new MessagesPreviewAdapter(AndroidUtils.getArray(R.array.wallpaper_change_dialog)))); mRecyclerView.setClickable(false); @@ -55,7 +51,7 @@ public class WallpaperPreferences extends Preference { } private void requestBg() { - final Drawable drawable = getWallpaper(); + final Drawable drawable = WallpapersHooks.getWallpaper(); mChatBackground.setImageDrawable(drawable); } diff --git a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpapersHooks.java b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpapersHooks.java index 154eabcb9..88019cf41 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpapersHooks.java +++ b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/WallpapersHooks.java @@ -7,8 +7,10 @@ import android.graphics.drawable.Drawable; import android.os.Build; import android.view.View; import android.widget.ImageView; +import com.vk.im.engine.h; import com.vtosters.lite.R; import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.Preferences; import ru.vtosters.lite.utils.ThemesUtils; import vigo.sdk.Log; @@ -16,17 +18,11 @@ import java.io.File; import java.io.FileOutputStream; import java.util.function.Supplier; -import static com.vk.im.engine.h.im_bg_chat; -import static ru.vtosters.lite.ui.wallpapers.ImageFilters.getFilteredDrawable; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; -import static ru.vtosters.lite.utils.AndroidUtils.sendToast; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; - public class WallpapersHooks { // TODO: force compress by default not asking user about that? - private static final Supplier compress = () -> getBoolValue("compresswp", true); - private static final File originalWp = new File(getGlobalContext().getFilesDir(), "wallpaper_new.jpeg"); - private static final File compressedWp = new File(getGlobalContext().getFilesDir(), "compressedwp_new.jpeg"); + private static final Supplier compress = () -> Preferences.getBoolValue("compresswp", true); + private static final File originalWp = new File(AndroidUtils.getGlobalContext().getFilesDir(), "wallpaper_new.jpeg"); + private static final File compressedWp = new File(AndroidUtils.getGlobalContext().getFilesDir(), "compressedwp_new.jpeg"); // TODO: respect blur, when there is blur/mosaic effect applied these two can be even less, just HD (1280x720) for e.g. private static final int MAX_WP_WIDTH = 1080; private static final int MAX_WP_HEIGHT = 1920; @@ -38,13 +34,13 @@ public class WallpapersHooks { if (hasWallpapers()) { ((ImageView) view).setImageDrawable(getWallpaper()); // set picture to background } else { - view.setBackgroundColor(ThemesUtils.getColorFromAttr(im_bg_chat)); // set default bg color + view.setBackgroundColor(ThemesUtils.getColorFromAttr(h.im_bg_chat)); // set default bg color } } public static Drawable getWallpaper() { - var oldwp = new File(getGlobalContext().getFilesDir(), "wallpaper.jpeg"); - var oldwpcompressed = new File(getGlobalContext().getFilesDir(), "compressedwp.jpeg"); + File oldwp = new File(AndroidUtils.getGlobalContext().getFilesDir(), "wallpaper.jpeg"); + File oldwpcompressed = new File(AndroidUtils.getGlobalContext().getFilesDir(), "compressedwp.jpeg"); if (oldwp.exists() || oldwpcompressed.exists()) { oldwp.delete(); @@ -69,7 +65,7 @@ public class WallpapersHooks { return null; } - mWallpaper = getFilteredDrawable(drawable); + mWallpaper = ImageFilters.getFilteredDrawable(drawable); mUpdateWallpaperRequested = false; } @@ -82,12 +78,12 @@ public class WallpapersHooks { // return false; // } try (var f = new FileOutputStream(compressedWp)) { - var bitmap = BitmapFactory.decodeFile(originalWp.getAbsolutePath()); + Bitmap bitmap = BitmapFactory.decodeFile(originalWp.getAbsolutePath()); if (bitmap.getHeight() > MAX_WP_HEIGHT || bitmap.getWidth() > MAX_WP_WIDTH) { bitmap = resize(bitmap, MAX_WP_WIDTH, MAX_WP_HEIGHT); } - var drawable = new BitmapDrawable(null, bitmap); + BitmapDrawable drawable = new BitmapDrawable(null, bitmap); // TODO: remove duplication without changes when provided image already fits required params if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { @@ -110,7 +106,7 @@ public class WallpapersHooks { private static Boolean eligibleWallpaperFile(File file) { if (file.length() >= 0x600000) { - sendToast(AndroidUtils.getString(R.string.wallpaper_size_limit)); + AndroidUtils.sendToast(AndroidUtils.getString(R.string.wallpaper_size_limit)); removeWallpaper(); return false; } else { diff --git a/app/src/main/java/ru/vtosters/lite/utils/About.java b/app/src/main/java/ru/vtosters/lite/utils/About.java index e61cc3c7c..6bc8b5929 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/About.java +++ b/app/src/main/java/ru/vtosters/lite/utils/About.java @@ -10,7 +10,8 @@ import java.io.IOException; import java.util.Scanner; import static ru.vtosters.lite.utils.AndroidUtils.*; -import static ru.vtosters.lite.utils.Preferences.*; +import static ru.vtosters.lite.utils.Preferences.devmenu; +import static ru.vtosters.lite.utils.Preferences.getBuildName; public class About { public static String getBuildNumber() { @@ -36,12 +37,12 @@ public class About { public static String getBuild(Context context, String name) { try { final var scanner = new Scanner(context.getAssets().open(name, AssetManager.ACCESS_BUFFER)); - while(scanner.hasNextLine()) { + while (scanner.hasNextLine()) { final var line = scanner.findInLine("VERSION_BUILD=.+"); - if(!TextUtils.isEmpty(line)) + if (!TextUtils.isEmpty(line)) return line.substring(14); } - } catch(IOException e) { + } catch (IOException e) { e.printStackTrace(); } return "0000000"; diff --git a/app/src/main/java/ru/vtosters/lite/utils/AnalyticsHelper.java b/app/src/main/java/ru/vtosters/lite/utils/AnalyticsHelper.java index 3adbcf75d..9528f98ab 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/AnalyticsHelper.java +++ b/app/src/main/java/ru/vtosters/lite/utils/AnalyticsHelper.java @@ -2,21 +2,18 @@ package ru.vtosters.lite.utils; import android.app.Application; import android.os.Handler; - import androidx.annotation.NonNull; - import com.microsoft.appcenter.AppCenter; import com.microsoft.appcenter.analytics.Analytics; import com.microsoft.appcenter.channel.AbstractChannelListener; import com.microsoft.appcenter.channel.Channel; import com.microsoft.appcenter.crashes.Crashes; import com.microsoft.appcenter.ingestion.models.Log; - -import java.util.HashMap; - import ru.vtosters.lite.BuildConfig; import ru.vtosters.lite.ui.fragments.TrackedMaterialPreferenceToolbarFragment; +import java.util.HashMap; + public class AnalyticsHelper { private static final boolean analyticsDisabled = Preferences.getBoolValue("analyticsDisabled", false); @@ -93,6 +90,7 @@ public class AnalyticsHelper { Crashes.trackError(th); } + public static void setAnalyticsStatus(Boolean bool) { Analytics.setEnabled(bool && Preferences.isValidSignature()); Crashes.setEnabled(bool && !AndroidUtils.isDebuggable() && Preferences.isValidSignature()); diff --git a/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java b/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java index e562c5fc9..8dda1db8b 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java @@ -18,8 +18,6 @@ import com.vk.core.dialogs.alert.VkAlertDialog; import com.vk.core.util.Screen; import com.vk.core.util.ToastUtils; import com.vtosters.lite.general.fragments.WebViewFragment; -import ru.vtosters.lite.BuildConfig; -import ru.vtosters.lite.hooks.DateHook; import java.io.File; import java.io.FileOutputStream; @@ -28,7 +26,6 @@ import java.io.InputStream; import java.lang.reflect.Method; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; -import java.util.Locale; import java.util.Map; import java.util.Random; @@ -229,6 +226,6 @@ public class AndroidUtils { } public static String upString(String s) { - return s.substring(0,1).toUpperCase() + s.substring(1).toLowerCase(); + return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase(); } } \ No newline at end of file diff --git a/app/src/main/java/ru/vtosters/lite/utils/CacheUtils.java b/app/src/main/java/ru/vtosters/lite/utils/CacheUtils.java index df0529f2e..17b7aa31d 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/CacheUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/CacheUtils.java @@ -1,12 +1,6 @@ package ru.vtosters.lite.utils; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; -import static ru.vtosters.lite.utils.AndroidUtils.sendToast; -import static ru.vtosters.lite.utils.Preferences.dev; -import static ru.vtosters.lite.utils.Preferences.getSizeForDelete; - import android.annotation.SuppressLint; - import com.vk.im.engine.ImEngine1; import com.vk.im.engine.ImEngineExt; import com.vk.im.ui.providers.audiomsg.ImAudioMsgPlayerProvider; @@ -19,6 +13,11 @@ import com.vtosters.lite.R; import java.text.CharacterIterator; import java.text.StringCharacterIterator; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.sendToast; +import static ru.vtosters.lite.utils.Preferences.dev; +import static ru.vtosters.lite.utils.Preferences.getSizeForDelete; + public class CacheUtils { private static CacheUtils sInstance = new CacheUtils(); public long size = 0; diff --git a/app/src/main/java/ru/vtosters/lite/utils/DeletedMessagesHandler.java b/app/src/main/java/ru/vtosters/lite/utils/DeletedMessagesHandler.java index 0639b2349..257989683 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/DeletedMessagesHandler.java +++ b/app/src/main/java/ru/vtosters/lite/utils/DeletedMessagesHandler.java @@ -1,13 +1,8 @@ package ru.vtosters.lite.utils; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; -import static ru.vtosters.lite.utils.Preferences.getString; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; - import android.annotation.SuppressLint; import android.content.ContentValues; import android.database.Cursor; - import com.vk.im.engine.events.OnMsgUpdateEvent; import com.vk.im.engine.internal.longpoll.tasks.MsgDeleteLpTask; import com.vk.im.engine.internal.storage.StorageEnvironment; @@ -15,13 +10,16 @@ import com.vk.im.engine.models.messages.Msg; import com.vk.im.engine.models.messages.MsgFromUser; import com.vk.im.engine.models.messages.NestedMsg; import com.vk.libsqliteext.CustomSqliteExtensionsKt; +import io.requery.android.database.sqlite.SQLiteDatabase; +import io.requery.android.database.sqlite.SQLiteOpenHelper; +import ru.vtosters.lite.encryption.EncryptProvider; import java.util.ArrayList; import java.util.List; -import io.requery.android.database.sqlite.SQLiteDatabase; -import io.requery.android.database.sqlite.SQLiteOpenHelper; -import ru.vtosters.lite.encryption.EncryptProvider; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.Preferences.getBoolValue; +import static ru.vtosters.lite.utils.Preferences.getString; public class DeletedMessagesHandler { private static List sDeletedMessagesList = new ArrayList<>(); diff --git a/app/src/main/java/ru/vtosters/lite/utils/ExternalLinkParser.java b/app/src/main/java/ru/vtosters/lite/utils/ExternalLinkParser.java index 4010e11b5..be7b129bd 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/ExternalLinkParser.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ExternalLinkParser.java @@ -68,7 +68,7 @@ public class ExternalLinkParser { qualities.toArray(new String[0]), (dialog, which) -> startExternalVideo(context, urls.get(which)) ) - .show(); + .show(); return true; } @@ -93,7 +93,7 @@ public class ExternalLinkParser { */ public static boolean parseVKVideo(VideoFile videoFile, List qualities, List urls) { if (!TextUtils.isEmpty(videoFile.D)) { - qualities.add("2160p"); + qualities.add("2160p"); urls.add(videoFile.D); } @@ -138,11 +138,11 @@ public class ExternalLinkParser { String packageName = getMXPlayerPackageName(context); if (!TextUtils.isEmpty(packageName)) { intent.setPackage(packageName) - .setDataAndType(uri, "application/mp4") - .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + .setDataAndType(uri, "application/mp4") + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } else { intent.setAction(Intent.ACTION_VIEW) - .setDataAndType(uri, "video/mp4"); + .setDataAndType(uri, "video/mp4"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); diff --git a/app/src/main/java/ru/vtosters/lite/utils/GmsUtils.java b/app/src/main/java/ru/vtosters/lite/utils/GmsUtils.java index d70256d3a..b8d43425b 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/GmsUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/GmsUtils.java @@ -12,6 +12,7 @@ import com.vtosters.lite.R; public class GmsUtils { private static final boolean needToSpoof = !isGmsInstalled() && isFakeGmsInstalled(); + public static boolean isGmsInstalled() { try { AndroidUtils.getGlobalContext().getPackageManager().getPackageInfo("com.google.android.gms", 0); diff --git a/app/src/main/java/ru/vtosters/lite/utils/IOUtils.java b/app/src/main/java/ru/vtosters/lite/utils/IOUtils.java index d5e09582a..c9c362253 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/IOUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/IOUtils.java @@ -1,5 +1,10 @@ package ru.vtosters.lite.utils; +import javax.crypto.Cipher; +import javax.crypto.CipherInputStream; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; import java.io.*; import java.net.URL; import java.net.URLConnection; @@ -10,23 +15,17 @@ import java.security.Key; import java.security.NoSuchAlgorithmException; import java.util.Arrays; -import javax.crypto.Cipher; -import javax.crypto.CipherInputStream; -import javax.crypto.NoSuchPaddingException; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - public class IOUtils { public static final int BUFFER_SIZE = 8192; public static byte[] decodeStream(InputStream encIs, String keyURL) - throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IOException { + throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException, IOException { CipherInputStream cip = new CipherInputStream(encIs, getCipher(keyURL)); return readFully(cip); } public static Cipher getCipher(String key) - throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException { + throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, InvalidKeyException { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); Key keySpec = new SecretKeySpec(key.getBytes(), "AES"); // bypassing ecb @@ -38,70 +37,70 @@ public class IOUtils { } public static InputStream openStream(String url) - throws IOException { + throws IOException { URLConnection connection = new URL(url).openConnection(); return connection.getInputStream(); } public static String readAllLines(File file) - throws IOException { + throws IOException { return readAllLines(new FileInputStream(file)); } public static String readAllLines(InputStream is) - throws IOException { + throws IOException { return new String(readFully(is), StandardCharsets.UTF_8); } public static byte[] readFully(final InputStream is) - throws IOException { + throws IOException { final var bos = new ByteArrayOutputStream(); - try(bos) { + try (bos) { final byte[] buff = new byte[BUFFER_SIZE]; int len; - while((len = is.read(buff)) > 0) + while ((len = is.read(buff)) > 0) bos.write(buff, 0, len); return bos.toByteArray(); } } public static byte[] readFully(final File in) - throws IOException { + throws IOException { return readFully(new FileInputStream(in)); } public static void writeToFile(File file, String content) - throws IOException { + throws IOException { writeToFile(file, content.getBytes(StandardCharsets.UTF_8)); } public static void writeToFile(File file, byte[] content) - throws IOException { + throws IOException { var fos = new FileOutputStream(file); fos.write(content); fos.close(); } public static void copy(final InputStream is, final OutputStream os) - throws IOException { + throws IOException { final byte[] buff = new byte[BUFFER_SIZE]; int len; - while((len = is.read(buff)) > 0) + while ((len = is.read(buff)) > 0) os.write(buff, 0, len); } public static void copy(final byte[] buffer, final File out) - throws IOException { + throws IOException { copy(new ByteArrayInputStream(buffer), new FileOutputStream(out)); } public static void copy(final InputStream is, final File out) - throws IOException { + throws IOException { copy(is, new FileOutputStream(out)); } public static void copy(final File in, final File out) - throws IOException { + throws IOException { copy(new FileInputStream(in), new FileOutputStream(out)); } diff --git a/app/src/main/java/ru/vtosters/lite/utils/ImageUtils.java b/app/src/main/java/ru/vtosters/lite/utils/ImageUtils.java index 66b29c15a..b2a875e9d 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/ImageUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ImageUtils.java @@ -14,13 +14,14 @@ public class ImageUtils { // must be called asynchronously public static Drawable getDrawableFromUrl(String url, int placeholderRes, boolean rounded, boolean scaled) { - if (NetworkUtils.isNetworkConnected() && !NetworkUtils.isNetworkIsSlow()) { + if (NetworkUtils.isNetworkConnected()) { try { var bmp = BitmapFactory.decodeStream(new URL(url).openStream()); if (bmp != null) { if (rounded) bmp = getBitmapClippedCircle(bmp); - if (scaled) bmp = Bitmap.createScaledBitmap(bmp, AndroidUtils.dp2px(256), AndroidUtils.dp2px(256), true); + if (scaled) + bmp = Bitmap.createScaledBitmap(bmp, AndroidUtils.dp2px(256), AndroidUtils.dp2px(256), true); return new BitmapDrawable(AndroidUtils.getResources(), bmp); } diff --git a/app/src/main/java/ru/vtosters/lite/utils/LifecycleUtils.java b/app/src/main/java/ru/vtosters/lite/utils/LifecycleUtils.java index 06e70fba6..5e6c075bd 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/LifecycleUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/LifecycleUtils.java @@ -7,9 +7,6 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Handler; - -import com.vk.core.fragments.FragmentImpl; -import com.vk.navigation.Navigator; import com.vtosters.lite.MainActivity; import java.util.ArrayList; diff --git a/app/src/main/java/ru/vtosters/lite/utils/NavigatorUtils.java b/app/src/main/java/ru/vtosters/lite/utils/NavigatorUtils.java index 83155c7c5..ba7bec8f4 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/NavigatorUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/NavigatorUtils.java @@ -8,7 +8,7 @@ import ru.vtosters.lite.ui.fragments.VTSettings; public class NavigatorUtils { - public static void switchFragment(Context context, Class< ? extends FragmentImpl > fragmentClz) { + public static void switchFragment(Context context, Class fragmentClz) { var intent = new Navigator(fragmentClz) .b(context) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); @@ -21,8 +21,10 @@ public class NavigatorUtils { .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } + /** - * switch to settings for {@link Intent.ACTION_APPLICATION_PREFERENCES}*/ + * switch to settings for {@link Intent.ACTION_APPLICATION_PREFERENCES} + */ public static void switchToSettings(Context context) { var intent = new Navigator(VTSettings.class) .b(context) diff --git a/app/src/main/java/ru/vtosters/lite/utils/NetworkUtils.java b/app/src/main/java/ru/vtosters/lite/utils/NetworkUtils.java index fd055357b..8a3e689f6 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/NetworkUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/NetworkUtils.java @@ -2,13 +2,9 @@ package ru.vtosters.lite.utils; import android.content.Context; import android.net.ConnectivityManager; -import android.net.Network; -import android.net.NetworkCapabilities; import android.os.Build; -import android.telephony.TelephonyManager; public class NetworkUtils { - public static boolean isNetworkConnected() { ConnectivityManager cm = (ConnectivityManager) AndroidUtils.getGlobalContext().getSystemService(Context.CONNECTIVITY_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { @@ -17,41 +13,4 @@ public class NetworkUtils { return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnectedOrConnecting(); } } // Network check - - public static boolean isNetworkIsSlow() { - if (!isNetworkConnected()) return true; - - var isConnectionSucks = false; - var cm = (ConnectivityManager) AndroidUtils.getGlobalContext().getSystemService(Context.CONNECTIVITY_SERVICE); - - if (cm == null) return false; - - NetworkCapabilities nc; - Network[] networks = cm.getAllNetworks(); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - nc = cm.getNetworkCapabilities(cm.getActiveNetwork()); - } else { - nc = cm.getNetworkCapabilities(networks[0]); - } - - var downSpeed = nc.getLinkDownstreamBandwidthKbps(); - var info = cm.getActiveNetworkInfo(); - - if (info == null) return false; - - if (info.getType() == ConnectivityManager.TYPE_MOBILE) { - switch (info.getSubtype()) { - case TelephonyManager.NETWORK_TYPE_1xRTT, TelephonyManager.NETWORK_TYPE_EDGE, TelephonyManager.NETWORK_TYPE_CDMA, TelephonyManager.NETWORK_TYPE_EVDO_0, TelephonyManager.NETWORK_TYPE_EVDO_A, TelephonyManager.NETWORK_TYPE_GPRS, TelephonyManager.NETWORK_TYPE_HSDPA, TelephonyManager.NETWORK_TYPE_UMTS, TelephonyManager.NETWORK_TYPE_EHRPD -> { - return true; - } - } - } - - if (downSpeed < 2500) { - isConnectionSucks = true; - } - - return isConnectionSucks; - } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/NewsFeedFiltersUtils.java b/app/src/main/java/ru/vtosters/lite/utils/NewsFeedFiltersUtils.java index 555f13b49..5be172a7c 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/NewsFeedFiltersUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/NewsFeedFiltersUtils.java @@ -1,21 +1,9 @@ package ru.vtosters.lite.utils; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; -import static ru.vtosters.lite.utils.Preferences.getString; -import static ru.vtosters.lite.utils.Preferences.ads; -import static ru.vtosters.lite.utils.Preferences.adsgroup; -import static ru.vtosters.lite.utils.Preferences.authorsrecomm; -import static ru.vtosters.lite.utils.Preferences.captions; -import static ru.vtosters.lite.utils.Preferences.copyright_post; -import static ru.vtosters.lite.utils.Preferences.dev; -import static ru.vtosters.lite.utils.Preferences.friendsrecomm; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; -import static ru.vtosters.lite.utils.Preferences.postsrecomm; - import android.util.Log; - import org.json.JSONException; import org.json.JSONObject; +import ru.vtosters.lite.hooks.AdBlockHook; import java.io.IOException; import java.util.ArrayList; @@ -23,7 +11,8 @@ import java.util.Arrays; import java.util.List; import java.util.Scanner; -import ru.vtosters.lite.hooks.AdBlockHook; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.Preferences.*; public class NewsFeedFiltersUtils { public static List mFilters; diff --git a/app/src/main/java/ru/vtosters/lite/utils/OTAUtils.java b/app/src/main/java/ru/vtosters/lite/utils/OTAUtils.java index 8405cb487..f5ae30491 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/OTAUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/OTAUtils.java @@ -1,19 +1,13 @@ package ru.vtosters.lite.utils; import android.util.Log; - +import okhttp3.*; import org.json.JSONException; import org.json.JSONObject; +import ru.vtosters.lite.di.singleton.VtOkHttpClient; import java.io.IOException; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; -import ru.vtosters.lite.di.singleton.VtOkHttpClient; - public class OTAUtils { private static final String LATEST_RELEASE_URL = "https://api.github.com/repositories/473685743/releases/latest"; diff --git a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java index 1cfd9737a..66d7d0608 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/Preferences.java +++ b/app/src/main/java/ru/vtosters/lite/utils/Preferences.java @@ -9,19 +9,11 @@ import android.os.StrictMode; import com.vtosters.lite.data.Users; import com.vtosters.lite.fragments.SettingsListFragment; import ru.vtosters.lite.BuildConfig; +import ru.vtosters.lite.proxy.ProxyUtils; import ru.vtosters.lite.ui.fragments.VTSettings; import java.security.NoSuchAlgorithmException; -import static java.lang.Long.MAX_VALUE; -import static ru.vtosters.lite.proxy.ProxyUtils.setProxy; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; -import static ru.vtosters.lite.utils.AndroidUtils.getPackageName; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.setupFilters; -import static ru.vtosters.lite.utils.SignatureChecker.validateAppSignature; -import static ru.vtosters.lite.utils.VTVerifications.isPrometheus; -import static ru.vtosters.lite.utils.VTVerifications.isVerified; - public class Preferences { public static void init(Application application) throws Exception { @@ -29,8 +21,8 @@ public class Preferences { StrictMode.setThreadPolicy(policy); GmsUtils.fixGapps(); - setProxy(); - setupFilters(); + ProxyUtils.setProxy(); + NewsFeedFiltersUtils.setupFilters(); VTVerifications.load(application); LifecycleUtils.registerActivities(application); @@ -40,8 +32,9 @@ public class Preferences { public static String getBuildName() { return AndroidUtils.upString(BuildConfig.BUILD_TYPE); } + public static SharedPreferences getPreferences() { - return getGlobalContext().getSharedPreferences("com.vtosters.lite_preferences", Context.MODE_PRIVATE); + return AndroidUtils.getGlobalContext().getSharedPreferences("com.vtosters.lite_preferences", Context.MODE_PRIVATE); } public static String getString(String name) { @@ -59,7 +52,7 @@ public class Preferences { } // Set bool by default and get value public static SharedPreferences getPrefsFromFile(String filename) { - return getGlobalContext().getSharedPreferences(filename, Context.MODE_PRIVATE); + return AndroidUtils.getGlobalContext().getSharedPreferences(filename, Context.MODE_PRIVATE); } public static boolean systemtheme() { @@ -293,7 +286,7 @@ public class Preferences { public static boolean isNewBuild() { try { - return getPreferences().getLong("setupTime", 0L) != AndroidUtils.getGlobalContext().getPackageManager().getPackageInfo(getPackageName(), 0).lastUpdateTime; + return getPreferences().getLong("setupTime", 0L) != AndroidUtils.getGlobalContext().getPackageManager().getPackageInfo(AndroidUtils.getPackageName(), 0).lastUpdateTime; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return false; @@ -302,7 +295,7 @@ public class Preferences { public static void updateBuildNumber() { try { - getPreferences().edit().putLong("setupTime", AndroidUtils.getGlobalContext().getPackageManager().getPackageInfo(getPackageName(), 0).lastUpdateTime).apply(); + getPreferences().edit().putLong("setupTime", AndroidUtils.getGlobalContext().getPackageManager().getPackageInfo(AndroidUtils.getPackageName(), 0).lastUpdateTime).apply(); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } @@ -310,7 +303,7 @@ public class Preferences { public static boolean isValidSignature() { try { - return validateAppSignature(); + return SignatureChecker.validateAppSignature(); } catch (PackageManager.NameNotFoundException | NoSuchAlgorithmException e) { e.printStackTrace(); } @@ -318,11 +311,11 @@ public class Preferences { } public static boolean hasVerification() { - return isVerified(AccountManagerUtils.getUserId()); + return VTVerifications.isVerified(AccountManagerUtils.getUserId()); } public static boolean hasSpecialVerif() { - return isPrometheus(AccountManagerUtils.getUserId()); + return VTVerifications.isPrometheus(AccountManagerUtils.getUserId()); } public static boolean isLikesOnRightEnabled() { @@ -336,7 +329,7 @@ public class Preferences { case "1gb" -> 1073741824L; case "2gb" -> 2147483648L; case "5gb" -> 5368709120L; - default -> MAX_VALUE; + default -> Long.MAX_VALUE; }; } diff --git a/app/src/main/java/ru/vtosters/lite/utils/ReflectionUtils.java b/app/src/main/java/ru/vtosters/lite/utils/ReflectionUtils.java index 34d7305b1..8cab285c2 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/ReflectionUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ReflectionUtils.java @@ -1,9 +1,10 @@ package ru.vtosters.lite.utils; import android.content.Context; -import com.vk.im.ui.views.Corners; -import java.lang.reflect.*; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; public class ReflectionUtils { @@ -22,65 +23,65 @@ public class ReflectionUtils { throws NoSuchFieldException { NoSuchFieldException ex = null; Field fld = null; - for(; clz != null; clz = clz.getSuperclass()) { + for (; clz != null; clz = clz.getSuperclass()) { try { fld = clz.getDeclaredField(fieldName); break; - } catch(NoSuchFieldException e) { + } catch (NoSuchFieldException e) { ex = e; } } - if(fld == null) throw ex; + if (fld == null) throw ex; fld.setAccessible(true); return fld; } public static Field findField(Object instance, String fieldName) - throws NoSuchFieldException { + throws NoSuchFieldException { return findField(instance.getClass(), fieldName); } public static Constructor findConstructor(Class clz, Class... params) - throws NoSuchMethodException { + throws NoSuchMethodException { Constructor cctor = null; - for(; clz != null; clz = clz.getSuperclass()) { + for (; clz != null; clz = clz.getSuperclass()) { try { cctor = clz.getDeclaredConstructor(params); - } catch(NoSuchMethodException ignored) { + } catch (NoSuchMethodException ignored) { } } - if(cctor == null) throw new NoSuchMethodException(""); + if (cctor == null) throw new NoSuchMethodException(""); cctor.setAccessible(true); return cctor; } public static Constructor findConstructor(Object instance, Class... params) - throws NoSuchMethodException { + throws NoSuchMethodException { return findConstructor(instance.getClass(), params); } public static Method findMethod(Class clz, String methodName, Class... params) - throws NoSuchMethodException { + throws NoSuchMethodException { Method mtd = null; - for(; clz != null; clz = clz.getSuperclass()) { + for (; clz != null; clz = clz.getSuperclass()) { try { mtd = clz.getDeclaredMethod(methodName, params); - } catch(NoSuchMethodException ignored) { + } catch (NoSuchMethodException ignored) { } } - if(mtd == null) throw new NoSuchMethodException("methodName == " + methodName); + if (mtd == null) throw new NoSuchMethodException("methodName == " + methodName); mtd.setAccessible(true); return mtd; } public static Method findMethod(Object instance, String methodName, Class... params) - throws NoSuchMethodException { + throws NoSuchMethodException { return findMethod(instance.getClass(), methodName, params); } public static Object getActivityThread(Context context, Class clz) { try { - if(clz == null) clz = findClass("android.app.ActivityThread"); + if (clz == null) clz = findClass("android.app.ActivityThread"); final Method currentActivityThreadMtd = findMethod(clz, "currentActivityThread"); Object currentActivityThread = currentActivityThreadMtd.invoke(null); if (currentActivityThread == null && context != null) { @@ -93,7 +94,7 @@ public class ReflectionUtils { currentActivityThread = activityThreadFld.get(apk); } return currentActivityThread; - } catch(Throwable th) { + } catch (Throwable th) { return null; } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/RenameTool.java b/app/src/main/java/ru/vtosters/lite/utils/RenameTool.java index 5f0ad775a..d9a9e9aa8 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/RenameTool.java +++ b/app/src/main/java/ru/vtosters/lite/utils/RenameTool.java @@ -1,15 +1,7 @@ package ru.vtosters.lite.utils; -import static ru.vtosters.lite.utils.AndroidUtils.dp2px; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; -import static ru.vtosters.lite.utils.AndroidUtils.sendToast; -import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor; -import static ru.vtosters.lite.utils.ThemesUtils.getSTextAttr; -import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; - import android.content.Context; import android.content.Intent; -import android.content.res.ColorStateList; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; @@ -17,16 +9,13 @@ import android.util.SparseArray; import android.view.ViewGroup; import android.widget.EditText; import android.widget.LinearLayout; - import androidx.core.util.Pair; - import com.vk.core.dialogs.alert.VkAlertDialog; import com.vk.dto.user.UserProfile; import com.vk.im.engine.models.users.User; import com.vtosters.lite.R; import com.vtosters.lite.api.ExtendedCommunityProfile; import com.vtosters.lite.api.ExtendedUserProfile; - import org.json.JSONException; import org.json.JSONObject; @@ -34,6 +23,10 @@ import java.lang.reflect.Field; import java.net.URLDecoder; import java.net.URLEncoder; +import static ru.vtosters.lite.utils.AndroidUtils.*; +import static ru.vtosters.lite.utils.ThemesUtils.getSTextAttr; +import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; + public class RenameTool { private static final int DB_VERSION = 2; diff --git a/app/src/main/java/ru/vtosters/lite/utils/SignatureChecker.java b/app/src/main/java/ru/vtosters/lite/utils/SignatureChecker.java index c85c93042..1362bcf7b 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/SignatureChecker.java +++ b/app/src/main/java/ru/vtosters/lite/utils/SignatureChecker.java @@ -1,10 +1,5 @@ package ru.vtosters.lite.utils; -import static android.content.pm.PackageManager.GET_SIGNATURES; -import static android.content.pm.PackageManager.NameNotFoundException; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; -import static ru.vtosters.lite.utils.AndroidUtils.getPackageName; - import android.annotation.SuppressLint; import android.content.pm.PackageInfo; import android.content.pm.Signature; @@ -12,6 +7,11 @@ import android.content.pm.Signature; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import static android.content.pm.PackageManager.GET_SIGNATURES; +import static android.content.pm.PackageManager.NameNotFoundException; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getPackageName; + public class SignatureChecker { private static final String APP_SIGNATURE = "QzNFQTI3Q0ExNEJENzJFM0U2QUUyMDM0OTdCNDQ0NUFEQUMxRjk0NQ=="; diff --git a/app/src/main/java/ru/vtosters/lite/utils/ThemesUtils.java b/app/src/main/java/ru/vtosters/lite/utils/ThemesUtils.java index 7ef5d4010..44b10782e 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/ThemesUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ThemesUtils.java @@ -81,11 +81,11 @@ public class ThemesUtils { public static boolean isDarkTheme() { return VKThemeHelper.r(); } - + public static boolean isMonetTheme() { return getBoolValue("monettheme", false) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S; } - + public static boolean isAmoledTheme() { return getBoolValue("amoledtheme", false); } @@ -108,7 +108,7 @@ public class ThemesUtils { public static void reserveAccentColor(int accent, boolean async) { final var editor = Preferences.getPreferences().edit(); editor.putInt("reserved_accent_color", accent); - if(async) editor.apply(); + if (async) editor.apply(); else editor.commit(); } @@ -122,7 +122,8 @@ public class ThemesUtils { try { ThemesUtils.colorHandles(view); ThemesUtils.setCursorColor((EditText) view); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } } @SuppressLint("DiscouragedPrivateApi") @@ -159,6 +160,7 @@ public class ThemesUtils { Log.e("ThemesUtils", "setCursorColor: ", e); } } + @SuppressLint("DiscouragedPrivateApi") public static void colorHandles(TextView view) { try { @@ -310,7 +312,7 @@ public class ThemesUtils { return MilkshakeHelper.e(); } - public static void setImageViewColored(ImageView view){ + public static void setImageViewColored(ImageView view) { view.setColorFilter(ThemesUtils.getAccentColor(), PorterDuff.Mode.MULTIPLY); } diff --git a/app/src/main/java/ru/vtosters/lite/utils/VKAccountDB.java b/app/src/main/java/ru/vtosters/lite/utils/VKAccountDB.java index e14d3f3af..f55ced782 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/VKAccountDB.java +++ b/app/src/main/java/ru/vtosters/lite/utils/VKAccountDB.java @@ -84,7 +84,7 @@ public class VKAccountDB { inputStream.close(); outputStream.close(); - AndroidUtils.sendToast( AndroidUtils.getString("accounts_saved_by_path") + " " + file.getPath()); + AndroidUtils.sendToast(AndroidUtils.getString("accounts_saved_by_path") + " " + file.getPath()); } catch (IOException e) { e.printStackTrace(); AndroidUtils.sendToast(AndroidUtils.getString("error_saving_file")); diff --git a/app/src/main/java/ru/vtosters/lite/utils/VTVerifications.java b/app/src/main/java/ru/vtosters/lite/utils/VTVerifications.java index 58624bc41..168419d8d 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/VTVerifications.java +++ b/app/src/main/java/ru/vtosters/lite/utils/VTVerifications.java @@ -1,31 +1,22 @@ package ru.vtosters.lite.utils; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; -import static ru.vtosters.lite.utils.Preferences.hasVerification; - import android.content.Context; import android.util.Log; - import com.vk.dto.common.VerifyInfo; import com.vk.navigation.NavigatorKeys; - +import okhttp3.*; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import ru.vtosters.lite.di.singleton.VtOkHttpClient; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Random; -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.MediaType; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import ru.vtosters.lite.di.singleton.VtOkHttpClient; +import static ru.vtosters.lite.utils.Preferences.getBoolValue; +import static ru.vtosters.lite.utils.Preferences.hasVerification; public class VTVerifications { public static final List sVerifications = new ArrayList<>(); @@ -64,7 +55,7 @@ public class VTVerifications { @Override public void a(Call call, IOException e) { - Log.d("VTVerifications", "" + e); + Log.d("VTVerifications", String.valueOf(e)); } }); diff --git a/app/src/main/java/ru/vtosters/lite/utils/WebAppUtils.java b/app/src/main/java/ru/vtosters/lite/utils/WebAppUtils.java index 600ad3e3e..49a88db34 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/WebAppUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/WebAppUtils.java @@ -1,24 +1,21 @@ package ru.vtosters.lite.utils; -import org.json.JSONObject; -import org.json.JSONException; - -import com.vk.core.ui.themes.VKThemeHelper; import com.vk.api.base.ApiConfig; import com.vk.core.preference.Preference; -import b.h.g.g.BuildInfo; - +import com.vk.core.ui.themes.VKThemeHelper; +import org.json.JSONException; +import org.json.JSONObject; import ru.vtosters.lite.proxy.api.ApiProxy; public class WebAppUtils { public static JSONObject getWebAppConfig() throws JSONException { JSONObject jSONObject = new JSONObject() - .put("scheme", VKThemeHelper.l().b()) - .put("app", "vkclient") - .put("app_id", ApiConfig.a) - .put("appearance", VKThemeHelper.l().a() ? "light" : "dark") - .put("api_host", ApiProxy.linkReplacer(Preference.a().getString("apiHost", "api.vk.com"))); + .put("scheme", VKThemeHelper.l().b()) + .put("app", "vkclient") + .put("app_id", ApiConfig.a) + .put("appearance", VKThemeHelper.l().a() ? "light" : "dark") + .put("api_host", ApiProxy.linkReplacer(Preference.a().getString("apiHost", "api.vk.com"))); return jSONObject; } }