@@ -352,6 +352,7 @@ public class XmppConnectionService extends Service {
private final Set<OnMucRosterUpdate> mOnMucRosterUpdate = Collections.newSetFromMap(new WeakHashMap<OnMucRosterUpdate, Boolean>());
private final Set<OnKeyStatusUpdated> mOnKeyStatusUpdated = Collections.newSetFromMap(new WeakHashMap<OnKeyStatusUpdated, Boolean>());
private final Set<OnJingleRtpConnectionUpdate> onJingleRtpConnectionUpdate = Collections.newSetFromMap(new WeakHashMap<OnJingleRtpConnectionUpdate, Boolean>());
+ private final Set<String> alreadyAttemptedSVGDownload = new HashSet<>();
private final Object LISTENER_LOCK = new Object();
@@ -1428,6 +1429,35 @@ public class XmppConnectionService extends Service {
toggleForegroundService();
setupPhoneStateListener();
rescanStickers();
+ com.caverock.androidsvg.SVG.registerExternalFileResolver(new com.caverock.androidsvg.SVGExternalFileResolver() {
+ @Override
+ public Bitmap resolveImage(String filename) {
+ final LruCache<String, Drawable> cache = getDrawableCache();
+ final Drawable d = cache.get(filename);
+ if (d != null) return FileBackend.drawDrawable(d);
+ if (getLongPreference("auto_accept_file_size", R.integer.auto_accept_filesize) < 3000000) {
+ return null;
+ }
+ synchronized(alreadyAttemptedSVGDownload) {
+ if (alreadyAttemptedSVGDownload.contains(filename)) return null;
+ alreadyAttemptedSVGDownload.add(filename);
+ }
+ final HttpConnectionManager httpManager = getHttpConnectionManager();
+ Message dummy = new Message(new Conversation(null, getAccounts().get(0), null, 0), filename, Message.ENCRYPTION_NONE);
+ dummy.setFileParams(new Message.FileParams(filename));
+ httpManager.createNewDownloadConnection(dummy, true, (file) -> {
+ if (file == null) {
+ dummy.getTransferable().start();
+ } else {
+ try {
+ int size = (int)(getResources().getDisplayMetrics().density * 288);
+ getFileBackend().getThumbnail(file, getResources(), size, false, filename);
+ } catch (final Exception e) { }
+ }
+ });
+ return null;
+ }
+ });
}