From 9ff8c1d9fe6b0851659063a81ebe43c286db4f65 Mon Sep 17 00:00:00 2001 From: gdlbo <41114720+gdlbo@users.noreply.github.com> Date: Wed, 14 Feb 2024 23:03:19 +0300 Subject: [PATCH] refactored FoafBase added check for vk messenger accounts rewritten all legacy code --- .../java/ru/vtosters/lite/foaf/FoafBase.java | 137 +++++++++--------- 1 file changed, 72 insertions(+), 65 deletions(-) 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 0f6781a6a..6b1c7d0c5 100644 --- a/app/src/main/java/ru/vtosters/lite/foaf/FoafBase.java +++ b/app/src/main/java/ru/vtosters/lite/foaf/FoafBase.java @@ -6,43 +6,43 @@ import android.util.Log; import com.vk.core.dialogs.alert.VkAlertDialog; import com.vtosters.lite.R; import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; import org.json.JSONException; import org.json.JSONObject; import ru.vtosters.lite.di.singleton.VtOkHttpClient; -import ru.vtosters.lite.net.Request; +import ru.vtosters.lite.utils.AndroidUtils; import ru.vtosters.lite.utils.LifecycleUtils; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.concurrent.TimeUnit; +import java.io.IOException; +import java.time.LocalDate; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import java.time.temporal.ChronoUnit; +import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static android.widget.Toast.LENGTH_SHORT; -import static android.widget.Toast.makeText; import static ru.vtosters.lite.proxy.ProxyUtils.getApi; import static ru.vtosters.lite.proxy.ProxyUtils.isAnyProxyEnabled; -import static ru.vtosters.lite.utils.AndroidUtils.getGlobalContext; public class FoafBase { private static final Pattern FOAF_REGEX = Pattern.compile(" foafDate = findPattern(str, FOAF_REGEX); - String m = matcher.group(1); + Log.e("FoafBase", str); - if (m == null) { - LifecycleUtils.getCurrentActivity().runOnUiThread(() -> makeText(getGlobalContext(), context.getString(R.string.foaferr), LENGTH_SHORT).show()); - return; - } - - String normalHumanDate = getNormalHumanDate(m); - - LifecycleUtils.getCurrentActivity().runOnUiThread(() -> new VkAlertDialog.Builder(context) - .setTitle(R.string.addinf) - .setMessage(context.getString(R.string.foafid) + - " " + i + context.getString(R.string.foafregdate) - + " " + normalHumanDate + context.getString(R.string.foafdate) - + " " + daysPassedFromFoafDate(normalHumanDate)) - .setPositiveButton(android.R.string.ok, null) - .show()); - } catch (Exception e) { - LifecycleUtils.getCurrentActivity().runOnUiThread(() -> makeText(getGlobalContext(), context.getString(R.string.foaferr), LENGTH_SHORT).show()); + if (foafDate.isPresent()) { + String normalHumanDate = getNormalHumanDate(foafDate.get()); + long daysPassed = daysPassedFromFoafDate(normalHumanDate); + showFoafDialog(context, i, normalHumanDate, daysPassed); + } else if (str.contains(DELETED)) { + AndroidUtils.sendToast("Профиль удален или не существует (аккаунт VK Мессенджера)"); + } else { + AndroidUtils.sendToast(context.getString(R.string.foaferr)); } } + private static Optional findPattern(String str, Pattern pattern) { + Matcher matcher = pattern.matcher(str); + if (matcher.find() && matcher.groupCount() != 0) { + return Optional.ofNullable(matcher.group(1)); + } else { + return Optional.empty(); + } + } + + private static void showFoafDialog(Context context, int i, String normalHumanDate, long daysPassed) { + String message = String.format("%s %d%s %s%s %d", context.getString(R.string.foafid), i, context.getString(R.string.foafregdate), normalHumanDate, context.getString(R.string.foafdate), daysPassed); + new VkAlertDialog.Builder(context) + .setTitle(R.string.addinf) + .setMessage(message) + .setPositiveButton(android.R.string.ok, null) + .show(); + } + private static long daysPassedFromFoafDate(String str) { try { - Date parse = new SimpleDateFormat("yyyy-MM-dd").parse(str.split(" ")[1]); - return TimeUnit.DAYS.convert(new Date().getTime() - parse.getTime(), TimeUnit.MILLISECONDS); - } catch (ParseException e) { + LocalDate foafDate = LocalDate.parse(str.split(" ")[1]); + return ChronoUnit.DAYS.between(foafDate, LocalDate.now()); + } catch (DateTimeParseException e) { return -1; } } private static String getNormalHumanDate(String str) { - String[] split = str.split("T"); - return split[1].split("\\+")[0] + " " + split[0]; + OffsetDateTime dateTime = OffsetDateTime.parse(str); + return dateTime.format(DateTimeFormatter.ofPattern("HH:mm:ss yyyy-MM-dd")); } -} +} \ No newline at end of file