diff --git a/app/src/main/java/ru/vtosters/lite/downloaders/messages/MessagesDownloader.java b/app/src/main/java/ru/vtosters/lite/downloaders/messages/MessagesDownloader.java index 39b192e8b..e5407bbd2 100644 --- a/app/src/main/java/ru/vtosters/lite/downloaders/messages/MessagesDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/downloaders/messages/MessagesDownloader.java @@ -1,14 +1,13 @@ package ru.vtosters.lite.downloaders.messages; -import android.util.Log; import android.util.SparseArray; import androidx.annotation.Nullable; import com.vk.core.util.ToastUtils; import com.vtosters.lite.R; -import okhttp3.Call; -import okhttp3.Callback; import okhttp3.Request; import okhttp3.Response; +import okio.BufferedSink; +import okio.Okio; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -18,6 +17,7 @@ import ru.vtosters.lite.downloaders.messages.items.MiniUser; import ru.vtosters.lite.proxy.ProxyUtils; import ru.vtosters.lite.utils.AccountManagerUtils; import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.IOUtils; import java.io.File; import java.io.FileOutputStream; @@ -108,38 +108,36 @@ public class MessagesDownloader { var req = new Request.a() .b(url) .a(); - VtOkHttpClient.getInstance().a(req).a(new Callback() { - @Override - public void a(Call call, IOException e) { - Log.d("MessagesDownloader", String.valueOf(e)); + + try (Response response = VtOkHttpClient.getInstance().a(req).execute()) { + File file = new File(AndroidUtils.getGlobalContext().getCacheDir(), "response" + "_user_list" + ".json"); + + try (BufferedSink sink = Okio.a(Okio.b(file))) { + sink.a(response.a().f()); } - @Override - public void a(Call call, Response response) - throws IOException { - try { - JSONObject obj = new JSONObject(response.a().g()).getJSONObject("response"); + JSONObject obj = new JSONObject(IOUtils.readAllLines(file)).getJSONObject("response"); - SparseArray users = new SparseArray<>(); - parseUsers(users, obj.optJSONArray("profiles"), false); - parseUsers(users, obj.optJSONArray("groups"), true); + SparseArray users = new SparseArray<>(); + parseUsers(users, obj.optJSONArray("profiles"), false); + parseUsers(users, obj.optJSONArray("groups"), true); - List msgs = parseMessages(obj.getJSONArray("items")); + List msgs = parseMessages(obj.getJSONArray("items")); - usersArray = users; + usersArray = users; - fos.write(format.provideHeader("TODO", formatTime(System.currentTimeMillis())).getBytes(StandardCharsets.UTF_8)); - for (MiniMsg msg : msgs) { - fos.write(format.provideMessage(msg, users.get(msg.fromId)).getBytes(StandardCharsets.UTF_8)); - } - fos.write(format.provideDocumentEnd().getBytes(StandardCharsets.UTF_8)); - fos.close(); - ToastUtils.a(AndroidUtils.getString(R.string.saved_as) + " " + out.getAbsolutePath()); - } catch (IOException | JSONException e) { - e.printStackTrace(); - } + fos.write(format.provideHeader("TODO", formatTime(System.currentTimeMillis())).getBytes(StandardCharsets.UTF_8)); + for (MiniMsg msg : msgs) { + fos.write(format.provideMessage(msg, users.get(msg.fromId)).getBytes(StandardCharsets.UTF_8)); } - }); + fos.write(format.provideDocumentEnd().getBytes(StandardCharsets.UTF_8)); + fos.close(); + ToastUtils.a(AndroidUtils.getString(R.string.saved_as) + " " + out.getAbsolutePath()); + + file.delete(); + } catch (IOException | JSONException e) { + e.printStackTrace(); + } } private List parseMessages(JSONArray jsonArray) throws JSONException { 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 79b4bca4b..38986dbd5 100644 --- a/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java +++ b/app/src/main/java/ru/vtosters/lite/music/M3UDownloader.java @@ -5,6 +5,9 @@ import com.vk.dto.music.MusicTrack; import java8.util.concurrent.CompletableFuture; import okhttp3.OkHttpClient; import okhttp3.Request; +import okhttp3.Response; +import okio.BufferedSink; +import okio.Okio; import ru.vtosters.lite.di.singleton.VtOkHttpClient; import ru.vtosters.lite.music.cache.CacheDatabaseDelegate; import ru.vtosters.lite.music.converter.ts.FFMpeg; @@ -53,13 +56,19 @@ public class M3UDownloader implements ITrackDownloader { return; } - try { - Request request = new Request.a().b(track.D).a(); - String response = client.a(request).execute().a().g(); - parse(response, outDir, callback, track, cache); + Request request = new Request.a().b(track.D).a(); + + try (Response response = client.a(request).execute()) { + File file = new File(AndroidUtils.getGlobalContext().getCacheDir(), track.y1()); + + try (BufferedSink sink = Okio.a(Okio.b(file))) { + sink.a(response.a().f()); + } + + parse(IOUtils.readAllLines(file), outDir, callback, track, cache); + file.delete(); } catch (IOException e) { e.printStackTrace(); - callback.onFailure(); } } diff --git a/app/src/main/java/ru/vtosters/lite/ssfs/UsersList.java b/app/src/main/java/ru/vtosters/lite/ssfs/UsersList.java index 030d3b646..3f3252127 100644 --- a/app/src/main/java/ru/vtosters/lite/ssfs/UsersList.java +++ b/app/src/main/java/ru/vtosters/lite/ssfs/UsersList.java @@ -1,18 +1,20 @@ package ru.vtosters.lite.ssfs; import android.util.Log; -import okhttp3.Call; -import okhttp3.Callback; import okhttp3.Request; import okhttp3.Response; +import okio.BufferedSink; +import okio.Okio; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import ru.vtosters.lite.di.singleton.VtOkHttpClient; import ru.vtosters.lite.utils.AccountManagerUtils; import ru.vtosters.lite.utils.AndroidUtils; +import ru.vtosters.lite.utils.IOUtils; import ru.vtosters.lite.utils.NetworkUtils; +import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -35,21 +37,18 @@ public class UsersList { .b(Utils.getDomain() + "/api/getUsersWithServiceDescriptionsAndBanners") .a(); - VtOkHttpClient.getInstance().a(request).a(new Callback() { - @Override - public void a(Call call, IOException e) { - e.printStackTrace(); + try (Response response = VtOkHttpClient.getInstance().a(request).execute()) { + File file = new File(AndroidUtils.getGlobalContext().getCacheDir(), "response" + "_user_list" + ".json"); + + try (BufferedSink sink = Okio.a(Okio.b(file))) { + sink.a(response.a().f()); } - @Override - public void a(Call call, Response response) { - try { - parseJson(new JSONObject(response.a().g()).getJSONObject("response")); - } catch (JSONException | IOException e) { - e.printStackTrace(); - } - } - }); + parseJson(new JSONObject(IOUtils.readAllLines(file)).getJSONObject("response")); + file.delete(); + } catch (IOException | JSONException e) { + e.printStackTrace(); + } } public static boolean hasDescription(int id) { diff --git a/app/src/main/java/ru/vtosters/lite/utils/VTVerifications.java b/app/src/main/java/ru/vtosters/lite/utils/VTVerifications.java index 6bed0005c..b50487eb9 100644 --- a/app/src/main/java/ru/vtosters/lite/utils/VTVerifications.java +++ b/app/src/main/java/ru/vtosters/lite/utils/VTVerifications.java @@ -52,6 +52,7 @@ public class VTVerifications { prefs.edit() .putString("ids", r) .apply(); + file.delete(); } catch (IOException e) { if (prefs.contains("ids")) parseJson(prefs.getString("ids", "[]")); Log.d("VTVerifications", e.getMessage());