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 90d7ce1f7..d9e6d7fc1 100644
--- a/app/src/main/java/ru/vtosters/lite/downloaders/MessagesDownloader.java
+++ b/app/src/main/java/ru/vtosters/lite/downloaders/MessagesDownloader.java
@@ -33,6 +33,8 @@ public class MessagesDownloader{
private static SparseArray usersArray;
+ public static final String VK_DOMAIN = "vk.ru";
+
public static String formatTime(long now){
return sdformat.format(new Date(now));
}
@@ -264,6 +266,13 @@ public class MessagesDownloader{
".msg-reply p.reply-content {\n" +
" color: #000000;\n" +
"}\n" +
+ ".vtex-milk-msg.poll {\n" +
+ " width: 45%;\n" +
+ " background: linear-gradient(to bottom right, #707c8c, #4d5565);\n" +
+ " font-style: normal;" +
+ "}\n" +
+ ".vtex-milk-msg.poll p { color: white; }\n" +
+ ".vtex-milk-msg.poll hr { border-top: 1px; background: #ffffff; }\n" +
"\n" +
"";
@@ -283,6 +292,7 @@ public class MessagesDownloader{
@Override
String provideMessage(MiniMsg message, MiniUser user) throws JSONException{
String isOut = (user.id == getUserId()) ? " vtex-milk-msg-out" : "";
+
String geoPosition = "";
if (message.geo != null) {
var coordinates = message.geo.optJSONObject("coordinates");
@@ -295,6 +305,7 @@ public class MessagesDownloader{
"";
}
}
+
String chatAction = (message.chat_action != null) ? getHtmlForChatAction(message.chat_action) : "";
String attaches = (message.attachments.size() > 0) ? "Вложения: " + getHtmlForAttach(message.attachments) + "
" : "";
String reply = (message.reply_message != null) ? provideReply(message.reply_message) : "";
@@ -302,7 +313,7 @@ public class MessagesDownloader{
String userLink = (user.isGroup ? "club" : "id") + user.id;
return "").toString();
@@ -390,7 +401,7 @@ public class MessagesDownloader{
private String mentionsReplace(String text) {
var matcher = Pattern.compile("\\[((?:club|id|public)\\d+)\\|([^]]+)\\]").matcher(text);
- return matcher.replaceAll("$2");
+ return matcher.replaceAll("$2");
}
private String pluralMsg(int count) {
@@ -431,7 +442,7 @@ public class MessagesDownloader{
htmlAction.append("Добавил ").append((newUserId > 0) ? "пользователя" : "группу");
if (newUserId != 0) {
var userLink = ((newUserId < 0) ? "club" : "id") + Math.abs(newUserId);
- htmlAction.append(" @").append(userLink).append("");
+ htmlAction.append(" @").append(userLink).append("");
}
break;
case "chat_kick_user":
@@ -439,7 +450,7 @@ public class MessagesDownloader{
htmlAction.append("Исключил ").append((removedUserId > 0) ? "пользователя" : "группу");
if (removedUserId != 0) {
var userLink = ((removedUserId < 0) ? "club" : "id") + Math.abs(removedUserId);
- htmlAction.append(" @").append(userLink).append("");
+ htmlAction.append(" @").append(userLink).append("");
}
break;
case "chat_pin_message":
@@ -466,17 +477,6 @@ public class MessagesDownloader{
return htmlAction.append("
").toString();
}
- /*
- TODO:
- 1) poll (опросы)
- 2) mini_app (поделиться миниаппом)
- 3) audio_playlist (плейлист песен)
- 4) story (история)
- 5) wall_reply (комментарий на стене)
- 6) podcast (подкаст)
- 7) gift (подарок)
- */
-
private String getHtmlForAttach(List attaches) throws JSONException{
StringBuilder rs = new StringBuilder();
@@ -486,7 +486,7 @@ public class MessagesDownloader{
if (item == null) continue;
- switch(type) {
+ switch(type) { // market_album is not supported
case "photo":
var sizes = item.getJSONArray("sizes");
rs.append("фотография");
@@ -498,7 +498,7 @@ public class MessagesDownloader{
rs.append("ссылка");
break;
case "wall":
- rs.append("запись на стене");
+ rs.append("запись на стене");
break;
case "sticker":
rs.append("
");
@@ -512,6 +512,43 @@ public class MessagesDownloader{
case "video":
rs.append("видеозапись ( ").append(getVideoHtml(item.optJSONObject("files"))).append(")");
break;
+ case "wall_reply":
+ var link = "https://" + VK_DOMAIN + "/wall" + item.optString("owner_id") + "_" + item.optString("post_id") + "?reply=" + item.optString("id");
+ rs.append("комментарий на стене");
+ break;
+ case "story":
+ var story_link = "https://" + VK_DOMAIN + "/story" + item.optString("owner_id") + "_" + item.optString("id");
+ rs.append("история");
+ break;
+ case "podcast":
+ var podcast_link = "https://" + VK_DOMAIN + "/podcast" + item.optString("owner_id") + "_" + item.optString("id");
+ rs.append("подкаст");
+ break;
+ case "gift":
+ rs.append("
");
+ break;
+ case "mini_app":
+ var app = item.optJSONObject("app");
+
+ if (app != null) {
+ var miniapp_link = "https://" + VK_DOMAIN + "/app" + app.optString("id");
+ rs.append("мини-приложение");
+ break;
+ }
+
+ rs.append("ошибка");
+ break;
+ case "audio_playlist":
+ var playlist_link = "https://" + VK_DOMAIN + "/music/album/" + item.optString("owner_id") + "_" + item.optString("id") + "_" + item.optString("access_key");
+ rs.append("плейлист (").append(item.optString("title")).append(")");
+ break;
+ case "poll":
+ rs.append((item.optBoolean("anonymous") ? "анонимный" : "публичный")).append(" опрос ").append(getPollHtml(item));
+ break;
+ case "market":
+ var market_item_link = "https://" + VK_DOMAIN + "/market" + item.optString("owner_id") + "_" + item.optString("id");
+ rs.append("товар");
+ break;
default:
rs.append("не поддерживается (").append(type).append(")");
break;
@@ -524,8 +561,26 @@ public class MessagesDownloader{
}
}
- private static String getVideoHtml(JSONObject files) throws JSONException {
+ 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(poll.optString("votes")).append(" чел.
");
+
+ return pollHtml.append("
").toString();
+ }
+
+ private static String getVideoHtml(JSONObject files) throws JSONException {
if (files == null) return "ссылки отсутствуют";
Iterator< ? > keys = files.keys();
@@ -539,7 +594,7 @@ public class MessagesDownloader{
if (key.equals("mp4_" + quality[qualityIndex])) {
videoHtml.append("").append(quality[qualityIndex]).append("p").append(" ");
- if (qualityIndex == 7) break;
+ if (qualityIndex == quality.length - 1) break;
++qualityIndex;
}
}