From 9eb0231e1af4a8a856a99667a29cbb0567aae3ac Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Fri, 23 Sep 2022 16:30:49 +0300 Subject: [PATCH] cleanup code --- .../ru/vtosters/lite/deviceinfo/Device.java | 50 +- .../lite/deviceinfo/DeviceInfoCollector.java | 190 +------- .../ru/vtosters/lite/dnr/DNRInjector.java | 10 +- .../lite/downloaders/AudioDownloader.java | 4 - .../lite/downloaders/MessagesDownloader.java | 149 +++--- .../lite/downloaders/VideoDownloader.java | 4 +- .../lite/encryption/EncryptProvider.java | 11 +- .../java/ru/vtosters/lite/foaf/FoafBase.java | 4 +- .../ru/vtosters/lite/hooks/AdBlockHook.java | 2 +- .../ru/vtosters/lite/hooks/CryptImHook.java | 9 +- .../vtosters/lite/hooks/DeviceInfoHook.java | 3 +- .../vtosters/lite/hooks/DockBarInjector.java | 3 +- .../java/ru/vtosters/lite/hooks/GcmHook.java | 5 +- .../ru/vtosters/lite/hooks/JsonInjectors.java | 7 +- .../ru/vtosters/lite/hooks/MessagesHook.java | 9 +- .../ru/vtosters/lite/hooks/NewsfeedHook.java | 2 +- .../ru/vtosters/lite/hooks/PhotoViewer.java | 2 +- .../vtosters/lite/hooks/PicRoundingHook.java | 11 +- .../ru/vtosters/lite/hooks/PostViewHook.java | 3 +- .../ru/vtosters/lite/hooks/RequestDumper.java | 5 +- .../lite/hooks/StartFragmentHook.java | 2 - .../ru/vtosters/lite/hooks/WritebarHook.java | 7 +- .../lite/hooks/ui/MusicBottomSheetHook.java | 15 +- .../ru/vtosters/lite/music/M3UDownloader.java | 3 +- .../ru/vtosters/lite/music/VKM3UParser.java | 8 +- .../music/cache/CacheDatabaseDelegate.java | 54 +-- .../music/cache/FileCacheImplementation.java | 2 +- .../music/cache/helpers/TracklistHelper.java | 2 +- .../cache/injectors/TracklistInjector.java | 6 +- .../music/callback/MusicCallbackBuilder.java | 2 +- .../lite/music/converter/ts/FFMpeg.java | 1 + .../lite/music/converter/ts/TSMerger.java | 1 + .../lite/music/downloader/AudioGet.java | 7 +- .../music/downloader/PlaylistDownloader.java | 17 +- .../music/downloader/ThumbnailDownloader.java | 2 - .../music/interfaces/ITrackDownloader.java | 5 +- .../MusicNotificationBuilder.java | 2 +- .../ru/vtosters/lite/proxy/GithubList.java | 5 +- .../ru/vtosters/lite/proxy/ProxyUtils.java | 28 +- .../ru/vtosters/lite/proxy/RandomProxy.java | 13 +- .../ru/vtosters/lite/proxy/api/ApiProxy.java | 7 +- .../vtosters/lite/proxy/api/VikaMobile.java | 11 +- .../vtosters/lite/proxy/http/CustomHttp.java | 13 +- .../ru/vtosters/lite/proxy/http/Jetkai.java | 7 +- .../vtosters/lite/proxy/http/TheSpeedX.java | 7 +- .../lite/proxy/https/CustomHttps.java | 13 +- .../ru/vtosters/lite/proxy/https/Jetkai.java | 7 +- .../vtosters/lite/proxy/https/Roosterkid.java | 7 +- .../lite/proxy/socks/CustomSocks.java | 9 +- .../ru/vtosters/lite/proxy/socks/Hookzof.java | 7 +- .../ru/vtosters/lite/proxy/socks/Jetkai.java | 7 +- .../vtosters/lite/proxy/socks/Roosterkid.java | 7 +- .../vtosters/lite/proxy/socks/TheSpeedX.java | 7 +- .../vtosters/lite/proxy/socks/Zaborona.java | 5 +- .../lite/translators/BaseTranslator.java | 29 +- .../lite/translators/DeepLTranslator.java | 10 +- .../ui/activities/VKAdminTokenActivity.java | 2 +- .../lite/ui/adapters/CategorizedAdapter.java | 8 +- .../lite/ui/adapters/ImagineArrayAdapter.java | 10 +- .../ui/adapters/MessagesPreviewAdapter.java | 12 +- .../lite/ui/adapters/StickerPackAdapter.java | 1 - .../lite/ui/components/CrashReporter.java | 8 +- .../ui/components/DockBarEditorManager.java | 12 +- .../StickerTouchHelperCallback.java | 2 +- .../ui/components/SuperAppEditorManager.java | 9 +- .../ui/dialogs/RoundingSeekbarDialog.java | 3 +- .../lite/ui/dialogs/ThemeChanging.java | 5 +- .../lite/ui/fragments/FeedFragment.java | 20 +- .../lite/ui/fragments/InterfaceFragment.java | 5 +- .../lite/ui/fragments/MediaFragment.java | 62 ++- .../lite/ui/fragments/MessagesFragment.java | 2 +- .../lite/ui/fragments/OtherFragment.java | 65 ++- .../lite/ui/fragments/ThemesFragment.java | 27 +- .../vtosters/lite/ui/vkui/VBListBuilder.java | 9 +- .../lite/ui/wallpapers/ConvolutionMatrix.java | 10 +- .../lite/ui/wallpapers/ImageFilters.java | 439 ++---------------- .../ui/wallpapers/WallpaperMenuFragment.java | 22 +- .../ui/wallpapers/WallpaperPreferences.java | 16 +- .../lite/ui/wallpapers/WallpapersHooks.java | 37 +- .../ru/vtosters/lite/utils/AndroidUtils.java | 7 +- .../ru/vtosters/lite/utils/ContactsUtils.java | 14 +- .../lite/utils/ExternalLinkParser.java | 6 +- .../java/ru/vtosters/lite/utils/IOUtils.java | 2 +- .../vtosters/lite/utils/LifecycleUtils.java | 1 - .../lite/utils/NewsFeedFiltersUtils.java | 34 +- .../ru/vtosters/lite/utils/ProfileHider.java | 3 +- .../ru/vtosters/lite/utils/RenameTool.java | 30 +- .../ru/vtosters/lite/utils/ThemesUtils.java | 2 +- .../ru/vtosters/lite/utils/VKMeHandler.java | 30 +- 89 files changed, 568 insertions(+), 1165 deletions(-) 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 2f541e3fb..7536c7dee 100644 --- a/app/src/main/java/ru/vtosters/lite/deviceinfo/Device.java +++ b/app/src/main/java/ru/vtosters/lite/deviceinfo/Device.java @@ -1,58 +1,22 @@ package ru.vtosters.lite.deviceinfo; -import androidx.annotation.NonNull; +import static ru.vtosters.lite.utils.About.getBuildNumber; public class Device { - private String androidId; - private String bluetoothMac; private String boardName; private String brandName; - private String cpuAbi; private String deviceName; - private String firmwareDisplay; - private String firmwareId; private String manufacturerName; private String modelName; private String productName; private int sdkVersion; - private String serialId; - private String wifiMac; - public Device withSerialId(String str) { - this.serialId = str; - return this; - } - - public Device withAndroidId(String str) { - this.androidId = str; - return this; - } - - public Device withWifiMac(String str) { - this.wifiMac = str; - return this; - } - - public Device withBluetoothMac(String str) { - this.bluetoothMac = str; - return this; - } public Device withSdkVersion(int i) { this.sdkVersion = i; return this; } - public Device withFirmwareId(String str) { - this.firmwareId = str; - return this; - } - - public Device withFirmwareDisplay(String str) { - this.firmwareDisplay = str; - return this; - } - public Device withProductName(String str) { this.productName = str; return this; @@ -68,11 +32,6 @@ public class Device { return this; } - public Device withCpuAbi(String str) { - this.cpuAbi = str; - return this; - } - public Device withManufacturerName(String str) { this.manufacturerName = str; return this; @@ -88,12 +47,7 @@ public class Device { return this; } - @NonNull - public String toString() { - return "Device{serialId='" + this.serialId + "', androidId='" + this.androidId + "', wifiMac='" + this.wifiMac + "', bluetoothMac='" + this.bluetoothMac + "'}"; - } - public String toDeviceName() { - return "Device{sdkVersion=" + this.sdkVersion + ", productName='" + this.productName + "', deviceName='" + this.deviceName + "', boardName='" + this.boardName + "', cpuAbi='" + this.cpuAbi + "', manufacturerName='" + this.manufacturerName + "', brandName='" + this.brandName + "', modelName='" + this.modelName + "'}"; + return "Device information: " + "commit='" + getBuildNumber() + "', sdkVersion=" + this.sdkVersion + ", productName='" + this.productName + "', deviceName='" + this.deviceName + "', boardName='" + this.boardName + "', manufacturerName='" + this.manufacturerName + "', brandName='" + this.brandName + "', modelName='" + this.modelName + "'"; } } 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 e3eb25ce8..44c2d67f0 100644 --- a/app/src/main/java/ru/vtosters/lite/deviceinfo/DeviceInfoCollector.java +++ b/app/src/main/java/ru/vtosters/lite/deviceinfo/DeviceInfoCollector.java @@ -1,195 +1,11 @@ package ru.vtosters.lite.deviceinfo; -import android.annotation.SuppressLint; -import android.bluetooth.BluetoothAdapter; -import android.content.Context; -import android.net.wifi.WifiInfo; -import android.net.wifi.WifiManager; import android.os.Build; -import android.provider.Settings; -import android.text.TextUtils; -import android.util.Log; - -import androidx.core.os.EnvironmentCompat; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.net.NetworkInterface; -import java.util.Collections; public class DeviceInfoCollector { - private static final String TAG = "DeviceInfoCollector"; - public Device collect(Context context) { - return new Device().withSerialId(serialId()).withAndroidId(androidId(context)).withWifiMac(wifiMac(context)).withBluetoothMac(bluetoothMac(context)).withSdkVersion(Build.VERSION.SDK_INT).withFirmwareId(Build.ID).withFirmwareDisplay(Build.DISPLAY).withProductName(Build.PRODUCT).withDeviceName(Build.DEVICE).withBoardName(Build.BOARD).withCpuAbi(Build.CPU_ABI).withManufacturerName(Build.MANUFACTURER).withBrandName(Build.BRAND).withModelName(Build.MODEL); - } - - private String serialId() { - String str; - try { - @SuppressLint("PrivateApi") - Class cls = Class.forName("android.os.SystemProperties"); - Method method = cls.getMethod("get", String.class); - str = (String) method.invoke(cls, "gsm.sn1"); - if (isInvalidSerial(str)) { - str = (String) method.invoke(cls, "ril.serialnumber"); - } - if (isInvalidSerial(str)) { - str = (String) method.invoke(cls, "ro.serialno"); - } - if (isInvalidSerial(str)) { - str = (String) method.invoke(cls, "sys.serialnumber"); - } - if (isInvalidSerial(str)) { - str = Build.SERIAL; - } - } catch (Exception e) { - Log.d(TAG, "Serial ID obtaining failed: ", e); - } - str = null; - if (str != null) { - return str.toLowerCase(); - } - return null; - } - - @SuppressLint("HardwareIds") - private String androidId(Context context) { - return Settings.Secure.getString(context.getContentResolver(), "android_id").toLowerCase(); - } - - private String wifiMac(Context context) { - String wifiMacFromManager = wifiMacFromManager(context); - if (isInvalidMac(wifiMacFromManager)) { - wifiMacFromManager = wifiMacFromNetworkInterfaces(); - } - if (isInvalidMac(wifiMacFromManager)) { - wifiMacFromManager = wifiMacFromFileSystem(); - } - if (isInvalidMac(wifiMacFromManager)) { - wifiMacFromManager = null; - } - if (wifiMacFromManager != null) { - return wifiMacFromManager.toLowerCase(); - } - return null; - } - - private String wifiMacFromManager(Context context) { - WifiInfo connectionInfo; - try { - WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); - if (wifiManager == null || (connectionInfo = wifiManager.getConnectionInfo()) == null) { - return null; - } - return null; - } catch (Exception e) { - Log.d(TAG, "WiFi MAC obtaining from manager failed: ", e); - return null; - } - } - - private String wifiMacFromNetworkInterfaces() { - try { - for (NetworkInterface networkInterface : Collections.list(NetworkInterface.getNetworkInterfaces())) { - if ("wlan0".equalsIgnoreCase(networkInterface.getName())) { - byte[] hardwareAddress = networkInterface.getHardwareAddress(); - if (hardwareAddress == null) { - return null; - } - StringBuilder sb = new StringBuilder(); - int length = hardwareAddress.length; - for (int i = 0; i < length; i++) { - sb.append(String.format("%02X:", hardwareAddress[i])); - } - if (sb.length() > 0) { - sb.deleteCharAt(sb.length() - 1); - } - return sb.toString(); - } - } - return null; - } catch (Exception e) { - Log.d(TAG, "WiFi MAC obtaining from network interfaces failed: ", e); - return null; - } - } - - private String wifiMacFromFileSystem() { - try { - FileReader fileReader = new FileReader("/sys/class/net/wlan0/address"); - try { - BufferedReader bufferedReader = new BufferedReader(fileReader); - try { - String readLine = bufferedReader.readLine(); - bufferedReader.close(); - fileReader.close(); - return readLine; - } catch (Throwable th) { - th.addSuppressed(th); - } - } catch (Throwable th2) { - throw th2; - } - } catch (Exception e) { - Log.d(TAG, "WiFi MAC obtaining from file system failed: ", e); - return null; - } - return null; - } - - private String bluetoothMac(Context context) { - String bluetoothMacFromAdapter = bluetoothMacFromAdapter(); - if (isInvalidMac(bluetoothMacFromAdapter)) { - bluetoothMacFromAdapter = bluetoothMacFromContentResolver(context); - } - if (isInvalidMac(bluetoothMacFromAdapter)) { - bluetoothMacFromAdapter = null; - } - if (bluetoothMacFromAdapter != null) { - return bluetoothMacFromAdapter.toLowerCase(); - } - return null; - } - - private String bluetoothMacFromAdapter() { - try { - BluetoothAdapter defaultAdapter = BluetoothAdapter.getDefaultAdapter(); - if (defaultAdapter == null) { - return null; - } - if (Build.VERSION.SDK_INT < 23) { - return null; - } - Field declaredField = defaultAdapter.getClass().getDeclaredField("mService"); - declaredField.setAccessible(true); - Object obj = declaredField.get(defaultAdapter); - if (obj != null) { - return (String) obj.getClass().getMethod("getAddress").invoke(obj, new Object[0]); - } - return null; - } catch (Exception e) { - Log.d(TAG, "BT MAC obtaining from adapter failed: ", e); - return null; - } - } - - private String bluetoothMacFromContentResolver(Context context) { - try { - return Settings.Secure.getString(context.getContentResolver(), "bluetooth_address"); - } catch (Exception e) { - Log.d(TAG, "BT MAC obtaining from content resolver failed: ", e); - return null; - } - } - - private boolean isInvalidSerial(String str) { - return TextUtils.isEmpty(str) || EnvironmentCompat.MEDIA_UNKNOWN.equalsIgnoreCase(str); - } - - private boolean isInvalidMac(String str) { - return TextUtils.isEmpty(str) || "02:00:00:00:00:00".equalsIgnoreCase(str) || "00:00:00:00:00:00".equalsIgnoreCase(str); + public Device collect() { + return new Device().withSdkVersion(Build.VERSION.SDK_INT).withProductName(Build.PRODUCT).withDeviceName(Build.DEVICE).withBoardName(Build.BOARD).withManufacturerName(Build.MANUFACTURER).withBrandName(Build.BRAND).withModelName(Build.MODEL); } } + 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 aea805c2f..c0451697f 100644 --- a/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java +++ b/app/src/main/java/ru/vtosters/lite/dnr/DNRInjector.java @@ -57,7 +57,7 @@ public class DNRInjector { if (dialog != null) { try { peerId = dialog.getId(); - } catch (Exception e){ + } catch (Exception e) { Log.d("DialoggetId", "null"); } } @@ -139,7 +139,7 @@ public class DNRInjector { if (dialog != null) { try { peerId = dialog.getId(); - } catch (Exception e){ + } catch (Exception e) { Log.d("DialoggetId", "null"); } } @@ -178,7 +178,7 @@ public class DNRInjector { if (dialog != null) { try { peerId = dialog.getId(); - } catch (Exception e){ + } catch (Exception e) { Log.d("DialoggetId", "null"); } } @@ -240,7 +240,7 @@ public class DNRInjector { if (dialog != null) { try { peerId = dialog.getId(); - } catch (Exception e){ + } catch (Exception e) { Log.d("DialoggetId", "null"); } } @@ -312,7 +312,7 @@ public class DNRInjector { return true; } - if (msg instanceof MsgFromUser){ + if (msg instanceof MsgFromUser) { var text = ((MsgFromUser) msg).f(); var fullMsg = ((MsgFromUser) msg).j2(); // text + reply var reply = fullMsg.substring(text.length() + 1); 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 f6b64d3a3..fc21fddf8 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/AudioDownloader.java @@ -1,6 +1,5 @@ package ru.vtosters.lite.downloaders; -import static ru.vtosters.lite.music.cache.FileCacheImplementation.getTrackFolder; import static ru.vtosters.lite.utils.AccountManagerUtils.getUserId; import static ru.vtosters.lite.utils.AndroidUtils.getString; @@ -11,8 +10,6 @@ import com.vk.dto.music.MusicTrack; import com.vk.dto.music.Playlist; import java.io.File; -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; @@ -32,7 +29,6 @@ import ru.vtosters.lite.utils.IOUtils; */ public class AudioDownloader { - private static final Executor executor = Executors.newFixedThreadPool(4); public static void downloadPlaylist(Playlist playlist) { var tracks = PlaylistConverter.getPlaylist(playlist); diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/MessagesDownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/MessagesDownloader.java index 9dcf6e6f5..06c452283 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/MessagesDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/MessagesDownloader.java @@ -1,4 +1,5 @@ package ru.vtosters.lite.downloaders; + import static ru.vtosters.lite.encryption.EncryptProvider.decryptMessage; import static ru.vtosters.lite.net.Request.makeRequest; import static ru.vtosters.lite.proxy.ProxyUtils.getApi; @@ -30,18 +31,16 @@ import java.util.List; import java.util.Objects; import java.util.regex.Pattern; -public class MessagesDownloader{ +public class MessagesDownloader { + private static final String VK_DOMAIN = "vk.com"; private static SimpleDateFormat sdformat; - private static SparseArray usersArray; - private static final String VK_DOMAIN = "vk.com"; - - public static String formatTime(long now){ + public static String formatTime(long now) { return sdformat.format(new Date(now)); } - public static String join(CharSequence delimiter, Iterable elements){ + public static String join(CharSequence delimiter, Iterable elements) { Objects.requireNonNull(delimiter); Objects.requireNonNull(elements); @@ -54,7 +53,48 @@ public class MessagesDownloader{ return builder.toString(); } - public void downloadDialog(int peer_id, DialogDownloaderFormatProvider format, File out) throws Exception{ + private static String getPollHtml(JSONObject poll) throws JSONException { + StringBuilder pollHtml = new StringBuilder( + "
" + + "

" + poll.optString("question") + "

" + ); + + var answers = poll.optJSONArray("answers"); + + for (int i = 0; i < answers.length(); i++) { + var jsonObject = answers.optJSONObject(i); + if (jsonObject != null) + pollHtml.append("

").append(jsonObject.optString("text")).append(" · ").append(jsonObject.optString("votes")).append(" (").append(jsonObject.optString("rate")).append("%)

"); + } + + pollHtml.append("

").append(getString("chat_export_poll_voted")).append(" ").append(poll.optString("votes")).append(" ").append(getString("chat_export_users_name")).append("

"); + + return pollHtml.append("
").toString(); + } + + private static String getVideoHtml(JSONObject files) throws JSONException { + if (files == null) return getString("chat_export_video_nolinks"); + + Iterator keys = files.keys(); + StringBuilder videoHtml = new StringBuilder(); + + int qualityIndex = 0; + String[] quality = {"144", "240", "360", "480", "720", "1080", "1440", "2160"}; + + while (keys.hasNext()) { + String key = (String) keys.next(); + if (key.equals("mp4_" + quality[qualityIndex])) { + videoHtml.append("").append(quality[qualityIndex]).append("p").append(" "); + + if (qualityIndex == quality.length - 1) break; + ++qualityIndex; + } + } + + return videoHtml.toString(); + } + + public void downloadDialog(int peer_id, DialogDownloaderFormatProvider format, File out) throws Exception { sdformat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss", getResources().getConfiguration().locale); FileOutputStream fos = new FileOutputStream(out); @@ -77,7 +117,7 @@ public class MessagesDownloader{ })); } - public void fetchDialogInfo(int peer_id, int offset, FetchListener fl){ + public void fetchDialogInfo(int peer_id, int offset, FetchListener fl) { makeRequest("https://" + getApi() + "/method/messages.getHistory?extended=1&v=5.140&offset=" + offset + "&count=200&peer_id=" + peer_id + "&access_token=" + getUserToken(), response -> { try { @@ -99,7 +139,7 @@ public class MessagesDownloader{ }); } - private List parseMessages(JSONArray jsonArray) throws JSONException{ + private List parseMessages(JSONArray jsonArray) throws JSONException { ArrayList thing = new ArrayList<>(); for (int i = 0; i < jsonArray.length(); i++) { @@ -110,7 +150,7 @@ public class MessagesDownloader{ return thing; } - private void parseUsers(SparseArray array, @Nullable JSONArray jsonArray, boolean groups) throws JSONException{ + private void parseUsers(SparseArray array, @Nullable JSONArray jsonArray, boolean groups) throws JSONException { if (jsonArray == null) return; for (int i = 0; i < jsonArray.length(); i++) { @@ -119,11 +159,11 @@ public class MessagesDownloader{ } } - interface FetchListener{ + interface FetchListener { void onReceive(SparseArray users, List messages); } - static class MiniUser{ + static class MiniUser { public String firstName; public String lastName; public boolean isGroup; @@ -139,7 +179,7 @@ public class MessagesDownloader{ } } - static class MiniMsg{ + static class MiniMsg { long date; int fromId; int id; // message id @@ -150,7 +190,7 @@ public class MessagesDownloader{ JSONObject chat_action; JSONObject geo; - public MiniMsg(JSONObject obj) throws JSONException{ + public MiniMsg(JSONObject obj) throws JSONException { date = obj.getLong("date") * 1000; fromId = obj.getInt("from_id"); id = obj.getInt("id"); @@ -173,7 +213,7 @@ public class MessagesDownloader{ } // This class defines everything which is needed to create an output file - abstract static class DialogDownloaderFormatProvider{ + abstract static class DialogDownloaderFormatProvider { // Internal, for JSON/HTML abstract String provideDocumentStart(String dialogName, String date); @@ -184,9 +224,9 @@ public class MessagesDownloader{ abstract String provideMessage(MiniMsg message, MiniUser user) throws JSONException; } - public static class HtmlDialogDownloaderFormatProvider extends DialogDownloaderFormatProvider{ + public static class HtmlDialogDownloaderFormatProvider extends DialogDownloaderFormatProvider { @Override - String provideDocumentStart(String dialogName, String date){ + String provideDocumentStart(String dialogName, String date) { String style = ".vtex-milk-msg {\n" + " border-radius: 8px;\n" + " padding: 24px;\n" + @@ -282,17 +322,17 @@ public class MessagesDownloader{ } @Override - String provideDocumentEnd(){ + String provideDocumentEnd() { return ""; } @Override - String provideHeader(String dialogName, String date){ + String provideHeader(String dialogName, String date) { return "

VTLite

" + getString("chat_export_header") + " (" + date + ")
"; } @Override - String provideMessage(MiniMsg message, MiniUser user) throws JSONException{ + String provideMessage(MiniMsg message, MiniUser user) throws JSONException { String isOut = (user.id == getUserId()) ? " vtex-milk-msg-out" : ""; String geoPosition = ""; @@ -315,13 +355,13 @@ public class MessagesDownloader{ String userLink = (user.isGroup ? "club" : "id") + user.id; return "
" + - "

" + getString("from_lower") + " " + user.firstName + " " + user.lastName + " " + formatTime(message.date) + "

" + // TODO photo100 - "

" + mentionsReplace(message.text) + "

" + - geoPosition + - chatAction + - attaches + - reply + - fwdMessages + + "

" + getString("from_lower") + " " + user.firstName + " " + user.lastName + " " + formatTime(message.date) + "

" + // TODO photo100 + "

" + mentionsReplace(message.text) + "

" + + geoPosition + + chatAction + + attaches + + reply + + fwdMessages + "
"; } @@ -342,10 +382,10 @@ public class MessagesDownloader{ } return "" + - "
" + - "

" + getString("vkim_msg_fwd_single") + "

" + - "

" + user.firstName + " " + user.lastName + ": " + text + "

" + - "
" + + "
" + + "

" + getString("vkim_msg_fwd_single") + "

" + + "

" + user.firstName + " " + user.lastName + ": " + text + "

" + + "
" + "
"; } @@ -424,7 +464,7 @@ public class MessagesDownloader{ StringBuilder htmlAction = new StringBuilder("

"); - switch(type) { + switch (type) { case "chat_photo_update": htmlAction.append(getString("chat_export_avatar_update")); break; @@ -479,7 +519,7 @@ public class MessagesDownloader{ return htmlAction.append("

").toString(); } - private String getHtmlForAttach(List attaches) throws JSONException{ + private String getHtmlForAttach(List attaches) throws JSONException { StringBuilder rs = new StringBuilder(); for (JSONObject attach : attaches) { @@ -488,7 +528,7 @@ public class MessagesDownloader{ if (item == null) continue; - switch(type) { // market_album is not supported + switch (type) { // market_album is not supported case "photo": var sizes = item.getJSONArray("sizes"); rs.append("").append(getString("chat_export_type_photo")).append(""); @@ -562,45 +602,4 @@ public class MessagesDownloader{ return rs.toString(); } } - - private static String getPollHtml(JSONObject poll) throws JSONException { - StringBuilder pollHtml = new StringBuilder( - "
" + - "

" + poll.optString("question") + "

" - ); - - var answers = poll.optJSONArray("answers"); - - for (int i = 0; i < answers.length(); i++) { - var jsonObject = answers.optJSONObject(i); - if (jsonObject != null) - pollHtml.append("

").append(jsonObject.optString("text")).append(" · ").append(jsonObject.optString("votes")).append(" (").append(jsonObject.optString("rate")).append("%)

"); - } - - pollHtml.append("

").append(getString("chat_export_poll_voted")).append(" ").append(poll.optString("votes")).append(" ").append(getString("chat_export_users_name")).append("

"); - - return pollHtml.append("
").toString(); - } - - private static String getVideoHtml(JSONObject files) throws JSONException { - if (files == null) return getString("chat_export_video_nolinks"); - - Iterator< ? > keys = files.keys(); - StringBuilder videoHtml = new StringBuilder(); - - int qualityIndex = 0; - String[] quality = {"144", "240", "360", "480", "720", "1080", "1440", "2160"}; - - while (keys.hasNext()) { - String key = (String) keys.next(); - if (key.equals("mp4_" + quality[qualityIndex])) { - videoHtml.append("").append(quality[qualityIndex]).append("p").append(" "); - - if (qualityIndex == quality.length - 1) break; - ++qualityIndex; - } - } - - return videoHtml.toString(); - } } \ No newline at end of file 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 73a1fcb0d..2fc25ca0b 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/VideoDownloader.java @@ -126,12 +126,12 @@ public class VideoDownloader { } public static void parseVideoLink(String url, Context ctx) { - if (url.contains("vk.com/story") || url.contains("vk.com/story")) { + if (url.contains("vk.com/story")) { ToastUtils.a(AndroidUtils.getString("video_dl_stories_not_supported")); return; } - if (!url.contains("vk.com/video") || !url.contains("vk.com/video")) { + if (!url.contains("vk.com/video")) { ToastUtils.a(AndroidUtils.getString("video_dl_wrong_link")); return; } 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 642b2925e..cf4040964 100644 --- a/app/src/main/java/ru/vtosters/lite/encryption/EncryptProvider.java +++ b/app/src/main/java/ru/vtosters/lite/encryption/EncryptProvider.java @@ -52,18 +52,20 @@ public class EncryptProvider { public static int getPeerId(Msg msg) { return msg.v1(); } - + // For message editing public static String decryptMessage(MsgFromUser msg, boolean showEmoji) { var decryptedMessage = decryptMessage(getBody(msg), getPeerId(msg)); - if (!showEmoji && !decryptedMessage.equals(injectOwnTextAll(getBody(msg)))) decryptedMessage = decryptedMessage.replaceAll("^\uD83D\uDD12 ", ""); + if (!showEmoji && !decryptedMessage.equals(injectOwnTextAll(getBody(msg)))) + decryptedMessage = decryptedMessage.replaceAll("^\uD83D\uDD12 ", ""); return decryptedMessage; } public static String decryptMessage(String msg, MsgListComponent list) { var peerid = list.G().getId(); var decryptedMessage = decryptMessage(msg, peerid); - if (!decryptedMessage.equals(injectOwnTextAll(msg))) decryptedMessage = decryptedMessage.replaceAll("^\uD83D\uDD12 ", ""); + if (!decryptedMessage.equals(injectOwnTextAll(msg))) + decryptedMessage = decryptedMessage.replaceAll("^\uD83D\uDD12 ", ""); return decryptedMessage; } @@ -91,7 +93,8 @@ public class EncryptProvider { // For MentionsFormatter that requires CharSequence public static CharSequence decryptMessage(String msgBody, int peer, boolean showEmoji) { var decryptedMessage = decryptMessage(msgBody, peer); - if (!showEmoji && !decryptedMessage.equals(injectOwnTextAll(msgBody))) decryptedMessage = decryptedMessage.replaceAll("^\uD83D\uDD12 ", ""); + if (!showEmoji && !decryptedMessage.equals(injectOwnTextAll(msgBody))) + decryptedMessage = decryptedMessage.replaceAll("^\uD83D\uDD12 ", ""); return decryptedMessage; } 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 4bdfa60a2..5fd4a71fc 100644 --- a/app/src/main/java/ru/vtosters/lite/foaf/FoafBase.java +++ b/app/src/main/java/ru/vtosters/lite/foaf/FoafBase.java @@ -70,7 +70,7 @@ public class FoafBase { public static JSONObject getBypassedOnlineInfo(int id) throws JSONException { var request = new okhttp3.Request.a() - .b(API_VKNEXT + Integer.toString(id)) + .b(API_VKNEXT + id) .a(); String response = null; @@ -151,7 +151,7 @@ public class FoafBase { } } - private static long daysPassedFromFoafDate(String str) { + private static long daysPassedFromFoafDate(String str) { try { @SuppressLint("SimpleDateFormat") Date parse = new SimpleDateFormat("yyyy-MM-dd").parse(str.split(" ")[1]); diff --git a/app/src/main/java/ru/vtosters/lite/hooks/AdBlockHook.java b/app/src/main/java/ru/vtosters/lite/hooks/AdBlockHook.java index c66171101..8fea29341 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/AdBlockHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/AdBlockHook.java @@ -335,7 +335,7 @@ public class AdBlockHook { id = String.valueOf(list.optInt("source_id")); } - if (id.equals("-189659924")){ + if (id.equals("-189659924")) { return true; } diff --git a/app/src/main/java/ru/vtosters/lite/hooks/CryptImHook.java b/app/src/main/java/ru/vtosters/lite/hooks/CryptImHook.java index 9830e3e05..a157eef59 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/CryptImHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/CryptImHook.java @@ -1,4 +1,5 @@ package ru.vtosters.lite.hooks; + import static ru.vtosters.lite.dnr.DNRInjector.forceInvalidateDialogActions; import static ru.vtosters.lite.utils.AndroidUtils.dp2px; import static ru.vtosters.lite.utils.AndroidUtils.getString; @@ -26,8 +27,8 @@ import java.util.Objects; import ru.vtosters.lite.encryption.EncryptProvider; import ru.vtosters.lite.encryption.base.IMProcessor; -public class CryptImHook{ - public static boolean isPrivateProcessor(int peerID){ +public class CryptImHook { + public static boolean isPrivateProcessor(int peerID) { for (IMProcessor processor : EncryptProvider.processors) { if (processor.isUsedToEncrypt(peerID)) { return !processor.isPublic(); @@ -37,7 +38,7 @@ public class CryptImHook{ return false; } - public static void hook(int peerId, Dialog d){ + public static void hook(int peerId, Dialog d) { List processors = EncryptProvider.processors; IMProcessor enabled = null; @@ -86,7 +87,7 @@ public class CryptImHook{ }).create().show(); } - public static void hookPref(int peerId){ + public static void hookPref(int peerId) { IMProcessor enabled = null; String key = null; diff --git a/app/src/main/java/ru/vtosters/lite/hooks/DeviceInfoHook.java b/app/src/main/java/ru/vtosters/lite/hooks/DeviceInfoHook.java index f259a4c4e..7667b6661 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/DeviceInfoHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/DeviceInfoHook.java @@ -1,4 +1,5 @@ package ru.vtosters.lite.hooks; + import static ru.vtosters.lite.utils.AndroidUtils.MD5; import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; import static ru.vtosters.lite.utils.Preferences.getBoolValue; @@ -8,7 +9,7 @@ import android.os.Build; import android.provider.Settings; import android.util.Log; -public class DeviceInfoHook{ +public class DeviceInfoHook { public static String getDeviceInfo(String input) { Log.d("DeviceInfoHook", "getDeviceInfo: " + input); if (getBoolValue("hideDeviceInfo", true)) return ""; diff --git a/app/src/main/java/ru/vtosters/lite/hooks/DockBarInjector.java b/app/src/main/java/ru/vtosters/lite/hooks/DockBarInjector.java index bdcbee9c5..978998b95 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/DockBarInjector.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/DockBarInjector.java @@ -82,7 +82,8 @@ public class DockBarInjector { } while (acquire.invoke(synchronizedPool) != null); } - } catch (NoSuchFieldException | IllegalAccessException | ClassNotFoundException | NoSuchMethodException | InvocationTargetException e) { + } catch (NoSuchFieldException | IllegalAccessException | ClassNotFoundException | + NoSuchMethodException | InvocationTargetException e) { e.printStackTrace(); } diff --git a/app/src/main/java/ru/vtosters/lite/hooks/GcmHook.java b/app/src/main/java/ru/vtosters/lite/hooks/GcmHook.java index 2f857b815..4e8b4461e 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/GcmHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/GcmHook.java @@ -29,7 +29,6 @@ import javax.net.ssl.HttpsURLConnection; public class GcmHook { private static final String agent = String.format("Android-GCM/1.5 (%s %s)", Build.MODEL, Build.MODEL); - public static ArrayList langs = new ArrayList<>(); private static KeyPair pair; private static int rid = 0; @@ -38,12 +37,12 @@ public class GcmHook { } public static String requestTokenV2(String orig) { - if (musicFixNew()) return "null"; + if (musicFixNew()) return "null"; //not public return orig; } public static String requestToken(String orig) { - if (musicFixNew()) return "{null}"; + if (musicFixNew()) return "{null}"; //not public if (orig.equals("")) return requestToken(); return orig; } diff --git a/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java b/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java index b51e2d501..68fdb9c79 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/JsonInjectors.java @@ -160,7 +160,8 @@ public class JsonInjectors { var isPicture = pic.endsWith(".png") || pic.endsWith(".jpg") || pic.endsWith(".jpeg") || pic.endsWith(".webp"); if (isVerified(peerid)) text = AndroidUtils.getString("i_bought") + " VTosters Premium"; - if (isPrometheus(peerid)) text = AndroidUtils.getString("i_bought") + " VTosters Premium Gold Prime Pro Plus"; + if (isPrometheus(peerid)) + text = AndroidUtils.getString("i_bought") + " VTosters Premium Gold Prime Pro Plus"; if (isDeveloper(peerid)) text = AndroidUtils.getString("i_created_poop"); if (!isVerified(peerid) || text.equals("") || peerid == AccountManagerUtils.getUserId() || peerid == 0) { @@ -282,7 +283,7 @@ public class JsonInjectors { if (profiles == null || profiles.length() == 0) return profiles; StringBuilder sb = new StringBuilder(); var curVkId = AccountManagerUtils.getUserId(); - for (int i=0; i < profiles.length(); i++) { + for (int i = 0; i < profiles.length(); i++) { JSONObject profile = profiles.getJSONObject(i); int id = profile.optInt("id", -1); JSONObject onlinfo = profile.optJSONObject("online_info"); @@ -300,7 +301,7 @@ public class JsonInjectors { } JSONObject bypassedObj = getBypassedOnlineInfo(ids); - for (int i=0; i < profiles.length(); i++) { + for (int i = 0; i < profiles.length(); i++) { JSONObject profile = profiles.getJSONObject(i); int id = profile.optInt("id"); JSONObject bypassed = bypassedObj.optJSONObject(Integer.toString(id)); 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 c71148ec0..1094dca61 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/MessagesHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/MessagesHook.java @@ -23,7 +23,7 @@ public class MessagesHook { public static String injectOwnText(String oldText) { if (!autotranslate() || TextUtils.isEmpty(oldText)) return oldText; - var instance = BaseTranslator.getInstance(); + var instance = BaseTranslator.getInstance(); return replaceMentions(oldText, instance); } @@ -46,7 +46,8 @@ public class MessagesHook { var mentions = new ArrayList(); while (matcher.find()) { mentions.add(matcher.group()); - matcher.appendReplacement(textBuff, "vtl_mention" + mentionsCount + ""); ++mentionsCount; + matcher.appendReplacement(textBuff, "vtl_mention" + mentionsCount + ""); + ++mentionsCount; } matcher.appendTail(textBuff); @@ -61,7 +62,7 @@ public class MessagesHook { matcherMentions.appendTail(retTextBuff); return retTextBuff.toString(); - } catch(Exception e) { + } catch (Exception e) { e.printStackTrace(); return instance.getTranslation(oldText); } @@ -75,7 +76,7 @@ public class MessagesHook { } public static Context fixCTX(Context ctx) { - if (ctx == null){ + if (ctx == null) { return LifecycleUtils.getCurrentActivity(); } else { return ctx; 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 9a1a48806..0a41353a1 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/NewsfeedHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/NewsfeedHook.java @@ -47,7 +47,7 @@ public class NewsfeedHook { return list; } - public static String[] feedParams(){ + public static String[] feedParams() { HashSet params = new HashSet<>(); params.add("post"); params.add("photo"); 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 97840b7dc..f4bb7954d 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/PhotoViewer.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/PhotoViewer.java @@ -135,7 +135,7 @@ public class PhotoViewer { if (attachment.J != null) { imageSizes = attachment.J.t1(); } - return getUrlFromImageSizeList(imageSizes != null ? imageSizes : null); + return getUrlFromImageSizeList(imageSizes); } private static String getUrlFromPhotoAttachment(PhotoAttachment attachment) { diff --git a/app/src/main/java/ru/vtosters/lite/hooks/PicRoundingHook.java b/app/src/main/java/ru/vtosters/lite/hooks/PicRoundingHook.java index 7da6258d7..f4b3874ed 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/PicRoundingHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/PicRoundingHook.java @@ -1,4 +1,5 @@ package ru.vtosters.lite.hooks; + import static ru.vtosters.lite.utils.Preferences.preferences; import android.graphics.Bitmap; @@ -12,7 +13,7 @@ import com.facebook.drawee.generic.RoundingParams; import ru.vtosters.lite.utils.AndroidUtils; -public class PicRoundingHook{ +public class PicRoundingHook { private static final int pref = preferences.getInt("pic_rounding", 0); public static RoundingParams inject() { @@ -39,7 +40,7 @@ public class PicRoundingHook{ } } - public static void inject(float orig, Canvas canvas, Paint paint){ + public static void inject(float orig, Canvas canvas, Paint paint) { if (pref > 0) { canvas.drawRoundRect(new RectF(0, 0, canvas.getWidth(), canvas.getHeight()), AndroidUtils.dp2px(pref), AndroidUtils.dp2px(pref), paint); } else { @@ -47,7 +48,7 @@ public class PicRoundingHook{ } } - public static void inject(Canvas canvas, Paint paint, float orig){ + public static void inject(Canvas canvas, Paint paint, float orig) { if (pref > 0) { canvas.drawRoundRect(new RectF(0, 0, canvas.getWidth(), canvas.getHeight()), AndroidUtils.dp2px(pref), AndroidUtils.dp2px(pref), paint); } else { @@ -55,7 +56,7 @@ public class PicRoundingHook{ } } - public static void inject(Canvas canvas, float orig, float orig2, float orig3, Paint paint){ + public static void inject(Canvas canvas, float orig, float orig2, float orig3, Paint paint) { if (pref > 0) { canvas.drawRoundRect(new RectF(0, 0, canvas.getWidth(), canvas.getHeight()), AndroidUtils.dp2px(pref), AndroidUtils.dp2px(pref), paint); } else { @@ -76,7 +77,7 @@ public class PicRoundingHook{ } } - private static RoundingParams customParams(){ + private static RoundingParams customParams() { return RoundingParams.b(AndroidUtils.dp2px(pref), AndroidUtils.dp2px(pref), AndroidUtils.dp2px(pref), AndroidUtils.dp2px(pref)); } } 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 50b4d722b..5d3a5eec2 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/PostViewHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/PostViewHook.java @@ -14,7 +14,8 @@ import ru.vtosters.lite.utils.Preferences; public class PostViewHook { /** - * For displaying child elements with custom direction in rtl container we should remove their, set layout direction and add again */ + * For displaying child elements with custom direction in rtl container we should remove their, set layout direction and add again + */ private static void saveChildDirectionForRlt(ViewGroup container) { var children = new View[container.getChildCount()]; for (int i = 0; i < container.getChildCount(); i++) { 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 16033244f..b413a2102 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/RequestDumper.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/RequestDumper.java @@ -1,4 +1,5 @@ package ru.vtosters.lite.hooks; + import static ru.vtosters.lite.utils.Preferences.dev; import android.util.Log; @@ -7,9 +8,9 @@ import com.vk.api.internal.MethodCall; import java.util.LinkedHashMap; -public class RequestDumper{ +public class RequestDumper { public static void addParams(MethodCall.a paramslist, String method, LinkedHashMap params, String apiver) { - if (method.contains("execute.getGiftByStickerId") ) { + if (method.contains("execute.getGiftByStickerId")) { apiver = "5.186"; } 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 f62d29ae6..2fb19bde7 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/StartFragmentHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/StartFragmentHook.java @@ -2,7 +2,6 @@ package ru.vtosters.lite.hooks; import static ru.vtosters.lite.ui.components.DockBarEditorManager.getInstance; import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; import static ru.vtosters.lite.utils.Preferences.milkshake; import static ru.vtosters.lite.utils.Preferences.superapp; import static ru.vtosters.lite.utils.Preferences.useNewSettings; @@ -28,7 +27,6 @@ import com.vtosters.lite.fragments.p2.DocumentsViewFragment; import com.vtosters.lite.fragments.s2.GroupsFragment1; import com.vtosters.lite.fragments.t2.c.DialogsFragment; import com.vtosters.lite.fragments.y2.VideoCatalogFragment; -import com.vtosters.lite.fragments.y2.VideosFragment; import com.vtosters.lite.general.fragments.GamesFragment; import com.vtosters.lite.general.fragments.PhotosFragment; 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 8d079f0f7..15eab0c86 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/WritebarHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/WritebarHook.java @@ -1,15 +1,16 @@ package ru.vtosters.lite.hooks; + import static ru.vtosters.lite.utils.Preferences.wbios; import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.ThemesUtils; -public class WritebarHook{ - public static int getWriteBar(){ +public class WritebarHook { + public static int getWriteBar() { return AndroidUtils.getIdentifier((wbios() ? "write_bar_i" : "write_bar"), "layout"); } - public static int getIconsColors(int def){ + public static int getIconsColors(int def) { return wbios() ? ThemesUtils.getAccentColor() : def; } } diff --git a/app/src/main/java/ru/vtosters/lite/hooks/ui/MusicBottomSheetHook.java b/app/src/main/java/ru/vtosters/lite/hooks/ui/MusicBottomSheetHook.java index 66cb2b40a..9b5ac0d09 100644 --- a/app/src/main/java/ru/vtosters/lite/hooks/ui/MusicBottomSheetHook.java +++ b/app/src/main/java/ru/vtosters/lite/hooks/ui/MusicBottomSheetHook.java @@ -1,8 +1,8 @@ package ru.vtosters.lite.hooks.ui; -import static bruhcollective.itaysonlab.libvkx.client.LibVKXClient.*; 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; @@ -22,7 +22,6 @@ import java.util.ArrayList; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import bruhcollective.itaysonlab.libvkx.client.LibVKXClient; import bruhcollective.itaysonlab.libvkx.client.LibVKXClientImpl; import ru.vtosters.lite.downloaders.AudioDownloader; import ru.vtosters.lite.utils.AndroidUtils; @@ -40,14 +39,14 @@ public class MusicBottomSheetHook { } if (isIntegrationEnabled()) { - if (isVkxCached(trackid)){ + if (isVkxCached(trackid)) { actions.add(getRemoveCacheTrackVkxAction()); } else { actions.add(addToCacheTrackVkxAction()); } } - if (isNetworkConnected()){ + if (isNetworkConnected()) { actions.add(downloadAsMp3Action()); } @@ -60,7 +59,7 @@ public class MusicBottomSheetHook { var trackid = asId(musicTrack); - if (isCached(trackid)){ + if (isCached(trackid)) { actions.add(new MusicAction( AndroidUtils.getIdentifier("music_action_toggle_download", "id"), milkshake() ? R.drawable.ic_delete_outline_28 : R.drawable.ic_delete_24, @@ -88,8 +87,8 @@ public class MusicBottomSheetHook { if (isVkxInstalled()) actions.add(getPlayInVKXAction()); - if (isIntegrationEnabled()){ - if (isVkxCached(playlist.a, playlist.b)){ + if (isIntegrationEnabled()) { + if (isVkxCached(playlist.a, playlist.b)) { actions.add(getRemoveCacheTrackVkxAction()); } else { actions.add(addToCacheTrackVkxAction()); @@ -152,7 +151,7 @@ public class MusicBottomSheetHook { if (actionId == AndroidUtils.getIdentifier("add_to_cache", "id")) { executor.submit(() -> AudioDownloader.cachePlaylist(playlist)); - return true; + return true; } if (actionId == AndroidUtils.getIdentifier("remove_from_cache_vkx", "id")) { 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 f878160e9..79cbf02fb 100644 --- a/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java @@ -96,7 +96,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); } diff --git a/app/src/main/java/ru/vtosters/lite/music/VKM3UParser.java b/app/src/main/java/ru/vtosters/lite/music/VKM3UParser.java index d3d3ef081..1ba6b25a2 100644 --- a/app/src/main/java/ru/vtosters/lite/music/VKM3UParser.java +++ b/app/src/main/java/ru/vtosters/lite/music/VKM3UParser.java @@ -18,6 +18,10 @@ public class VKM3UParser { init(); } + public static boolean isM3U8(String str) { + return str.endsWith(".ts") || str.endsWith(".tp") || str.endsWith(".mpeg-ts") || str.endsWith(".m2ts"); + } + private void init() { int i = 0; Scanner scanner = new Scanner(mData); @@ -51,10 +55,6 @@ public class VKM3UParser { return directive.substring(directive.indexOf(":") + 1); } - public static boolean isM3U8(String str) { - return str.endsWith(".ts") || str.endsWith(".tp") || str.endsWith(".mpeg-ts") || str.endsWith(".m2ts"); - } - public int getHeapSize() { return mHeapSize; } 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 a3c7dd5f0..f8fa94704 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,8 +1,10 @@ package ru.vtosters.lite.music.cache; import static ru.vtosters.lite.music.cache.FileCacheImplementation.getCacheDir; -import static ru.vtosters.lite.utils.AndroidUtils.*; -import static ru.vtosters.lite.utils.IOUtils.*; +import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; +import static ru.vtosters.lite.utils.AndroidUtils.getString; +import static ru.vtosters.lite.utils.AndroidUtils.sendToast; +import static ru.vtosters.lite.utils.IOUtils.deleteRecursive; import android.content.Context; import android.database.Cursor; @@ -230,31 +232,31 @@ public class CacheDatabaseDelegate { } public static boolean isCached(String trackId) { - var formula = String.format( - "SELECT COUNT(%s) FROM %s WHERE %s = '%s'", - COLUMN_ID, - TABLE_NAME, - COLUMN_TRACK_ID, - trackId - ); - try { - Cursor size = getHelper().getReadableDatabase().rawQuery(formula, null); - if (size != null) { - size.moveToFirst(); - int count = size.getInt(0); - size.close(); - return count != 0; - } - } catch (SQLException e) { - e.printStackTrace(); + var formula = String.format( + "SELECT COUNT(%s) FROM %s WHERE %s = '%s'", + COLUMN_ID, + TABLE_NAME, + COLUMN_TRACK_ID, + trackId + ); + try { + Cursor size = getHelper().getReadableDatabase().rawQuery(formula, null); + if (size != null) { + size.moveToFirst(); + int count = size.getInt(0); + size.close(); + return count != 0; } - return false; + } catch (SQLException e) { + e.printStackTrace(); + } + return false; } public static boolean isVkxCached(int playlist_id, int owner_id) { - return LibVKXClient.getInstance().runOnServiceSync(new LibVKXClientImpl.LibVKXActionGeneric<>(){ + return LibVKXClient.getInstance().runOnServiceSync(new LibVKXClientImpl.LibVKXActionGeneric<>() { @Override - public Boolean run(ILibVkxService service){ + public Boolean run(ILibVkxService service) { try { return service.isPlaylistCached(playlist_id, owner_id); } catch (RemoteException e) { @@ -263,16 +265,16 @@ public class CacheDatabaseDelegate { } @Override - public Boolean defaultValue(){ + public Boolean defaultValue() { return false; } }); } public static boolean isVkxCached(String trackId) { - return LibVKXClient.getInstance().runOnServiceSync(new LibVKXClientImpl.LibVKXActionGeneric<>(){ + return LibVKXClient.getInstance().runOnServiceSync(new LibVKXClientImpl.LibVKXActionGeneric<>() { @Override - public Boolean run(ILibVkxService service){ + public Boolean run(ILibVkxService service) { try { var splits = trackId.split("_"); var id = Integer.parseInt(splits[1]); @@ -284,7 +286,7 @@ public class CacheDatabaseDelegate { } @Override - public Boolean defaultValue(){ + public Boolean defaultValue() { return false; } }); 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 68c7f35ca..e02c54020 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 @@ -34,7 +34,7 @@ public class FileCacheImplementation { } public static File getTrackFile(String trackId) { - return new File(getTrackFolder(trackId), "track.mp3"); + return new File(getTrackFolder(trackId), "track.mp3"); } public static boolean isTrackExist(String trackId) { 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 f80134495..3ffb32d07 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 @@ -46,7 +46,7 @@ public class TracklistHelper { try { addCachedThumbnails(json, folder); } catch (JSONException | MalformedURLException e) { - Log.d("TracklistHelper", e+""); + Log.d("TracklistHelper", e.getMessage()); } arr.put(json); } 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 d4254bdd7..ca8da7ffe 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 @@ -41,7 +41,7 @@ public class TracklistInjector { try { Log.d("TracklistInjector", "Using vkx cache catalog"); observableEmitter.b(parser.c(new JSONObject(service.getCacheCatalog()))); - } catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); List tracks = new ArrayList<>(); List cache = service.getCache(); @@ -59,7 +59,7 @@ public class TracklistInjector { } }); } else { - if (!hasTracks()){ + if (!hasTracks()) { observableEmitter.b(parser.c(getEmptyCatalog())); } else { observableEmitter.b(parser.c(createVirtualCatalog(TracklistHelper.getTracks()))); @@ -68,7 +68,7 @@ public class TracklistInjector { }); } - private static JSONObject getEmptyCatalog() throws JSONException{ + private static JSONObject getEmptyCatalog() throws JSONException { return new JSONObject("{\"catalog\":{\"default_section\":\"cache\",\"sections\":[{\"id\":\"cache\",\"title\":\"" + getString("cached_content_title") + "\",\"blocks\":[{\"data_type\":\"placeholder\",\"id\":\"0\",\"layout\":{\"name\":\"placeholder_big\"},\"placeholder_ids\":[\"_synth_trackEmpty\"]}]}]},\"audios\":[],\"playlists\":[],\"placeholders\":[{\"id\":\"_synth_trackEmpty\",\"title\":\"" + getString("cached_content_empty") + "\",\"text\":\"" + getString("cached_content_empty_desc") + "\",\"buttons\":[]}]}"); } 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 abff8eabb..d9ebe8ace 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 @@ -11,7 +11,7 @@ import ru.vtosters.lite.downloaders.notifications.NotificationChannels; import ru.vtosters.lite.music.Callback; public class MusicCallbackBuilder { - private static NotificationManagerCompat notificationManager = NotificationChannels.getNotificationManager(); + private static final NotificationManagerCompat notificationManager = NotificationChannels.getNotificationManager(); public static Callback buildOneTrackCallback(int notificationId, NotificationCompat.Builder notification) { return new Callback() { 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 5a735d0cc..da67c2930 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 @@ -19,6 +19,7 @@ import ru.vtosters.lite.utils.IOUtils; public class FFMpeg { private static final int BUFFER_SIZE = 2048; + /** * @param in Merged .ts file via {@link ru.vtosters.lite.music.converter.ts.TSMerger} * @param out Output .mp3 file 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 958441110..4dc0e74d0 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 @@ -14,6 +14,7 @@ import ru.vtosters.lite.utils.IOUtils; public class TSMerger { /** * Merge multiple .ts files into one .ts file + * * @param in Directory with .ts files * @return True if success, else false */ 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 e5c2069ae..c717d7284 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,4 +1,5 @@ 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; @@ -25,13 +26,13 @@ import okhttp3.OkHttpClient; import okhttp3.Request; import ru.vtosters.lite.utils.AndroidUtils; -public class AudioGet{ - public static List getAudios(){ +public class AudioGet { + public static List getAudios() { var tracks = requestAudios(0); return tracks != null ? tracks.stream().filter(track -> !track.D.isEmpty()).collect(Collectors.toList()) : null; } - private static List requestAudios(int offset){ + private static List requestAudios(int offset) { var audioCount = 1000; var requestUrl = "https://" + getApi() + "/method/audio.get" + "?v=5.119" + 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 7467cef1f..2c45099ea 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 @@ -2,21 +2,16 @@ package ru.vtosters.lite.music.downloader; import android.util.Log; -import androidx.core.app.NotificationManagerCompat; - import com.vk.dto.music.MusicTrack; import java.io.File; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; -import ru.vtosters.lite.downloaders.notifications.NotificationChannels; import ru.vtosters.lite.music.Callback; import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; public class PlaylistDownloader { - private static NotificationManagerCompat notificationManager = NotificationChannels.getNotificationManager(); - public static void downloadPlaylist(List playlist, String playlistName, String path, Callback callback) { File outDir = new File(path); if (!outDir.exists()) @@ -30,7 +25,8 @@ public class PlaylistDownloader { for (MusicTrack musicTrack : playlist) { TrackDownloader.downloadTrack(musicTrack, path, new Callback() { @Override - public void onProgress(int progress) {} + public void onProgress(int progress) { + } @Override public void onSuccess() { @@ -44,7 +40,8 @@ public class PlaylistDownloader { } @Override - public void onSizeReceived(long size, long header) {} + public void onSizeReceived(long size, long header) { + } }); } } @@ -55,7 +52,8 @@ public class PlaylistDownloader { for (MusicTrack musicTrack : playlist) { TrackDownloader.cacheTrack(musicTrack, new Callback() { @Override - public void onProgress(int progress) {} + public void onProgress(int progress) { + } @Override public void onSuccess() { @@ -70,7 +68,8 @@ public class PlaylistDownloader { } @Override - public void onSizeReceived(long size, long header) {} + public void onSizeReceived(long size, long header) { + } }); } } 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 4b422c288..6ece5e7cd 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,7 +1,5 @@ package ru.vtosters.lite.music.downloader; -import android.util.Log; - import com.vk.dto.music.MusicTrack; import java.io.IOException; 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 52b30dc2b..ccf641f80 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 @@ -12,8 +12,9 @@ import ru.vtosters.lite.music.Callback; public interface ITrackDownloader { /** * Download track - * @param track Music track - * @param outDir Directory where to download the track + * + * @param track Music track + * @param outDir Directory where to download the track * @param callback Callback to call when download status changes */ void downloadTrack(MusicTrack track, File outDir, Callback callback, boolean cache); 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 e701ab1a6..1aae8a039 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 @@ -15,7 +15,7 @@ import ru.vtosters.lite.utils.AccountManagerUtils; import ru.vtosters.lite.utils.AndroidUtils; public class MusicNotificationBuilder { - private static NotificationManagerCompat notificationManager = NotificationChannels.getNotificationManager(); + private static final NotificationManagerCompat notificationManager = NotificationChannels.getNotificationManager(); public static NotificationCompat.Builder buildDownloadNotification(MusicTrack track, int id) { var notificationBuilder = new NotificationCompat.Builder(AndroidUtils.getGlobalContext(), NotificationChannels.MUSIC_DOWNLOAD_CHANNEL_ID) 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 57cc7c68b..2644001fc 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/GithubList.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/GithubList.java @@ -1,4 +1,5 @@ package ru.vtosters.lite.proxy; + import android.util.Log; import java.io.IOException; @@ -8,10 +9,10 @@ import java.util.Arrays; import okhttp3.OkHttpClient; import okhttp3.Request; -public class GithubList{ +public class GithubList { private static final OkHttpClient mClient = new OkHttpClient(); - public static ArrayList getProxy(String url, String proxyname) throws IOException{ + public static ArrayList getProxy(String url, String proxyname) throws IOException { Request link = new Request.a() .b(url) .a(); 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 2ab5e2ab5..d60183e8c 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/ProxyUtils.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/ProxyUtils.java @@ -22,8 +22,8 @@ import ru.vtosters.lite.proxy.https.CustomHttps; import ru.vtosters.lite.proxy.socks.CustomSocks; import ru.vtosters.lite.proxy.socks.Zaborona; -public class ProxyUtils{ - public static String getApi(){ +public class ProxyUtils { + public static String getApi() { var proxyapi = getPrefsValue("proxyapi"); if (isVikaProxyEnabled()) { @@ -37,7 +37,7 @@ public class ProxyUtils{ return "api.vk.com"; } - public static String getOauth(){ + public static String getOauth() { var oauth = getPrefsValue("proxyoauth"); if (isVikaProxyEnabled()) { @@ -51,7 +51,7 @@ public class ProxyUtils{ return "oauth.vk.com"; } - public static String getStatic(){ + public static String getStatic() { var staticapi = getPrefsValue("proxystatic"); if (isVikaProxyEnabled()) { @@ -65,27 +65,27 @@ public class ProxyUtils{ return "static.vk.com"; } - public static Boolean isAnyProxyEnabled(){ + public static Boolean isAnyProxyEnabled() { return isApiProxyEnabled() || isVikaProxyEnabled(); } - public static Boolean isZaboronaEnabled(){ + public static Boolean isZaboronaEnabled() { return getPrefsValue("proxy").equals("zaborona"); } - public static Boolean isRandomProxyEnabled(){ + public static Boolean isRandomProxyEnabled() { return getPrefsValue("proxy").equals("randomproxy"); } - public static Boolean isApiProxyEnabled(){ + public static Boolean isApiProxyEnabled() { return getPrefsValue("proxy").equals("apiproxy"); } - public static Boolean isVikaProxyEnabled(){ + public static Boolean isVikaProxyEnabled() { return getPrefsValue("proxy").equals("vika"); } - public static void forceProxyApplying(){ + public static void forceProxyApplying() { Log.d("Proxy", "Setting proxy..."); try { var context = getGlobalContext().getApplicationContext(); @@ -128,12 +128,12 @@ public class ProxyUtils{ } } - public static boolean hasProxy(String list){ + public static boolean hasProxy(String list) { return list.contains(":"); // proxy format: ip:port } - public static void setProxy() throws IOException{ - switch(getPrefsValue("proxy")) { + public static void setProxy() throws IOException { + switch (getPrefsValue("proxy")) { case "zaborona": Zaborona.loadProxy(); break; @@ -155,7 +155,7 @@ public class ProxyUtils{ } } - public static void resetProxy(){ + public static void resetProxy() { clearProperty("https.proxyHost"); clearProperty("https.proxyPort"); clearProperty("https.proxyUser"); diff --git a/app/src/main/java/ru/vtosters/lite/proxy/RandomProxy.java b/app/src/main/java/ru/vtosters/lite/proxy/RandomProxy.java index d01847cc6..fb023ba9a 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/RandomProxy.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/RandomProxy.java @@ -1,4 +1,5 @@ package ru.vtosters.lite.proxy; + import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; import static ru.vtosters.lite.proxy.ProxyUtils.resetProxy; import static ru.vtosters.lite.utils.AndroidUtils.edit; @@ -11,19 +12,19 @@ import ru.vtosters.lite.proxy.socks.Jetkai; import ru.vtosters.lite.proxy.socks.Roosterkid; import ru.vtosters.lite.proxy.socks.TheSpeedX; -public class RandomProxy{ +public class RandomProxy { public static String type = preferences.getString("random_type", "none"); public static String host = preferences.getString("random_host", ""); public static boolean showProxyResult = false; - public static void loadProxy() throws IOException{ + public static void loadProxy() throws IOException { if (host.isEmpty()) { getProxy(); loadProxy(); return; } - switch(type) { + switch (type) { case "socks": System.setProperty("socksProxyHost", host.split(":")[0]); System.setProperty("socksProxyPort", host.split(":")[1]); @@ -39,7 +40,7 @@ public class RandomProxy{ } } - public static void setupNewProxy() throws IOException{ + public static void setupNewProxy() throws IOException { edit().putString("random_type", "none").putString("random_host", "").commit(); resetProxy(); @@ -50,10 +51,10 @@ public class RandomProxy{ edit().putString("proxy", "randomproxy").commit(); } - public static void getProxy() throws IOException{ + public static void getProxy() throws IOException { var random = new java.util.Random(); var randomInt = random.nextInt(7); - switch(randomInt) { + switch (randomInt) { case 0: Hookzof.loadProxy(); break; 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 ce26ef73e..60b8da1e9 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,12 +1,13 @@ package ru.vtosters.lite.proxy.api; + import static ru.vtosters.lite.proxy.ProxyUtils.isAnyProxyEnabled; import static ru.vtosters.lite.proxy.ProxyUtils.isVikaProxyEnabled; import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; import android.util.Log; -public class ApiProxy{ - public static String linkReplacer(String link){ +public class ApiProxy { + public static String linkReplacer(String link) { var vkapi = "api.vk.com"; var oauth = "oauth.vk.com"; var vkstatic = "static.vk.com"; @@ -59,7 +60,7 @@ public class ApiProxy{ return str; } - public static String getAwayPhpCom(){ + public static String getAwayPhpCom() { var proxyapi = getPrefsValue("proxyapi"); if (isVikaProxyEnabled()) { diff --git a/app/src/main/java/ru/vtosters/lite/proxy/api/VikaMobile.java b/app/src/main/java/ru/vtosters/lite/proxy/api/VikaMobile.java index 8ac24ff57..0bb6abb95 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/api/VikaMobile.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/api/VikaMobile.java @@ -1,20 +1,21 @@ package ru.vtosters.lite.proxy.api; + import static ru.vtosters.lite.utils.Preferences.getBoolValue; -public class VikaMobile{ - public static String getApiHost(){ +public class VikaMobile { + public static String getApiHost() { return isAlternativeHost() ? "vk-api-proxy.vikamobile.ru" : "vk-api-proxy.symbian.live"; } - public static String getOauthHost(){ + public static String getOauthHost() { return isAlternativeHost() ? "vk-oauth-proxy.vikamobile.ru" : "vk-oauth-proxy.symbian.live"; } - public static String getStaticHost(){ + public static String getStaticHost() { return isAlternativeHost() ? "vk-static-proxy.vikamobile.ru" : "vk-static-proxy.symbian.live"; } - public static Boolean isAlternativeHost(){ + public static Boolean isAlternativeHost() { return getBoolValue("altervika", false); } } diff --git a/app/src/main/java/ru/vtosters/lite/proxy/http/CustomHttp.java b/app/src/main/java/ru/vtosters/lite/proxy/http/CustomHttp.java index e91aca3d5..bc4dc265f 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/http/CustomHttp.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/http/CustomHttp.java @@ -1,9 +1,10 @@ package ru.vtosters.lite.proxy.http; + import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; -public class CustomHttp{ - public static void loadProxy(){ +public class CustomHttp { + public static void loadProxy() { System.setProperty("http.proxyHost", proxyHostHTTP()); System.setProperty("http.proxyPort", proxyPortHTTP()); System.setProperty("http.proxyUser", proxyUserHTTP()); @@ -11,22 +12,22 @@ public class CustomHttp{ forceProxyApplying(); } - private static String proxyHostHTTP(){ + private static String proxyHostHTTP() { var string = getPrefsValue("proxyHostHTTP"); return string.isEmpty() ? "192.168.0.1" : string; } - private static String proxyPortHTTP(){ + private static String proxyPortHTTP() { var string = getPrefsValue("proxyPortHTTP"); return string.isEmpty() ? "8888" : string; } - private static String proxyUserHTTP(){ + private static String proxyUserHTTP() { var string = getPrefsValue("proxyUserHTTP"); return string.isEmpty() ? "" : string; } - private static String proxyPassHTTP(){ + private static String proxyPassHTTP() { var string = getPrefsValue("proxyPassHTTP"); return string.isEmpty() ? "" : string; } 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 c78ba3e4f..43f81c30e 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,4 +1,5 @@ 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; @@ -13,10 +14,10 @@ import java.util.ArrayList; import ru.vtosters.lite.proxy.RandomProxy; import ru.vtosters.lite.utils.AndroidUtils; -public class Jetkai{ +public class Jetkai { private static final String TAG = "Jetkai_Http"; - public static void loadProxy() throws IOException{ + public static void loadProxy() throws IOException { ArrayList proxyList = getProxy("https://raw.githubusercontent.com/jetkai/proxy-list/main/online-proxies/txt/proxies-http.txt", TAG); if (proxyList == null) { @@ -38,7 +39,7 @@ public class Jetkai{ RandomProxy.showProxyResult = false; RandomProxy.showProxyResult = false; } - + edit().putString("random_type", "http").putString("random_host", proxy).commit(); System.setProperty("http.proxyHost", proxy.split(":")[0]); 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 14182125f..a4b37c673 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,4 +1,5 @@ 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; @@ -13,10 +14,10 @@ import java.util.ArrayList; import ru.vtosters.lite.proxy.RandomProxy; import ru.vtosters.lite.utils.AndroidUtils; -public class TheSpeedX{ +public class TheSpeedX { private static final String TAG = "TheSpeedX_Http"; - public static void loadProxy() throws IOException{ + public static void loadProxy() throws IOException { ArrayList proxyList = getProxy("https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/http.txt", TAG); if (proxyList == null) { @@ -37,7 +38,7 @@ public class TheSpeedX{ AndroidUtils.sendToast(getString("proxy_setup_success") + " " + proxy); RandomProxy.showProxyResult = false; } - + edit().putString("random_type", "http").putString("random_host", proxy).commit(); System.setProperty("http.proxyHost", proxy.split(":")[0]); diff --git a/app/src/main/java/ru/vtosters/lite/proxy/https/CustomHttps.java b/app/src/main/java/ru/vtosters/lite/proxy/https/CustomHttps.java index 86cc68fab..bcb1cb96d 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/https/CustomHttps.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/https/CustomHttps.java @@ -1,9 +1,10 @@ package ru.vtosters.lite.proxy.https; + import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; -public class CustomHttps{ - public static void loadProxy(){ +public class CustomHttps { + public static void loadProxy() { System.setProperty("https.proxyHost", proxyHostHTTPS()); System.setProperty("https.proxyPort", proxyPortHTTPS()); System.setProperty("https.proxyUser", proxyUserHTTPS()); @@ -11,22 +12,22 @@ public class CustomHttps{ forceProxyApplying(); } - private static String proxyHostHTTPS(){ + private static String proxyHostHTTPS() { var string = getPrefsValue("proxyHostHTTPS"); return string.isEmpty() ? "192.168.0.1" : string; } - private static String proxyPortHTTPS(){ + private static String proxyPortHTTPS() { var string = getPrefsValue("proxyPortHTTPS"); return string.isEmpty() ? "8888" : string; } - private static String proxyUserHTTPS(){ + private static String proxyUserHTTPS() { var string = getPrefsValue("proxyUserHTTPS"); return string.isEmpty() ? "" : string; } - private static String proxyPassHTTPS(){ + private static String proxyPassHTTPS() { String string = getPrefsValue("proxyPassHTTPS"); return string.isEmpty() ? "" : string; } 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 1e5395cab..7e532d8fe 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,4 +1,5 @@ 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; @@ -13,10 +14,10 @@ import java.util.ArrayList; import ru.vtosters.lite.proxy.RandomProxy; import ru.vtosters.lite.utils.AndroidUtils; -public class Jetkai{ +public class Jetkai { private static final String TAG = "Jetkai_Https"; - public static void loadProxy() throws IOException{ + public static void loadProxy() throws IOException { ArrayList proxyList = getProxy("https://raw.githubusercontent.com/jetkai/proxy-list/main/online-proxies/txt/proxies-https.txt", TAG); if (proxyList == null) { @@ -37,7 +38,7 @@ public class Jetkai{ AndroidUtils.sendToast(getString("proxy_setup_success") + " " + proxy); RandomProxy.showProxyResult = false; } - + edit().putString("random_type", "https").putString("random_host", proxy).commit(); System.setProperty("https.proxyHost", proxy.split(":")[0]); 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 7361c20de..8fbf9b173 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,4 +1,5 @@ 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; @@ -13,10 +14,10 @@ import java.util.ArrayList; import ru.vtosters.lite.proxy.RandomProxy; import ru.vtosters.lite.utils.AndroidUtils; -public class Roosterkid{ +public class Roosterkid { private static final String TAG = "Roosterkid_Https"; - public static void loadProxy() throws IOException{ + public static void loadProxy() throws IOException { ArrayList proxyList = getProxy("https://raw.githubusercontent.com/roosterkid/openproxylist/main/HTTPS_RAW.txt", TAG); if (proxyList == null) { @@ -37,7 +38,7 @@ public class Roosterkid{ AndroidUtils.sendToast(getString("proxy_setup_success") + " " + proxy); RandomProxy.showProxyResult = false; } - + edit().putString("random_type", "https").putString("random_host", proxy).commit(); System.setProperty("https.proxyHost", proxy.split(":")[0]); diff --git a/app/src/main/java/ru/vtosters/lite/proxy/socks/CustomSocks.java b/app/src/main/java/ru/vtosters/lite/proxy/socks/CustomSocks.java index 272a5ec71..87429899d 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/socks/CustomSocks.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/socks/CustomSocks.java @@ -1,20 +1,21 @@ package ru.vtosters.lite.proxy.socks; + import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; -public class CustomSocks{ - public static void loadProxy(){ +public class CustomSocks { + public static void loadProxy() { System.setProperty("socksProxyHost", proxyHostSocks()); System.setProperty("socksProxyPort", proxyPortSocks()); forceProxyApplying(); } - private static String proxyHostSocks(){ + private static String proxyHostSocks() { var string = getPrefsValue("proxyHostSocks"); return string.isEmpty() ? "192.168.0.1" : string; } - private static String proxyPortSocks(){ + private static String proxyPortSocks() { var string = getPrefsValue("proxyPortSocks"); return string.isEmpty() ? "8888" : string; } 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 4c1f4b23c..c4f127d59 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,4 +1,5 @@ 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; @@ -13,10 +14,10 @@ import java.util.ArrayList; import ru.vtosters.lite.proxy.RandomProxy; import ru.vtosters.lite.utils.AndroidUtils; -public class Hookzof{ +public class Hookzof { private static final String TAG = "Hookzof_Socks"; - public static void loadProxy() throws IOException{ + public static void loadProxy() throws IOException { ArrayList proxyList = getProxy("https://raw.githubusercontent.com/hookzof/socks5_list/master/proxy.txt", TAG); if (proxyList == null) { @@ -37,7 +38,7 @@ public class Hookzof{ AndroidUtils.sendToast(getString("proxy_setup_success") + " " + proxy); RandomProxy.showProxyResult = false; } - + edit().putString("random_type", "socks").putString("random_host", proxy).commit(); System.setProperty("socksProxyHost", proxy.split(":")[0]); 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 70b133dec..7e8b69560 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,4 +1,5 @@ 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; @@ -13,10 +14,10 @@ import java.util.ArrayList; import ru.vtosters.lite.proxy.RandomProxy; import ru.vtosters.lite.utils.AndroidUtils; -public class Jetkai{ +public class Jetkai { private static final String TAG = "Jetkai_Socks"; - public static void loadProxy() throws IOException{ + public static void loadProxy() throws IOException { ArrayList proxyList = getProxy("https://raw.githubusercontent.com/jetkai/proxy-list/main/online-proxies/txt/proxies-socks5.txt", TAG); if (proxyList == null) { @@ -37,7 +38,7 @@ public class Jetkai{ AndroidUtils.sendToast(getString("proxy_setup_success") + " " + proxy); RandomProxy.showProxyResult = false; } - + edit().putString("random_type", "socks").putString("random_host", proxy).commit(); System.setProperty("socksProxyHost", proxy.split(":")[0]); 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 33c5bb0f7..af11d71f1 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,4 +1,5 @@ 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; @@ -13,10 +14,10 @@ import java.util.ArrayList; import ru.vtosters.lite.proxy.RandomProxy; import ru.vtosters.lite.utils.AndroidUtils; -public class Roosterkid{ +public class Roosterkid { private static final String TAG = "Roosterkid_Socks"; - public static void loadProxy() throws IOException{ + public static void loadProxy() throws IOException { ArrayList proxyList = getProxy("https://raw.githubusercontent.com/roosterkid/openproxylist/main/SOCKS5_RAW.txt", TAG); if (proxyList == null) { @@ -37,7 +38,7 @@ public class Roosterkid{ AndroidUtils.sendToast(getString("proxy_setup_success") + " " + proxy); RandomProxy.showProxyResult = false; } - + edit().putString("random_type", "socks").putString("random_host", proxy).commit(); System.setProperty("socksProxyHost", proxy.split(":")[0]); 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 431273a6b..122b060b6 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,4 +1,5 @@ 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; @@ -13,10 +14,10 @@ import java.util.ArrayList; import ru.vtosters.lite.proxy.RandomProxy; import ru.vtosters.lite.utils.AndroidUtils; -public class TheSpeedX{ +public class TheSpeedX { private static final String TAG = "TheSpeedX_Socks"; - public static void loadProxy() throws IOException{ + public static void loadProxy() throws IOException { ArrayList proxyList = getProxy("https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/socks5.txt", TAG); if (proxyList == null) { @@ -37,7 +38,7 @@ public class TheSpeedX{ AndroidUtils.sendToast(getString("proxy_setup_success") + " " + proxy); RandomProxy.showProxyResult = false; } - + edit().putString("random_type", "socks").putString("random_host", proxy).commit(); System.setProperty("socksProxyHost", proxy.split(":")[0]); diff --git a/app/src/main/java/ru/vtosters/lite/proxy/socks/Zaborona.java b/app/src/main/java/ru/vtosters/lite/proxy/socks/Zaborona.java index 536a052c6..5db74678b 100644 --- a/app/src/main/java/ru/vtosters/lite/proxy/socks/Zaborona.java +++ b/app/src/main/java/ru/vtosters/lite/proxy/socks/Zaborona.java @@ -1,8 +1,9 @@ package ru.vtosters.lite.proxy.socks; + import static ru.vtosters.lite.proxy.ProxyUtils.forceProxyApplying; -public class Zaborona{ - public static void loadProxy(){ +public class Zaborona { + public static void loadProxy() { System.setProperty("socksProxyHost", "socks.zaboronahelp.pp.ua"); System.setProperty("socksProxyPort", "1488"); forceProxyApplying(); 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 dfbf883e4..fde294298 100644 --- a/app/src/main/java/ru/vtosters/lite/translators/BaseTranslator.java +++ b/app/src/main/java/ru/vtosters/lite/translators/BaseTranslator.java @@ -11,24 +11,10 @@ import ru.vtosters.lite.utils.AndroidUtils; public abstract class BaseTranslator { - private final LruCache cache = new LruCache<>(200); - private static final int YANDEX = 0; private static final int GOOGLE = 1; private static final int DEEPL = 2; - - @NonNull - public abstract String translate(String text, String tl); - - @NonNull - public final String getTranslation(String text) { - var val = cache.get(text); - if (val != null) - return val; - var translation = translate(text, getToLanguage()); - cache.put(text, translation); - return translation; - } + private final LruCache cache = new LruCache<>(200); public static String getToLanguage() { var lang = preferences.getString("lang_target", "system"); @@ -51,4 +37,17 @@ public abstract class BaseTranslator { } return null; } + + @NonNull + public abstract String translate(String text, String tl); + + @NonNull + public final String getTranslation(String text) { + var val = cache.get(text); + if (val != null) + return val; + var translation = translate(text, getToLanguage()); + cache.put(text, translation); + return translation; + } } 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 fa5274a00..c93532280 100644 --- a/app/src/main/java/ru/vtosters/lite/translators/DeepLTranslator.java +++ b/app/src/main/java/ru/vtosters/lite/translators/DeepLTranslator.java @@ -54,6 +54,11 @@ public class DeepLTranslator extends BaseTranslator { return instance; } + private static Long getTimestamp(int iNumber) { + var now = System.currentTimeMillis(); + return Long.valueOf((((long) iNumber) + now) - (now % ((long) iNumber))); + } + @NonNull @Override public String translate(String text, String tl) { @@ -126,9 +131,4 @@ public class DeepLTranslator extends BaseTranslator { } return text; } - - private static Long getTimestamp(int iNumber) { - var now = System.currentTimeMillis(); - return Long.valueOf((((long) iNumber) + now) - (now % ((long) iNumber))); - } } 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 01a11523f..b6c9ec28b 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 @@ -22,7 +22,7 @@ import ru.vtosters.lite.utils.LayoutUtils; public class VKAdminTokenActivity extends AppCompatActivity { - private static final String URL = "https://" + getOauth() +"/authorize?client_id=6121396&scope=1073737727&redirect_uri=https://oauth.vk.com/blank.html&display=page&response_type=token&revoke=1"; + private static final String URL = "https://" + getOauth() + "/authorize?client_id=6121396&scope=1073737727&redirect_uri=https://oauth.vk.com/blank.html&display=page&response_type=token&revoke=1"; @Override protected void onCreate(@Nullable Bundle bundle) { 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 8626fc9eb..d2a1b86ba 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 @@ -218,6 +218,10 @@ public class CategorizedAdapter extends RecyclerView.Adapter { - private List mItems = new ArrayList<>(); private final OnClickListener mListener; + private List mItems = new ArrayList<>(); private int mSelectedIndex = -1; public ImagineArrayAdapter(@NonNull Context context, OnClickListener listener) { @@ -133,6 +133,10 @@ public class ImagineArrayAdapter extends ArrayAdapter CrashReporter.start(defaultUncaughtExceptionHandler, thread, th, activity)); } + @SuppressLint("UnspecifiedImmutableFlag") static void start(Thread.UncaughtExceptionHandler uncaughtExceptionHandler, Thread thread, Throwable th, Activity activity) { - logString = getStackTrace(th) + "\n\n" + new DeviceInfoCollector().collect(getGlobalContext()).toDeviceName() + ", commit: " + getBuildNumber(); + logString = getStackTrace(th) + "\n\n" + new DeviceInfoCollector().collect().toDeviceName(); + if (Build.VERSION.SDK_INT >= 26) { var notificationChannel = new NotificationChannel("crashes", "crash", NotificationManager.IMPORTANCE_DEFAULT); notificationChannel.enableVibration(true); @@ -58,6 +60,7 @@ public class CrashReporter { var saveLogIntent = new Intent(getGlobalContext(), LogWriterService.class); saveLogIntent.putExtra("log", logString); saveLogIntent.putExtra("notificationId", 1); + @SuppressLint("UnspecifiedImmutableFlag") var psaveLogIntent = PendingIntent.getService(getGlobalContext(), 0, saveLogIntent, PendingIntent.FLAG_CANCEL_CURRENT); @@ -74,9 +77,8 @@ public class CrashReporter { builder.setChannelId("crashes"); } - ((NotificationManager) getGlobalContext().getSystemService(Context.NOTIFICATION_SERVICE)).notify(-2147483548, builder.build()); - Log.e("VTosters Lite", "crashed: " + th.getLocalizedMessage()); + Log.e("VLite", "crashed: " + th.getLocalizedMessage()); uncaughtExceptionHandler.uncaughtException(thread, th); } 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 013544d3e..aaf593fc2 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 @@ -2,7 +2,6 @@ package ru.vtosters.lite.ui.components; import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; import static ru.vtosters.lite.utils.AndroidUtils.getPreferences; -import static ru.vtosters.lite.utils.Preferences.getBoolValue; import static ru.vtosters.lite.utils.Preferences.milkshake; import static ru.vtosters.lite.utils.Preferences.superapp; import static ru.vtosters.lite.utils.Preferences.useNewSettings; @@ -33,7 +32,6 @@ import com.vtosters.lite.fragments.p2.DocumentsViewFragment; import com.vtosters.lite.fragments.s2.GroupsFragment1; import com.vtosters.lite.fragments.t2.c.DialogsFragment; import com.vtosters.lite.fragments.y2.VideoCatalogFragment; -import com.vtosters.lite.fragments.y2.VideosFragment; import com.vtosters.lite.general.fragments.GamesFragment; import com.vtosters.lite.general.fragments.PhotosFragment; @@ -49,11 +47,13 @@ import ru.vtosters.lite.utils.AndroidUtils; public class DockBarEditorManager { public static final int MIN_SELECTED_TABS = 3; public static final int MAX_SELECTED_TABS = 9; - + private static DockBarEditorManager sInstance; private final List mSelectedTabs = new ArrayList<>(); private final List mDisabledTabs = new ArrayList<>(); - private static DockBarEditorManager sInstance; + public DockBarEditorManager() { + init(); + } public static DockBarEditorManager getInstance() { return sInstance == null @@ -61,10 +61,6 @@ public class DockBarEditorManager { : sInstance; } - public DockBarEditorManager() { - init(); - } - private void init() { if (vkme()) { mSelectedTabs.add(getTabByTag("tab_settings")); diff --git a/app/src/main/java/ru/vtosters/lite/ui/components/StickerTouchHelperCallback.java b/app/src/main/java/ru/vtosters/lite/ui/components/StickerTouchHelperCallback.java index 019ca4f36..dfc54e0b2 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/components/StickerTouchHelperCallback.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/StickerTouchHelperCallback.java @@ -23,7 +23,7 @@ public class StickerTouchHelperCallback extends ItemTouchHelper.Callback { @Override public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) { - int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | + int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT; int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END; diff --git a/app/src/main/java/ru/vtosters/lite/ui/components/SuperAppEditorManager.java b/app/src/main/java/ru/vtosters/lite/ui/components/SuperAppEditorManager.java index 72ee058e1..d9b54f713 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/components/SuperAppEditorManager.java +++ b/app/src/main/java/ru/vtosters/lite/ui/components/SuperAppEditorManager.java @@ -14,10 +14,13 @@ import ru.vtosters.lite.utils.AndroidUtils; public class SuperAppEditorManager { + private static SuperAppEditorManager sInstance; private final List mSelectedItems = new ArrayList<>(); private final List mDisabledItems = new ArrayList<>(); - private static SuperAppEditorManager sInstance; + public SuperAppEditorManager() { + init(); + } public static SuperAppEditorManager getInstance() { return sInstance == null @@ -25,10 +28,6 @@ public class SuperAppEditorManager { : sInstance; } - public SuperAppEditorManager() { - init(); - } - private void init() { var tmp = getPreferences().getString("superapp_items", "menu,miniapps,vkpay_slim,greeting,promo,holiday,weather,sport,games,informer,food,event,music,vk_run"); var selectedTags = !tmp.isEmpty() ? tmp.split(",") : new String[0]; 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 9522b5cc6..30dc104d6 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 @@ -1,4 +1,5 @@ package ru.vtosters.lite.ui.dialogs; + import static ru.vtosters.lite.utils.AndroidUtils.dp2px; import static ru.vtosters.lite.utils.AndroidUtils.edit; import static ru.vtosters.lite.utils.AndroidUtils.getPreferences; @@ -13,7 +14,7 @@ import com.vk.core.dialogs.alert.VkAlertDialog; import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.LayoutUtils; -public class RoundingSeekbarDialog{ +public class RoundingSeekbarDialog { public static void dialog(Context context) { LinearLayout mContainer = new LinearLayout(context); SeekBar seek = new SeekBar(context); diff --git a/app/src/main/java/ru/vtosters/lite/ui/dialogs/ThemeChanging.java b/app/src/main/java/ru/vtosters/lite/ui/dialogs/ThemeChanging.java index c22ff6f36..5bf88976f 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/dialogs/ThemeChanging.java +++ b/app/src/main/java/ru/vtosters/lite/ui/dialogs/ThemeChanging.java @@ -1,4 +1,5 @@ package ru.vtosters.lite.ui.dialogs; + import static ru.vtosters.lite.utils.AndroidUtils.edit; import static ru.vtosters.lite.utils.AndroidUtils.getString; import static ru.vtosters.lite.utils.Preferences.getBoolValue; @@ -10,8 +11,8 @@ import com.vk.core.ui.themes.VKThemeHelper; import ru.vtosters.lite.hooks.VKUIHook; -public class ThemeChanging{ - public static void changeTheme(Activity activity, float[] f){ +public class ThemeChanging { + public static void changeTheme(Activity activity, float[] f) { if (getBoolValue("systemtheme", true)) { new VkAlertDialog.Builder(activity) .setTitle(getString("warning")) 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 c384a46a0..48a95e972 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 @@ -23,15 +23,15 @@ import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; import ru.vtosters.lite.ui.components.NewsfeedListManager; import ru.vtosters.lite.utils.AndroidUtils; -public class FeedFragment extends MaterialPreferenceToolbarFragment{ +public class FeedFragment extends MaterialPreferenceToolbarFragment { @Override - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { super.onCreate(bundle); addPreferencesFromResource(getIdentifier("preferences_feed", "xml")); prefs(); } - private void prefs(){ + private void prefs() { findPreference("officialnewssett").setOnPreferenceClickListener(new openofficialsett()); findPreference("cringecopyright").setEnabled(!copyright_post()); @@ -43,7 +43,7 @@ public class FeedFragment extends MaterialPreferenceToolbarFragment{ setupFilters(); return true; }); - + findPreference("sourcenamefilter").setOnPreferenceClickListener(preference -> { setupFilters(); return true; @@ -81,7 +81,7 @@ public class FeedFragment extends MaterialPreferenceToolbarFragment{ }); } - private String count(String text){ + private String count(String text) { // count comma separated words in string var count = text.split(", ").length; @@ -92,7 +92,7 @@ public class FeedFragment extends MaterialPreferenceToolbarFragment{ } } - private void remdialog(String key, Context context){ + private void remdialog(String key, Context context) { VkAlertDialog.Builder builder = new VkAlertDialog.Builder(context); builder.setTitle(AndroidUtils.getString("warning")); builder.setMessage(AndroidUtils.getString("delete_elements_confirm")); @@ -106,7 +106,7 @@ public class FeedFragment extends MaterialPreferenceToolbarFragment{ builder.show(); } - private String countSet(String key){ + private String countSet(String key) { var set = getDefaultPrefs().getStringSet(key, null); StringBuilder str = new StringBuilder(); if (set != null) { @@ -126,15 +126,15 @@ public class FeedFragment extends MaterialPreferenceToolbarFragment{ @Override - public boolean onPreferenceTreeClick(Preference preference){ + public boolean onPreferenceTreeClick(Preference preference) { findPreference("cringecopyright").setEnabled(!copyright_post()); setupFilters(); return super.onPreferenceTreeClick(preference); } - public class openofficialsett implements Preference.OnPreferenceClickListener{ + public class openofficialsett implements Preference.OnPreferenceClickListener { @Override // android.support.v7.preference.Preference.c - public boolean onPreferenceClick(Preference preference){ + public boolean onPreferenceClick(Preference preference) { Context context = requireContext(); Intent a2 = new Navigator(NewsfeedSettingsFragment.class).b(context); a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java index 8941b4dd3..222b603ff 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/InterfaceFragment.java @@ -7,7 +7,6 @@ import static ru.vtosters.lite.utils.LifecycleUtils.restartApplicationWithTimer; import android.os.Build; import android.os.Bundle; -import android.view.View; import androidx.preference.Preference; @@ -29,7 +28,7 @@ public class InterfaceFragment extends MaterialPreferenceToolbarFragment { findPreference("swipe").setOnPreferenceClickListener(new restart()); findPreference("is_likes_on_right").setOnPreferenceClickListener(new restart()); - if (isTablet()){ + if (isTablet()) { findPreference("menusett").setVisible(false); findPreference("swipe").setVisible(false); } @@ -39,7 +38,7 @@ public class InterfaceFragment extends MaterialPreferenceToolbarFragment { return true; }); - if (Build.VERSION.SDK_INT >= 33){ + if (Build.VERSION.SDK_INT >= 33) { findPreference("anim_rtrn_type").setVisible(false); } 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 073b7b615..61d38d548 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 @@ -10,7 +10,6 @@ import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; import static ru.vtosters.lite.utils.AndroidUtils.getPreferences; import static ru.vtosters.lite.utils.AndroidUtils.sendToast; import static ru.vtosters.lite.utils.LifecycleUtils.restartApplicationWithTimer; -import static ru.vtosters.lite.utils.NewsFeedFiltersUtils.setupFilters; import static ru.vtosters.lite.utils.ThemesUtils.getAccentColor; import static ru.vtosters.lite.utils.ThemesUtils.getAlertStyle; import static ru.vtosters.lite.utils.ThemesUtils.getSTextAttr; @@ -51,11 +50,28 @@ import ru.vtosters.lite.music.Scrobbler; 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.LifecycleUtils; public class MediaFragment extends MaterialPreferenceToolbarFragment { private static final ExecutorService executor = Executors.newCachedThreadPool(); + public static void download(Context ctx) { + AlertDialog.Builder alertDialog = new AlertDialog.Builder(ctx, getAlertStyle()); + alertDialog.setTitle(AndroidUtils.getString("video_dl_enter_link")); + + final EditText input = new EditText(ctx); + LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.MATCH_PARENT); + input.setLayoutParams(lp); + input.setTextColor(getTextAttr()); + input.setBackgroundTintList(ColorStateList.valueOf(getAccentColor())); + alertDialog.setView(input); + alertDialog.setPositiveButton(AndroidUtils.getString("download"), (dialog, which) -> VideoDownloader.parseVideoLink(input.getText().toString(), ctx)); + var alert = alertDialog.create(); + alert.show(); + alert.getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(getAccentColor()); + } + @Override public void onCreate(Bundle bundle) { super.onCreate(bundle); @@ -97,7 +113,7 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment { findPreference("cached_tracks").setSummary(String.format(AndroidUtils.getString("cached_tracks_counter"), CacheDatabaseDelegate.getTrackCount())); findPreference("cached_tracks").setOnPreferenceClickListener(preference -> { - if (CacheDatabaseDelegate.getTrackCount() == 0){ + if (CacheDatabaseDelegate.getTrackCount() == 0) { sendToast(AndroidUtils.getString("no_cache_error")); } else { delcache(requireContext()); @@ -110,7 +126,7 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment { return true; }); - if (!isVkxInstalled()){ + if (!isVkxInstalled()) { findPreference("vkx_sett").setVisible(false); } @@ -222,7 +238,7 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment { var alert = alertDialog.create(); alert.show(); alert.getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(getAccentColor()); - alert.getButton(DialogInterface.BUTTON_NEGATIVE).setTextColor(getAccentColor());; + alert.getButton(DialogInterface.BUTTON_NEGATIVE).setTextColor(getAccentColor()); } public void deleteVideoHistory() { @@ -236,7 +252,7 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment { try { var response = new JSONObject(new OkHttpClient().a(request).execute().a().g()); - if (response.optInt("response") == 1){ + if (response.optInt("response") == 1) { requireActivity().runOnUiThread(() -> sendToast(AndroidUtils.getString("video_history_cleaned"))); } else { requireActivity().runOnUiThread(() -> sendToast(AndroidUtils.getString("delete_video_history_error"))); @@ -254,7 +270,7 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment { thread.start(); } - private void deleteVideoHistoryDialog(Context context){ + private void deleteVideoHistoryDialog(Context context) { VkAlertDialog.Builder builder = new VkAlertDialog.Builder(context); builder.setTitle(AndroidUtils.getString("warning")); builder.setMessage(AndroidUtils.getString("delete_video_history_confirm")); @@ -266,22 +282,13 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment { builder.show(); } - public static void download(Context ctx) { - AlertDialog.Builder alertDialog = new AlertDialog.Builder(ctx, getAlertStyle()); - alertDialog.setTitle(AndroidUtils.getString("video_dl_enter_link")); - - final EditText input = new EditText(ctx); - LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( - LinearLayout.LayoutParams.MATCH_PARENT, - LinearLayout.LayoutParams.MATCH_PARENT); - input.setLayoutParams(lp); - input.setTextColor(getTextAttr()); - input.setBackgroundTintList(ColorStateList.valueOf(getAccentColor())); - alertDialog.setView(input); - alertDialog.setPositiveButton(AndroidUtils.getString("download"), (dialog, which) -> VideoDownloader.parseVideoLink(input.getText().toString(), ctx)); - var alert = alertDialog.create(); - alert.show(); - alert.getButton(DialogInterface.BUTTON_POSITIVE).setTextColor(getAccentColor()); + private static class restart implements Preference.OnPreferenceChangeListener { + @Override + public boolean onPreferenceChange(Preference preference, Object o) { + edit().putString("dateformat", o.toString()).commit(); + restartApplicationWithTimer(); + return false; + } } private class download implements Preference.OnPreferenceClickListener { @@ -291,13 +298,4 @@ public class MediaFragment extends MaterialPreferenceToolbarFragment { return true; } } - - private static class restart implements Preference.OnPreferenceChangeListener { - @Override - public boolean onPreferenceChange(Preference preference, Object o) { - edit().putString("dateformat", o.toString()).commit(); - restartApplicationWithTimer(); - return false; - } - } } 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 edc3e1197..530f5ecc0 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 @@ -71,7 +71,7 @@ public class MessagesFragment extends MaterialPreferenceToolbarFragment { findPreference("wallpapers").setIcon(recolorDrawable(getGlobalContext().getDrawable(getIdentifier("ic_media_outline_28", "drawable")))); findPreference("vkme").setIcon(getIdentifier("ic_vkme_28", "drawable")); - if (isTablet()){ + if (isTablet()) { findPreference("alteremoji").setVisible(false); findPreference("vkmesett").setVisible(false); } 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 4d5acb444..7cce3f6e1 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 @@ -11,7 +11,6 @@ import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; import static ru.vtosters.lite.utils.AndroidUtils.dp2px; import static ru.vtosters.lite.utils.AndroidUtils.getDefaultPrefs; import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; -import static ru.vtosters.lite.utils.ContactsUtils.setContactsSync; import static ru.vtosters.lite.utils.LifecycleUtils.restartApplication; import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; @@ -278,6 +277,19 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { builder.create().show(); } + private void delprefs(Context context) { + VkAlertDialog.Builder builder = new VkAlertDialog.Builder(context); + builder.setTitle(AndroidUtils.getString("warning")); + builder.setMessage(AndroidUtils.getString("settings_reset_confirm")); + builder.setCancelable(false); + builder.setPositiveButton(AndroidUtils.getString("yes"), (dialogInterface, i) -> { + deletePrefs(); + restartApplication(); + }); + builder.setNegativeButton(AndroidUtils.getString("cancel"), (dialogInterface, i) -> dialogInterface.dismiss()); + builder.show(); + } + public static class d implements Preference.OnPreferenceClickListener { @Override // android.support.v7.preference.Preference.c public boolean onPreferenceClick(Preference preference) { @@ -286,6 +298,25 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { } } + public static class b implements Preference.OnPreferenceClickListener { + @Override // android.support.v7.preference.Preference.c + public boolean onPreferenceClick(Preference preference) { + System.exit(0); + return true; + } + } + + public static class saveprefs implements Preference.OnPreferenceClickListener { + saveprefs() { + } + + @Override // android.support.v7.preference.Preference.c + public boolean onPreferenceClick(Preference preference) { + backupSettings(); + return true; + } + } + public class onlines implements Preference.OnPreferenceClickListener { @Override // android.support.v7.preference.Preference.c public boolean onPreferenceClick(Preference preference) { @@ -298,27 +329,6 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { } } - public static class b implements Preference.OnPreferenceClickListener { - @Override // android.support.v7.preference.Preference.c - public boolean onPreferenceClick(Preference preference) { - System.exit(0); - return true; - } - } - - private void delprefs(Context context) { - VkAlertDialog.Builder builder = new VkAlertDialog.Builder(context); - builder.setTitle(AndroidUtils.getString("warning")); - builder.setMessage(AndroidUtils.getString("settings_reset_confirm")); - builder.setCancelable(false); - builder.setPositiveButton(AndroidUtils.getString("yes"), (dialogInterface, i) -> { - deletePrefs(); - restartApplication(); - }); - builder.setNegativeButton(AndroidUtils.getString("cancel"), (dialogInterface, i) -> dialogInterface.dismiss()); - builder.show(); - } - class c implements Preference.OnPreferenceClickListener { public void copy(Context context, String str) { ((ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(ClipData.newPlainText("MBH-ST", str)); @@ -349,17 +359,6 @@ public class OtherFragment extends MaterialPreferenceToolbarFragment { } } - public static class saveprefs implements Preference.OnPreferenceClickListener { - saveprefs() { - } - - @Override // android.support.v7.preference.Preference.c - public boolean onPreferenceClick(Preference preference) { - backupSettings(); - return true; - } - } - public class restoreprefs implements Preference.OnPreferenceClickListener { @Override // android.support.v7.preference.Preference.c public boolean onPreferenceClick(Preference preference) { 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 f740c295a..33e088f29 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 @@ -2,7 +2,6 @@ package ru.vtosters.lite.ui.fragments; import static ru.vtosters.lite.utils.AndroidUtils.edit; import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; -import static ru.vtosters.lite.utils.AndroidUtils.getPreferences; import static ru.vtosters.lite.utils.AndroidUtils.isTablet; import static ru.vtosters.lite.utils.LifecycleUtils.restartApplicationWithTimer; @@ -15,8 +14,6 @@ import androidx.preference.Preference; import com.vk.navigation.Navigator; import com.vtosters.lite.general.fragments.MaterialPreferenceToolbarFragment; -import ru.vtosters.lite.utils.LifecycleUtils; - public class ThemesFragment extends MaterialPreferenceToolbarFragment { @@ -37,22 +34,11 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment { findPreference("dockbar_accent").setOnPreferenceClickListener(new restart()); findPreference("dockcounter").setOnPreferenceClickListener(new restart()); - if (isTablet()){ + if (isTablet()) { findPreference("dockbarsett").setVisible(false); } } - public class openicons implements Preference.OnPreferenceClickListener { - @Override - public boolean onPreferenceClick(Preference preference) { - Context context = requireContext(); - Intent a2 = new Navigator(IconsFragment.class).b(context); - a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(a2); - return true; - } - } - public static class restart implements Preference.OnPreferenceClickListener { @Override public boolean onPreferenceClick(Preference preference) { @@ -78,4 +64,15 @@ public class ThemesFragment extends MaterialPreferenceToolbarFragment { return false; } } + + public class openicons implements Preference.OnPreferenceClickListener { + @Override + public boolean onPreferenceClick(Preference preference) { + Context context = requireContext(); + Intent a2 = new Navigator(IconsFragment.class).b(context); + a2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(a2); + return true; + } + } } 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 5d2c44118..80b85963b 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,4 +1,5 @@ package ru.vtosters.lite.ui.vkui; + import static ru.vtosters.lite.utils.AndroidUtils.dp2px; import static ru.vtosters.lite.utils.ThemesUtils.getTextAttr; @@ -10,8 +11,8 @@ import android.widget.LinearLayout; import java.util.List; -public class VBListBuilder{ - public static ViewGroup buildListOf(Context ctx, List items){ +public class VBListBuilder { + public static ViewGroup buildListOf(Context ctx, List items) { LinearLayout mainView = new LinearLayout(ctx); mainView.setOrientation(LinearLayout.VERTICAL); mainView.setPadding(dp2px(8f), 0, dp2px(8f), 0); @@ -36,12 +37,12 @@ public class VBListBuilder{ return mainView; } - public static class VBListItem{ + public static class VBListItem { public String id; public String title; public boolean checked; - public VBListItem(String id, String title, boolean checked){ + public VBListItem(String id, String title, boolean checked) { this.id = id; this.title = title; this.checked = checked; diff --git a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ConvolutionMatrix.java b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ConvolutionMatrix.java index cfcde063c..1e195f190 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ConvolutionMatrix.java +++ b/app/src/main/java/ru/vtosters/lite/ui/wallpapers/ConvolutionMatrix.java @@ -3,18 +3,18 @@ package ru.vtosters.lite.ui.wallpapers; import android.graphics.Bitmap; import android.graphics.Color; -public class ConvolutionMatrix{ +public class ConvolutionMatrix { public static final int SIZE = 3; public double[][] Matrix; public double Factor = 1; public double Offset = 1; - public ConvolutionMatrix(int size){ + public ConvolutionMatrix(int size) { Matrix = new double[size][size]; } - public static Bitmap computeConvolution3x3(Bitmap src, ConvolutionMatrix matrix){ + public static Bitmap computeConvolution3x3(Bitmap src, ConvolutionMatrix matrix) { int width = src.getWidth(); int height = src.getHeight(); Bitmap result = Bitmap.createBitmap(width, height, src.getConfig()); @@ -81,7 +81,7 @@ public class ConvolutionMatrix{ return result; } - public void setAll(double value){ + public void setAll(double value) { for (int x = 0; x < SIZE; ++x) { for (int y = 0; y < SIZE; ++y) { Matrix[x][y] = value; @@ -89,7 +89,7 @@ public class ConvolutionMatrix{ } } - public void applyConfig(double[][] config){ + public void applyConfig(double[][] config) { for (int x = 0; x < SIZE; ++x) { for (int y = 0; y < SIZE; ++y) { Matrix[x][y] = config[x][y]; 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 a921d7b53..775850497 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 @@ -19,14 +19,10 @@ import com.vk.medianative.MediaNative; import java.util.Random; -public class ImageFilters{ - public static final double PI = 3.14159d; - public static final double HALF_CIRCLE_DEGREE = 180d; - public static final double RANGE = 256d; - public static final int COLOR_MIN = 0x00; +public class ImageFilters { public static final int COLOR_MAX = 0xFF; - public static Drawable getFilteredDrawable(Drawable orig){ + public static Drawable getFilteredDrawable(Drawable orig) { if (orig == null) return null; if (!(orig instanceof BitmapDrawable)) return orig; @@ -50,7 +46,13 @@ public class ImageFilters{ orig = getMonochrome(orig); } - Bitmap bm = ((BitmapDrawable) orig).getBitmap(); + Bitmap bm; + + if (orig != null) { + bm = ((BitmapDrawable) orig).getBitmap(); + } else { + return null; + } Bitmap instance = bm.copy(Bitmap.Config.ARGB_8888, true); @@ -81,9 +83,9 @@ public class ImageFilters{ return new BitmapDrawable(getResources(), instance); } - private static int getRadius(){ + private static int getRadius() { String radius = getPreferences().getString("msg_blur_radius", "disabled"); - switch(radius) { + switch (radius) { case "low": return 8; case "med": @@ -93,7 +95,7 @@ public class ImageFilters{ } } - public static Drawable getBlurredWallpaper(Drawable orig, int radius){ + public static Drawable getBlurredWallpaper(Drawable orig, int radius) { try { if (orig == null) return null; if (!(orig instanceof BitmapDrawable)) return orig; // we need only BitmapDrawable @@ -109,7 +111,7 @@ public class ImageFilters{ } } - public static Drawable getMosaic(Drawable orig){ + public static Drawable getMosaic(Drawable orig) { int scale = 100; if (orig == null) return null; @@ -122,7 +124,7 @@ public class ImageFilters{ String radius = getPreferences().getString("msg_mosaic", "disabled"); - switch(radius) { + switch (radius) { case "high": scale = 25; break; @@ -139,7 +141,7 @@ public class ImageFilters{ return new BitmapDrawable(getResources(), mosaicBitmap); } - public static Drawable getDimmed(Drawable orig){ + public static Drawable getDimmed(Drawable orig) { if (orig == null) return null; if (!(orig instanceof BitmapDrawable)) return orig; Bitmap bm = ((BitmapDrawable) orig).getBitmap(); @@ -147,7 +149,7 @@ public class ImageFilters{ Bitmap instance = bm.copy(Bitmap.Config.ARGB_8888, true); String radius = getPreferences().getString("msg_dim", "disabled"); - switch(radius) { + switch (radius) { case "dim_black": darken(instance); case "dim_white": @@ -156,7 +158,7 @@ public class ImageFilters{ return new BitmapDrawable(getResources(), instance); } - public static Drawable getMonochrome(Drawable orig){ + public static Drawable getMonochrome(Drawable orig) { if (orig == null) return null; if (!(orig instanceof BitmapDrawable)) return orig; Bitmap bm = ((BitmapDrawable) orig).getBitmap(); @@ -179,7 +181,7 @@ public class ImageFilters{ return new BitmapDrawable(getResources(), bwBitmap); } - private static void darken(Bitmap bm){ + private static void darken(Bitmap bm) { try { Canvas canvas = new Canvas(bm); Paint p = new Paint(Color.RED); @@ -191,7 +193,7 @@ public class ImageFilters{ } } - private static void lighten(Bitmap bm){ + private static void lighten(Bitmap bm) { try { Canvas canvas = new Canvas(bm); Paint p = new Paint(Color.RED); @@ -203,7 +205,7 @@ public class ImageFilters{ } } - public static Bitmap applyInvertEffect(Bitmap src){ + public static Bitmap applyInvertEffect(Bitmap src) { // create new bitmap with the same settings as source bitmap Bitmap bmOut = Bitmap.createBitmap(src.getWidth(), src.getHeight(), src.getConfig()); // color info @@ -233,7 +235,7 @@ public class ImageFilters{ return bmOut; } - public static Bitmap applySepiaEffect(Bitmap src){ + public static Bitmap applySepiaEffect(Bitmap src) { // image size int width = src.getWidth(); int height = src.getHeight(); @@ -270,8 +272,8 @@ public class ImageFilters{ return bmOut; } - public static Bitmap applyEmbossEffect(Bitmap src){ - double[][] EmbossConfig = new double[][] { + public static Bitmap applyEmbossEffect(Bitmap src) { + double[][] EmbossConfig = new double[][]{ {-1, 0, -1}, {0, 4, 0}, {-1, 0, -1} @@ -283,7 +285,7 @@ public class ImageFilters{ return ConvolutionMatrix.computeConvolution3x3(src, convMatrix); } - public static Bitmap applyEngraveEffect(Bitmap src){ + public static Bitmap applyEngraveEffect(Bitmap src) { ConvolutionMatrix convMatrix = new ConvolutionMatrix(3); convMatrix.setAll(0); convMatrix.Matrix[0][0] = -2; @@ -293,7 +295,7 @@ public class ImageFilters{ return ConvolutionMatrix.computeConvolution3x3(src, convMatrix); } - public static Bitmap applyFleaEffect(Bitmap source){ + public static Bitmap applyFleaEffect(Bitmap source) { // get image size int width = source.getWidth(); int height = source.getHeight(); @@ -303,7 +305,7 @@ public class ImageFilters{ // a random object Random random = new Random(); - int index = 0; + int index; // iteration through pixels for (int y = 0; y < height; ++y) { for (int x = 0; x < width; ++x) { @@ -322,7 +324,7 @@ public class ImageFilters{ return bmOut; } - public static Bitmap applySnowEffect(Bitmap source){ + public static Bitmap applySnowEffect(Bitmap source) { // get image size int width = source.getWidth(); int height = source.getHeight(); @@ -332,7 +334,7 @@ public class ImageFilters{ // random object Random random = new Random(); - int R, G, B, index = 0, thresHold = 50; + int R, G, B, index, thresHold; // iteration through pixels for (int y = 0; y < height; ++y) { for (int x = 0; x < width; ++x) { @@ -354,389 +356,4 @@ public class ImageFilters{ bmOut.setPixels(pixels, 0, width, 0, 0, width, height); return bmOut; } - - public Bitmap applyDecreaseColorDepthEffect(Bitmap src, int bitOffset){ - // get image size - int width = src.getWidth(); - int height = src.getHeight(); - // create output bitmap - Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig()); - // color information - int A, R, G, B; - int pixel; - - // scan through all pixels - for (int x = 0; x < width; ++x) { - for (int y = 0; y < height; ++y) { - // get pixel color - pixel = src.getPixel(x, y); - A = Color.alpha(pixel); - R = Color.red(pixel); - G = Color.green(pixel); - B = Color.blue(pixel); - - // round-off color offset - R = ((R + (bitOffset / 2)) - ((R + (bitOffset / 2)) % bitOffset) - 1); - if (R < 0) { - R = 0; - } - G = ((G + (bitOffset / 2)) - ((G + (bitOffset / 2)) % bitOffset) - 1); - if (G < 0) { - G = 0; - } - B = ((B + (bitOffset / 2)) - ((B + (bitOffset / 2)) % bitOffset) - 1); - if (B < 0) { - B = 0; - } - - // set pixel color to output bitmap - bmOut.setPixel(x, y, Color.argb(A, R, G, B)); - } - } - - // return final image - return bmOut; - } - - public Bitmap applyContrastEffect(Bitmap src, double value){ - // image size - int width = src.getWidth(); - int height = src.getHeight(); - // create output bitmap - Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig()); - // color information - int A, R, G, B; - int pixel; - // get contrast value - double contrast = Math.pow((100 + value) / 100, 2); - - // scan through all pixels - for (int x = 0; x < width; ++x) { - for (int y = 0; y < height; ++y) { - // get pixel color - pixel = src.getPixel(x, y); - A = Color.alpha(pixel); - // apply filter contrast for every channel R, G, B - R = Color.red(pixel); - R = (int) (((((R / 255.0) - 0.5) * contrast) + 0.5) * 255.0); - if (R < 0) { - R = 0; - } else if (R > 255) { - R = 255; - } - - G = Color.red(pixel); - G = (int) (((((G / 255.0) - 0.5) * contrast) + 0.5) * 255.0); - if (G < 0) { - G = 0; - } else if (G > 255) { - G = 255; - } - - B = Color.red(pixel); - B = (int) (((((B / 255.0) - 0.5) * contrast) + 0.5) * 255.0); - if (B < 0) { - B = 0; - } else if (B > 255) { - B = 255; - } - - // set new pixel color to output bitmap - bmOut.setPixel(x, y, Color.argb(A, R, G, B)); - } - } - - // return final image - return bmOut; - } - - public Bitmap applyBrightnessEffect(Bitmap src, int value){ - // image size - int width = src.getWidth(); - int height = src.getHeight(); - // create output bitmap - Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig()); - // color information - int A, R, G, B; - int pixel; - - // scan through all pixels - for (int x = 0; x < width; ++x) { - for (int y = 0; y < height; ++y) { - // get pixel color - pixel = src.getPixel(x, y); - A = Color.alpha(pixel); - R = Color.red(pixel); - G = Color.green(pixel); - B = Color.blue(pixel); - - // increase/decrease each channel - R += value; - if (R > 255) { - R = 255; - } else if (R < 0) { - R = 0; - } - - G += value; - if (G > 255) { - G = 255; - } else if (G < 0) { - G = 0; - } - - B += value; - if (B > 255) { - B = 255; - } else if (B < 0) { - B = 0; - } - - // apply new pixel color to output bitmap - bmOut.setPixel(x, y, Color.argb(A, R, G, B)); - } - } - - // return final image - return bmOut; - } - - public Bitmap applyGaussianBlurEffect(Bitmap src){ - double[][] GaussianBlurConfig = new double[][] { - {1, 2, 1}, - {2, 4, 2}, - {1, 2, 1} - }; - ConvolutionMatrix convMatrix = new ConvolutionMatrix(3); - convMatrix.applyConfig(GaussianBlurConfig); - convMatrix.Factor = 16; - convMatrix.Offset = 0; - return ConvolutionMatrix.computeConvolution3x3(src, convMatrix); - } - - public Bitmap applySharpenEffect(Bitmap src, double weight){ - double[][] SharpConfig = new double[][] { - {0, -2, 0}, - {-2, weight, -2}, - {0, -2, 0} - }; - ConvolutionMatrix convMatrix = new ConvolutionMatrix(3); - convMatrix.applyConfig(SharpConfig); - convMatrix.Factor = weight - 8; - return ConvolutionMatrix.computeConvolution3x3(src, convMatrix); - } - - public Bitmap applyMeanRemovalEffect(Bitmap src){ - double[][] MeanRemovalConfig = new double[][] { - {-1, -1, -1}, - {-1, 9, -1}, - {-1, -1, -1} - }; - ConvolutionMatrix convMatrix = new ConvolutionMatrix(3); - convMatrix.applyConfig(MeanRemovalConfig); - convMatrix.Factor = 1; - convMatrix.Offset = 0; - return ConvolutionMatrix.computeConvolution3x3(src, convMatrix); - } - - public Bitmap applySmoothEffect(Bitmap src, double value){ - ConvolutionMatrix convMatrix = new ConvolutionMatrix(3); - convMatrix.setAll(1); - convMatrix.Matrix[1][1] = value; - convMatrix.Factor = value + 8; - convMatrix.Offset = 1; - return ConvolutionMatrix.computeConvolution3x3(src, convMatrix); - } - - public Bitmap applyBoostEffect(Bitmap src, int type, float percent){ - int width = src.getWidth(); - int height = src.getHeight(); - Bitmap bmOut = Bitmap.createBitmap(width, height, src.getConfig()); - - int A, R, G, B; - int pixel; - - for (int x = 0; x < width; ++x) { - for (int y = 0; y < height; ++y) { - pixel = src.getPixel(x, y); - A = Color.alpha(pixel); - R = Color.red(pixel); - G = Color.green(pixel); - B = Color.blue(pixel); - if (type == 1) { - R = (int) (R * (1 + percent)); - if (R > 255) R = 255; - } else if (type == 2) { - G = (int) (G * (1 + percent)); - if (G > 255) G = 255; - } else if (type == 3) { - B = (int) (B * (1 + percent)); - if (B > 255) B = 255; - } - bmOut.setPixel(x, y, Color.argb(A, R, G, B)); - } - } - return bmOut; - } - - public Bitmap applyTintEffect(Bitmap src, int degree){ - - int width = src.getWidth(); - int height = src.getHeight(); - - int[] pix = new int[width * height]; - src.getPixels(pix, 0, width, 0, 0, width, height); - - int RY, GY, BY, RYY, GYY, BYY, R, G, B, Y; - double angle = (PI * (double) degree) / HALF_CIRCLE_DEGREE; - - int S = (int) (RANGE * Math.sin(angle)); - int C = (int) (RANGE * Math.cos(angle)); - - for (int y = 0; y < height; y++) - for (int x = 0; x < width; x++) { - int index = y * width + x; - int r = (pix[index] >> 16) & 0xff; - int g = (pix[index] >> 8) & 0xff; - int b = pix[index] & 0xff; - RY = (70 * r - 59 * g - 11 * b) / 100; - GY = (-30 * r + 41 * g - 11 * b) / 100; - BY = (-30 * r - 59 * g + 89 * b) / 100; - Y = (30 * r + 59 * g + 11 * b) / 100; - RYY = (S * BY + C * RY) / 256; - BYY = (C * BY - S * RY) / 256; - GYY = (-51 * RYY - 19 * BYY) / 100; - R = Y + RYY; - R = (R < 0) ? 0 : (Math.min(R, 255)); - G = Y + GYY; - G = (G < 0) ? 0 : (Math.min(G, 255)); - B = Y + BYY; - B = (B < 0) ? 0 : (Math.min(B, 255)); - pix[index] = 0xff000000 | (R << 16) | (G << 8) | B; - } - - Bitmap outBitmap = Bitmap.createBitmap(width, height, src.getConfig()); - outBitmap.setPixels(pix, 0, width, 0, 0, width, height); - - pix = null; - - return outBitmap; - } - - public Bitmap applyBlackFilter(Bitmap source){ - // get image size - int width = source.getWidth(); - int height = source.getHeight(); - int[] pixels = new int[width * height]; - // get pixel array from source - source.getPixels(pixels, 0, width, 0, 0, width, height); - // random object - Random random = new Random(); - - int R, G, B, index = 0, thresHold = 0; - // iteration through pixels - for (int y = 0; y < height; ++y) { - for (int x = 0; x < width; ++x) { - // get current index in 2D-matrix - index = y * width + x; - // get color - R = Color.red(pixels[index]); - G = Color.green(pixels[index]); - B = Color.blue(pixels[index]); - // generate threshold - thresHold = random.nextInt(COLOR_MAX); - if (R < thresHold && G < thresHold && B < thresHold) { - pixels[index] = Color.rgb(COLOR_MIN, COLOR_MIN, COLOR_MIN); - } - } - } - // output bitmap - Bitmap bmOut = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - bmOut.setPixels(pixels, 0, width, 0, 0, width, height); - return bmOut; - } - - public Bitmap applyShadingFilter(Bitmap source, int shadingColor){ - // get image size - int width = source.getWidth(); - int height = source.getHeight(); - int[] pixels = new int[width * height]; - // get pixel array from source - source.getPixels(pixels, 0, width, 0, 0, width, height); - - int index = 0; - // iteration through pixels - for (int y = 0; y < height; ++y) { - for (int x = 0; x < width; ++x) { - // get current index in 2D-matrix - index = y * width + x; - // AND - pixels[index] &= shadingColor; - } - } - // output bitmap - Bitmap bmOut = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - bmOut.setPixels(pixels, 0, width, 0, 0, width, height); - return bmOut; - } - - public Bitmap applySaturationFilter(Bitmap source, int level){ - // get image size - int width = source.getWidth(); - int height = source.getHeight(); - int[] pixels = new int[width * height]; - float[] HSV = new float[3]; - // get pixel array from source - source.getPixels(pixels, 0, width, 0, 0, width, height); - - int index = 0; - // iteration through pixels - for (int y = 0; y < height; ++y) { - for (int x = 0; x < width; ++x) { - // get current index in 2D-matrix - index = y * width + x; - // convert to HSV - Color.colorToHSV(pixels[index], HSV); - // increase Saturation level - HSV[1] *= level; - HSV[1] = (float) Math.max(0.0, Math.min(HSV[1], 1.0)); - // take color back - pixels[index] |= Color.HSVToColor(HSV); - } - } - // output bitmap - Bitmap bmOut = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - bmOut.setPixels(pixels, 0, width, 0, 0, width, height); - return bmOut; - } - - public Bitmap applyHueFilter(Bitmap source, int level){ - // get image size - int width = source.getWidth(); - int height = source.getHeight(); - int[] pixels = new int[width * height]; - float[] HSV = new float[3]; - // get pixel array from source - source.getPixels(pixels, 0, width, 0, 0, width, height); - - int index = 0; - // iteration through pixels - for (int y = 0; y < height; ++y) { - for (int x = 0; x < width; ++x) { - // get current index in 2D-matrix - index = y * width + x; - // convert to HSV - Color.colorToHSV(pixels[index], HSV); - // increase Saturation level - HSV[0] *= level; - HSV[0] = (float) Math.max(0.0, Math.min(HSV[0], 360.0)); - // take color back - pixels[index] |= Color.HSVToColor(HSV); - } - } - // output bitmap - Bitmap bmOut = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - bmOut.setPixels(pixels, 0, width, 0, 0, width, height); - return bmOut; - } } 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 6ff64c0b1..1e744a758 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 @@ -32,15 +32,15 @@ import java.io.OutputStream; import ru.vtosters.lite.ui.PreferencesUtil; import ru.vtosters.lite.utils.AndroidUtils; -public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment{ +public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment { private WallpaperPreferences mWPPreviewPref; - public static void copyStream(InputStream copyFrom, OutputStream copyTo) throws IOException{ + public static void copyStream(InputStream copyFrom, OutputStream copyTo) throws IOException { byte[] buffer = new byte[1024]; int length; - while((length = copyFrom.read(buffer)) > 0) { + while ((length = copyFrom.read(buffer)) > 0) { copyTo.write(buffer, 0, length); } @@ -50,7 +50,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment{ } @Override - public void onCreate(Bundle bundle){ + public void onCreate(Bundle bundle) { super.onCreate(bundle); int vtosterXml = getIdentifier("empty", "xml"); @@ -81,21 +81,21 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment{ if (!hasVerification() && !getBoolValue("dialogrecomm", false)) { PreferencesUtil.addPreference(this, "", AndroidUtils.getString("filters_warning"), AndroidUtils.getString("icons_warning_info"), null, preference -> { - getContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://vtosters.app/donate/"))); + requireContext().startActivity(new Intent("android.intent.action.VIEW").setData(Uri.parse("https://vtosters.app/donate/"))); return false; }); } - PreferencesUtil.addListPreference(this, "msg_blur_radius", "disabled", AndroidUtils.getString("filter_blur"), AndroidUtils.getArray("filter_types"), new String[] { + PreferencesUtil.addListPreference(this, "msg_blur_radius", "disabled", AndroidUtils.getString("filter_blur"), AndroidUtils.getArray("filter_types"), new String[]{ "disabled", "low", "med", "high" }); - PreferencesUtil.addListPreference(this, "msg_dim", "off", AndroidUtils.getString("filter_dim"), AndroidUtils.getArray("filter_dim_types"), new String[] { + PreferencesUtil.addListPreference(this, "msg_dim", "off", AndroidUtils.getString("filter_dim"), AndroidUtils.getArray("filter_dim_types"), new String[]{ "off", "dim_black", "dim_white" }); - PreferencesUtil.addListPreference(this, "msg_mosaic", "disabled", AndroidUtils.getString("filter_mosaic"), AndroidUtils.getArray("filter_types"), new String[] { + PreferencesUtil.addListPreference(this, "msg_mosaic", "disabled", AndroidUtils.getString("filter_mosaic"), AndroidUtils.getArray("filter_types"), new String[]{ "disabled", "low", "med", "high" }); @@ -199,7 +199,7 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment{ } @Override - public void onActivityResult(int i, int i1, @Nullable Intent intent){ + public void onActivityResult(int i, int i1, @Nullable Intent intent) { super.onActivityResult(i, i1, intent); if (intent == null || intent.getData() == null) @@ -224,14 +224,14 @@ public class WallpaperMenuFragment extends MaterialPreferenceToolbarFragment{ } } - private void removeStickCache(){ + private void removeStickCache() { SharedPreferences prefs2 = getContext().getSharedPreferences("stickers_storage", Context.MODE_PRIVATE); prefs2.edit().clear().apply(); ImEngineProvider.b().a(); } @Override - public int T4(){ + public int T4() { return getIdentifier("wallpapers", "string"); } } \ No newline at end of file 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 14297155a..867f1b191 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 @@ -18,31 +18,31 @@ import androidx.recyclerview.widget.RecyclerView; import ru.vtosters.lite.ui.adapters.MessagesPreviewAdapter; -public class WallpaperPreferences extends Preference{ +public class WallpaperPreferences extends Preference { RecyclerView mRecyclerView; ImageView mChatBackground; private MessagesPreviewAdapter mAdapter; - public WallpaperPreferences(Context context){ + public WallpaperPreferences(Context context) { this(context, null, -1, -1); } - public WallpaperPreferences(Context context, AttributeSet attributeSet){ + public WallpaperPreferences(Context context, AttributeSet attributeSet) { this(context, attributeSet, -1, -1); } - public WallpaperPreferences(Context context, AttributeSet attributeSet, int defStyleAttr){ + public WallpaperPreferences(Context context, AttributeSet attributeSet, int defStyleAttr) { this(context, attributeSet, defStyleAttr, -1); } - public WallpaperPreferences(Context context, AttributeSet attributeSet, int defStyleAttr, int i1){ + public WallpaperPreferences(Context context, AttributeSet attributeSet, int defStyleAttr, int i1) { super(context, attributeSet, defStyleAttr, i1); setLayoutResource(getIdentifier("wppreview", "layout")); } @Override - public void onBindViewHolder(PreferenceViewHolder preferenceViewHolder){ + public void onBindViewHolder(PreferenceViewHolder preferenceViewHolder) { super.onBindViewHolder(preferenceViewHolder); mRecyclerView = (RecyclerView) preferenceViewHolder.findViewById(getIdentifier("install_btn_container", "id")); @@ -56,7 +56,7 @@ public class WallpaperPreferences extends Preference{ requestBg(); } - private void requestBg(){ + private void requestBg() { final Drawable drawable = getFilteredFile(); if (drawable != null && getWallpaperFile() != null) @@ -66,7 +66,7 @@ public class WallpaperPreferences extends Preference{ } @SuppressLint("NotifyDataSetChanged") - void redraw(){ + void redraw() { mAdapter.notifyDataSetChanged(); requestBg(); } 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 249b10e82..cc140f520 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 @@ -18,18 +18,17 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; -import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.ThemesUtils; import vigo.sdk.Log; -public class WallpapersHooks{ +public class WallpapersHooks { private static final boolean compress = getBoolValue("compresswp", true); private static File mWallpaperFile; private static Drawable mWallpaper; private static boolean mUpdateWallpaperRequested = true; private static boolean mUpdateWallpaperFileRequested = true; - public static File getWallpaperFile(){ + public static File getWallpaperFile() { if (mWallpaperFile == null) { mWallpaperFile = new File(getGlobalContext().getFilesDir(), "wallpaper.webp"); } @@ -37,7 +36,7 @@ public class WallpapersHooks{ return mWallpaperFile; } - public static Drawable getFilteredFile(){ + public static Drawable getFilteredFile() { File file = null; File wp = mWallpaperFile; String temp = getGlobalContext().getFilesDir() + File.separator + "filteredwp.webp"; @@ -66,11 +65,15 @@ public class WallpapersHooks{ try { return Drawable.createFromPath(temp); } catch (Exception e) { - return Drawable.createFromPath(file.getAbsolutePath()); + if (file != null) { + return Drawable.createFromPath(file.getAbsolutePath()); + } else { + return null; + } } } - private static Boolean eligibleWallpaperFile(File file){ + private static Boolean eligibleWallpaperFile(File file) { if (file.length() >= 6291456) { sendToast(getString("wallpaper_size_limit")); removeWallpaper(); @@ -80,7 +83,7 @@ public class WallpapersHooks{ } } - public static void setBg(View view){ + public static void setBg(View view) { if (getWallpaper() != null) { ((ImageView) view).setImageDrawable(getFilteredFile()); // set picture to background return; @@ -89,7 +92,7 @@ public class WallpapersHooks{ view.setBackgroundColor(ThemesUtils.getColorFromAttr(im_bg_chat)); // set default bg color } - public static String getWallpaperUrl(){ + public static String getWallpaperUrl() { var file = getWallpaperFile(); if (file.exists() && eligibleWallpaperFile(file)) { @@ -99,7 +102,7 @@ public class WallpapersHooks{ return "default"; } - public static Drawable getWallpaper(){ + public static Drawable getWallpaper() { if (mWallpaper == null || mUpdateWallpaperRequested) { String url = getWallpaperUrl(); @@ -123,14 +126,14 @@ public class WallpapersHooks{ return mWallpaper; } - public static void requestUpdateWallpaper(){ + public static void requestUpdateWallpaper() { mUpdateWallpaperRequested = true; mUpdateWallpaperFileRequested = true; } - public static String getRadiusSummary(){ + public static String getRadiusSummary() { String radius = getPreferences().getString("msg_blur_radius", "disabled"); - switch(radius) { + switch (radius) { case "low": return getString("wallpapers_low"); case "med": @@ -142,9 +145,9 @@ public class WallpapersHooks{ } } - public static String getDimmingSummary(){ + public static String getDimmingSummary() { String radius = getPreferences().getString("msg_dim", "disabled"); - switch(radius) { + switch (radius) { case "dim_black": return getString("wallpapers_dim_black"); case "dim_white": @@ -154,9 +157,9 @@ public class WallpapersHooks{ } } - public static String getMosaicSummary(){ + public static String getMosaicSummary() { String radius = getPreferences().getString("msg_mosaic", "disabled"); - switch(radius) { + switch (radius) { case "low": return getString("wallpapers_low"); case "med": @@ -169,7 +172,7 @@ public class WallpapersHooks{ } - public static void removeWallpaper(){ + public static void removeWallpaper() { try { new File(getGlobalContext().getFilesDir(), "wallpaper.webp").delete(); new File(getGlobalContext().getFilesDir(), "filteredwp.webp").delete(); 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 558059c10..3fcb53999 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/AndroidUtils.java @@ -2,7 +2,6 @@ package ru.vtosters.lite.utils; import static ru.vtosters.lite.hooks.DateHook.getLocale; import static ru.vtosters.lite.utils.Preferences.preferences; -import static ru.vtosters.lite.utils.ThemesUtils.isDarkTheme; import android.content.Context; import android.content.SharedPreferences; @@ -107,8 +106,6 @@ public class AndroidUtils { configuration.setLayoutDirection(locale); resources.updateConfiguration(configuration, resources.getDisplayMetrics()); - edit().putBoolean("isdark", isDarkTheme()).commit(); - return context; } // Language changer and BaseContext injector @@ -136,9 +133,9 @@ public class AndroidUtils { messageDigest.update(s.getBytes()); byte[] digest = messageDigest.digest(); for (byte b : digest) { - String hexString = Integer.toHexString(b & 255); + StringBuilder hexString = new StringBuilder(Integer.toHexString(b & 255)); while (hexString.length() < 2) { - hexString = "0" + hexString; + hexString.insert(0, "0"); } sb.append(hexString); } diff --git a/app/src/main/java/ru/vtosters/lite/utils/ContactsUtils.java b/app/src/main/java/ru/vtosters/lite/utils/ContactsUtils.java index 0620b369f..85a561c8e 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/ContactsUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ContactsUtils.java @@ -32,8 +32,8 @@ import java.io.IOException; import okhttp3.Headers; import okhttp3.OkHttpClient; -public class ContactsUtils{ - public static void setContactsSync(boolean enabled){ +public class ContactsUtils { + public static void setContactsSync(boolean enabled) { makeRequest("https://" + getApi() + "/method/account.setInfo?" + "name=im_user_name_type&value=" + (enabled ? "contact" : "vk") + "&https=1&v=5.153&access_token=" + getUserToken(), response -> { try { @@ -46,23 +46,23 @@ public class ContactsUtils{ }); } - public static void uploadContacts(Activity ctx){ + public static void uploadContacts(Activity ctx) { try { if (ContextCompat.checkSelfPermission(ctx, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { sendToast(getString("contact_permission_toast")); - requestPermissions(LifecycleUtils.getCurrentActivity(), new String[] {Manifest.permission.READ_CONTACTS}, 11111); + requestPermissions(LifecycleUtils.getCurrentActivity(), new String[]{Manifest.permission.READ_CONTACTS}, 11111); sendToast(getString("contact_permission_toast")); - requestPermissions(ctx, new String[] {Manifest.permission.READ_CONTACTS}, 11111); + requestPermissions(ctx, new String[]{Manifest.permission.READ_CONTACTS}, 11111); } else { var account = VKAuthUtils.a.a(VKAccountManager.d().Z()); ContactsSyncAdapterService.c(ctx, account, new Bundle(), new SyncResult()); } - } catch (Exception e){ + } catch (Exception e) { Log.d("ContactsUtils", e.getMessage()); } } - public static void getContactsStatus(Context ctx){ + public static void getContactsStatus(Context ctx) { final ProgressDialog progressDialog = new ProgressDialog(ctx); progressDialog.setMessage(getString("contact_info_loading")); progressDialog.show(); 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 e3f957f22..9b1039d2d 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/ExternalLinkParser.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ExternalLinkParser.java @@ -4,6 +4,7 @@ import static android.text.TextUtils.isEmpty; import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; import static ru.vtosters.lite.utils.Preferences.isEnableExternalOpening; +import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; @@ -63,9 +64,7 @@ public class ExternalLinkParser { } else { String[] titles = qualities.keySet().toArray(new String[0]); new AlertDialog.Builder(context) - .setItems(titles, ((dialog, which) -> { - startExternalVideo(qualities.get(titles[which]), context); - })) + .setItems(titles, ((dialog, which) -> startExternalVideo(qualities.get(titles[which]), context))) .show(); } } @@ -144,6 +143,7 @@ public class ExternalLinkParser { return false; } + @SuppressLint("QueryPermissionsNeeded") private static String getMXPlayerPackageName() { for (ApplicationInfo info : getGlobalContext().getPackageManager().getInstalledApplications(0)) { String packName = info.packageName; 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 7894817fd..d06def389 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/IOUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/IOUtils.java @@ -57,7 +57,7 @@ public class IOUtils { } public static String readAllLines(InputStream is) throws IOException { - return new String(readAllBytes(is), "utf-8"); + return new String(readAllBytes(is), StandardCharsets.UTF_8); } public static byte[] readAllBytes(File file) throws IOException { 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 bad406545..b9cdea825 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/LifecycleUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/LifecycleUtils.java @@ -9,7 +9,6 @@ import android.os.Bundle; import android.os.Handler; import com.vk.navigation.Navigator; -import com.vtosters.lite.VKActivity; import java.util.ArrayList; import java.util.List; 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 147795921..c6ce16dae 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/NewsFeedFiltersUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/NewsFeedFiltersUtils.java @@ -25,12 +25,12 @@ import java.util.Scanner; import ru.vtosters.lite.hooks.AdBlockHook; -public class NewsFeedFiltersUtils{ +public class NewsFeedFiltersUtils { public static List mFilters; public static List mFiltersNames; public static List mFiltersLinks; - public static void setupFilters(){ + public static void setupFilters() { mFilters = new ArrayList<>(); mFiltersNames = new ArrayList<>(); mFiltersLinks = new ArrayList<>(); @@ -57,7 +57,7 @@ public class NewsFeedFiltersUtils{ } } - public static void getFilter(String boolname, String filename, List list){ + public static void getFilter(String boolname, String filename, List list) { var ctx = getGlobalContext(); if (getBoolValue(boolname, false)) { @@ -66,7 +66,7 @@ public class NewsFeedFiltersUtils{ if (ctx != null) { scanner = new Scanner(ctx.getAssets().open(filename)); - while(scanner.hasNextLine()) { + while (scanner.hasNextLine()) { var line = scanner.nextLine(); if (!line.isEmpty()) list.add(line.toLowerCase()); @@ -78,7 +78,7 @@ public class NewsFeedFiltersUtils{ } } // Get needed filter list from assets - public static boolean injectFiltersReposts(JSONObject obj) throws JSONException{ + public static boolean injectFiltersReposts(JSONObject obj) throws JSONException { if (getBoolValue("cringerepost", false) && obj.has("copy_history")) { var copyHistoryNode = obj.optJSONArray("copy_history"); if (copyHistoryNode != null && copyHistoryNode.length() != 0) { @@ -111,7 +111,7 @@ public class NewsFeedFiltersUtils{ return false; } - public static boolean checkCopyright(JSONObject json) throws JSONException{ + public static boolean checkCopyright(JSONObject json) throws JSONException { if (json.has("copyright")) { if (copyright_post()) return true; @@ -146,23 +146,23 @@ public class NewsFeedFiltersUtils{ return false; } - public static boolean isRecomsGroup(String src){ + public static boolean isRecomsGroup(String src) { return authorsrecomm() && src.equals("recommended_groups"); } - public static boolean isMusicBlock(String src){ + public static boolean isMusicBlock(String src) { return authorsrecomm() && (src.equals("recommended_audios") || src.equals("recommended_artists") || src.equals("recommended_playlists")); } - public static boolean isNewsBlock(String src){ + public static boolean isNewsBlock(String src) { return ads() && src.equals("tags_suggestions"); } - public static String getAllFilters(){ + public static String getAllFilters() { return getPrefsValue("spamfilters"); } - public static boolean isBadNews(String text){ + public static boolean isBadNews(String text) { var textInLowerCase = text.toLowerCase(); if (mFilters != null) { @@ -179,7 +179,7 @@ public class NewsFeedFiltersUtils{ return false; } - public static boolean checkCaption(JSONObject postJson){ + public static boolean checkCaption(JSONObject postJson) { if (postJson.has("caption")) { if (captions()) return true; var caption = postJson.optJSONObject("caption"); @@ -203,29 +203,29 @@ public class NewsFeedFiltersUtils{ return false; } - public static boolean isAds(String optString){ + public static boolean isAds(String optString) { return ads() && (optString.equals("ads_easy_promote") || optString.equals("promo_button") || optString.equals("app_widget") || optString.equals("ads")); } - public static boolean isAuthorRecommendations(String optString){ + public static boolean isAuthorRecommendations(String optString) { return authorsrecomm() && optString.equals("authors_rec"); } - public static boolean isPostRecommendations(String optString){ + public static boolean isPostRecommendations(String optString) { return postsrecomm() && (optString.equals("live_recommended") || optString.equals("inline_user_rec")); } - public static boolean isFriendsRecommendations(String optString){ + public static boolean isFriendsRecommendations(String optString) { return friendsrecomm() && (optString.equals("user_rec") || optString.equals("friends_recommendations") || optString.equals("friends_recomm")); } - public static boolean isGroupAds(JSONObject obj){ + public static boolean isGroupAds(JSONObject obj) { return adsgroup() && obj.optInt("marked_as_ads", 0) == 1; } } diff --git a/app/src/main/java/ru/vtosters/lite/utils/ProfileHider.java b/app/src/main/java/ru/vtosters/lite/utils/ProfileHider.java index afb74feb5..62e608e0d 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/ProfileHider.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ProfileHider.java @@ -71,7 +71,8 @@ public class ProfileHider { z2.setAccessible(true); z2.set(extendedUserProfile, response); } - } catch (IOException | JSONException | NoSuchFieldException | IllegalAccessException e) { + } catch (IOException | JSONException | NoSuchFieldException | + IllegalAccessException e) { e.printStackTrace(); } catch (NullPointerException e) { Log.e("ProfileHide", "null \"profiles\" node\n" + e); 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 58bf46da4..af2f37c40 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/RenameTool.java +++ b/app/src/main/java/ru/vtosters/lite/utils/RenameTool.java @@ -203,15 +203,16 @@ public class RenameTool { sendToast(AndroidUtils.getString("rename_error")); } }); - if (isChangedName(id)) builder.setNeutralButton(AndroidUtils.getString("rename_reset"), (dialog, which) -> { - getHelper().getWritableDatabase().execSQL(String.format("DELETE FROM %s WHERE %s='%s'", TABLE_NAME, COLUMN_VKID, id)); - if (id == AccountManagerUtils.getUserId()) { - ctx.sendBroadcast(new Intent("com.vkontakte.android.USER_NAME_CHANGED")); - } - updateRequested = true; - ctx.sendBroadcast(new Intent("com.vkontakte.android.ACTION_PROFILE_UPDATED").putExtra("uid", id)); - sendToast(AndroidUtils.getString("rename_remove_from_bd_success")); - }); + if (isChangedName(id)) + builder.setNeutralButton(AndroidUtils.getString("rename_reset"), (dialog, which) -> { + getHelper().getWritableDatabase().execSQL(String.format("DELETE FROM %s WHERE %s='%s'", TABLE_NAME, COLUMN_VKID, id)); + if (id == AccountManagerUtils.getUserId()) { + ctx.sendBroadcast(new Intent("com.vkontakte.android.USER_NAME_CHANGED")); + } + updateRequested = true; + ctx.sendBroadcast(new Intent("com.vkontakte.android.ACTION_PROFILE_UPDATED").putExtra("uid", id)); + sendToast(AndroidUtils.getString("rename_remove_from_bd_success")); + }); var alert = builder.create(); @@ -263,11 +264,12 @@ public class RenameTool { e.printStackTrace(); } }); - if (isChangedNameGroup(id)) builder.setNeutralButton(AndroidUtils.getString("rename_reset"), (dialog, which) -> { - getHelper().getWritableDatabase().execSQL(String.format("DELETE FROM %s WHERE %s='%s'", TABLE_NAME_GROUP, COLUMN_VKID, id)); - updateRequested = true; - sendToast(AndroidUtils.getString("rename_remove_group_from_bd_success")); - }); + if (isChangedNameGroup(id)) + builder.setNeutralButton(AndroidUtils.getString("rename_reset"), (dialog, which) -> { + getHelper().getWritableDatabase().execSQL(String.format("DELETE FROM %s WHERE %s='%s'", TABLE_NAME_GROUP, COLUMN_VKID, id)); + updateRequested = true; + sendToast(AndroidUtils.getString("rename_remove_group_from_bd_success")); + }); var alert = builder.create(); 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 68c095561..4ba4827b1 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/ThemesUtils.java +++ b/app/src/main/java/ru/vtosters/lite/utils/ThemesUtils.java @@ -7,7 +7,7 @@ import static ru.vtosters.lite.utils.AndroidUtils.getCenterScreenCoords; import static ru.vtosters.lite.utils.AndroidUtils.getIdentifier; import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; import static ru.vtosters.lite.utils.AndroidUtils.getResources; -import static ru.vtosters.lite.utils.LifecycleUtils.*; +import static ru.vtosters.lite.utils.LifecycleUtils.getCurrentActivity; import static ru.vtosters.lite.utils.Preferences.color_grishka; import static ru.vtosters.lite.utils.Preferences.dockbar_accent; import static ru.vtosters.lite.utils.Preferences.milkshake; diff --git a/app/src/main/java/ru/vtosters/lite/utils/VKMeHandler.java b/app/src/main/java/ru/vtosters/lite/utils/VKMeHandler.java index 26facc56f..6913e1233 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/VKMeHandler.java +++ b/app/src/main/java/ru/vtosters/lite/utils/VKMeHandler.java @@ -1,8 +1,8 @@ package ru.vtosters.lite.utils; + import static ru.vtosters.lite.net.Request.makeRequest; import static ru.vtosters.lite.proxy.ProxyUtils.getApi; import static ru.vtosters.lite.proxy.ProxyUtils.getOauth; -import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken; import static ru.vtosters.lite.utils.AndroidUtils.edit; import static ru.vtosters.lite.utils.AndroidUtils.getPrefsValue; import static ru.vtosters.lite.utils.AndroidUtils.getString; @@ -13,8 +13,8 @@ import android.util.Log; import org.json.JSONException; import org.json.JSONObject; -public class VKMeHandler{ - public static void getVkMeToken(String username, String password){ +public class VKMeHandler { + public static void getVkMeToken(String username, String password) { makeRequest("https://" + getOauth() + "/token?" + @@ -27,12 +27,12 @@ public class VKMeHandler{ try { JSONObject mainJson = new JSONObject(response); - if (mainJson.has("redirect_uri")){ + if (mainJson.has("redirect_uri")) { String redirect_uri = mainJson.getString("redirect_uri"); // TODO open redirect_uri and get token - } else if (mainJson.has("access_token")){ + } else if (mainJson.has("access_token")) { setToken(mainJson.getString("access_token")); - } else if (mainJson.has("error_description")){ + } else if (mainJson.has("error_description")) { Log.d("VKMeHandler", mainJson.getString("error_description")); sendToast(getString("auth_error_vtl") + ": " + mainJson.getString("error_description")); } @@ -43,19 +43,19 @@ public class VKMeHandler{ }); } - public static void setToken(String token){ - edit().putString("vkmetoken", token).commit(); - } - - public static void removeToken(){ + public static void removeToken() { edit().remove("vkmetoken").commit(); } - public static String getToken(){ + public static String getToken() { return getPrefsValue("vkmetoken"); } - public static void setPrivacyStatus(String status){ + public static void setToken(String token) { + edit().putString("vkmetoken", token).commit(); + } + + public static void setPrivacyStatus(String status) { // all, friends_and_contacts, only_me makeRequest("https://" + getApi() + "/method/account.setPrivacy?" + "v=5.140&key=online&value=" + status + "&https=1&access_token=" + getToken(), response -> { @@ -67,13 +67,13 @@ public class VKMeHandler{ }); } - public static void getPrivacyStatus(){ + public static void getPrivacyStatus() { makeRequest("https://" + getApi() + "/method/execute?v=5.140&code=return API.account.getPrivacySettings().settings[22].value.category;&access_token=" + getToken(), response -> { try { String resp = new JSONObject(response).optString("response"); - switch (resp){ // TODO make support for privacy + switch (resp) { // TODO make support for privacy case "all": case "friends_and_contacts": case "friends":