aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/utils/RichPreview.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2019-09-07 23:58:56 +0200
committerChristian Schneppe <christian@pix-art.de>2019-09-07 23:58:56 +0200
commitfce79f08c182bcc3569f52799ba1e058a10597c4 (patch)
tree4eca8441c415a93ed17b0324d2203d8a758df36b /src/main/java/de/pixart/messenger/utils/RichPreview.java
parent41aecb003dacd67d45ff73524a352472f470a978 (diff)
improve webpreviews during offline times
Diffstat (limited to 'src/main/java/de/pixart/messenger/utils/RichPreview.java')
-rw-r--r--src/main/java/de/pixart/messenger/utils/RichPreview.java65
1 files changed, 39 insertions, 26 deletions
diff --git a/src/main/java/de/pixart/messenger/utils/RichPreview.java b/src/main/java/de/pixart/messenger/utils/RichPreview.java
index 7a2d2d723..0759b185b 100644
--- a/src/main/java/de/pixart/messenger/utils/RichPreview.java
+++ b/src/main/java/de/pixart/messenger/utils/RichPreview.java
@@ -24,6 +24,7 @@ import java.net.URLEncoder;
import java.util.regex.Pattern;
import de.pixart.messenger.Config;
+import de.pixart.messenger.services.XmppConnectionService;
/**
* Created by ponna on 16-01-2018.
@@ -43,14 +44,21 @@ public class RichPreview {
metaData = new MetaData();
}
- public void getPreview(final String url, final String filename, final Context context) {
+ public void getPreview(final String url, final String filename, final Context context, final XmppConnectionService mXmppConnectionService) {
this.url = url;
this.filename = filename;
this.context = context;
- new getData().execute();
+ mXmppConnectionService.mWebPreviewExecutor.execute(() -> {
+ new getData(mXmppConnectionService).execute();
+ });
}
private class getData extends AsyncTask<Void, Void, Void> {
+ XmppConnectionService service;
+
+ getData(XmppConnectionService xmppConnectionService) {
+ this.service = xmppConnectionService;
+ }
@Override
protected Void doInBackground(Void... params) {
@@ -68,29 +76,33 @@ public class RichPreview {
}
String string = sb.substring(sb.indexOf("{"), sb.lastIndexOf("}") + 1);
JSONObject json = new JSONObject(string);
- if (json.has("url")) {
- metaData.setUrl(json.getString("url"));
- }
- if (json.has("imageurl")) {
- metaData.setImageurl(json.getString("imageurl"));
- }
- if (json.has("title")) {
- metaData.setTitle(json.getString("title"));
- }
- if (json.has("description")) {
- metaData.setDescription(json.getString("description"));
- }
- if (json.has("sitename")) {
- metaData.setSitename(json.getString("sitename"));
- }
- if (json.has("mediatype")) {
- metaData.setMediatype(json.getString("mediatype"));
- }
- if (json.has("favicon")) {
- metaData.setFavicon(json.getString("favicon"));
+ if (json.has("offline") && json.getString("offline").equals("false")) {
+ if (json.has("url")) {
+ metaData.setUrl(json.getString("url"));
+ }
+ if (json.has("imageurl")) {
+ metaData.setImageurl(json.getString("imageurl"));
+ }
+ if (json.has("title")) {
+ metaData.setTitle(json.getString("title"));
+ }
+ if (json.has("description")) {
+ metaData.setDescription(json.getString("description"));
+ }
+ if (json.has("sitename")) {
+ metaData.setSitename(json.getString("sitename"));
+ }
+ if (json.has("mediatype")) {
+ metaData.setMediatype(json.getString("mediatype"));
+ }
+ if (json.has("favicon")) {
+ metaData.setFavicon(json.getString("favicon"));
+ }
+ } else {
+ retrieveMeta(url, context, service);
}
} catch (Exception e) {
- retrieveMeta(url, context);
+ retrieveMeta(url, context, service);
e.printStackTrace();
} finally {
try {
@@ -133,7 +145,7 @@ public class RichPreview {
}
}
- private void saveMeta(MetaData metaData, Context context) {
+ private void saveMeta(MetaData metaData, Context context, final XmppConnectionService xmppConnectionService) {
final File file = new File(context.getCacheDir(), RICH_LINK_METADATA + File.separator + filename);
file.getParentFile().mkdirs();
FileOutputStream fos = null;
@@ -150,6 +162,7 @@ public class RichPreview {
json.put("sitename", metaData.getSitename());
json.put("mediatype", metaData.getMediatype());
json.put("favicon", metaData.getFavicon());
+ json.put("offline", !xmppConnectionService.hasInternetConnection());
oos.writeObject(json.toString());
} catch (Exception e) {
e.printStackTrace();
@@ -165,7 +178,7 @@ public class RichPreview {
}
}
- private void retrieveMeta(String url, Context context) {
+ private void retrieveMeta(String url, Context context, XmppConnectionService xmppConnectionService) {
Document doc = null;
try {
doc = Jsoup.connect(url)
@@ -280,7 +293,7 @@ public class RichPreview {
metaData.setUrl(uri != null ? uri.getHost() : null);
}
}
- saveMeta(metaData, context);
+ saveMeta(metaData, context, xmppConnectionService);
}
public interface ResponseListener {