@nativescript-community/ui-image 5.0.12 → 5.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [5.0.14](https://github.com/nativescript-community/ui-image/compare/v5.0.13...v5.0.14) (2026-01-07)
7
+
8
+ **Note:** Version bump only for package @nativescript-community/ui-image
9
+
10
+ ## [5.0.13](https://github.com/nativescript-community/ui-image/compare/v5.0.12...v5.0.13) (2025-12-26)
11
+
12
+ **Note:** Version bump only for package @nativescript-community/ui-image
13
+
6
14
  ## [5.0.12](https://github.com/nativescript-community/ui-image/compare/v5.0.11...v5.0.12) (2025-12-11)
7
15
 
8
16
  **Note:** Version bump only for package @nativescript-community/ui-image
package/index-common.d.ts CHANGED
@@ -88,6 +88,35 @@ export interface ImagePipelineConfigSetting {
88
88
  memoryCacheSize?: number;
89
89
  memoryCacheScreens?: number;
90
90
  }
91
+ /**
92
+ * Options for prefetching images with transformations and request options
93
+ */
94
+ export interface PrefetchOptions {
95
+ /** Custom headers for the request */
96
+ headers?: Record<string, string>;
97
+ /** Decode width for downsampling */
98
+ decodeWidth?: number;
99
+ /** Decode height for downsampling */
100
+ decodeHeight?: number;
101
+ /** Blur radius */
102
+ blurRadius?: number;
103
+ /** Blur downsampling factor (Android only) */
104
+ blurDownSampling?: number;
105
+ /** Round image as circle */
106
+ roundAsCircle?: boolean;
107
+ /** Tint color */
108
+ tintColor?: Color;
109
+ /** Round corner radius for top left */
110
+ roundTopLeftRadius?: number;
111
+ /** Round corner radius for top right */
112
+ roundTopRightRadius?: number;
113
+ /** Round corner radius for bottom left */
114
+ roundBottomLeftRadius?: number;
115
+ /** Round corner radius for bottom right */
116
+ roundBottomRightRadius?: number;
117
+ /** image rotation, iOS only */
118
+ imageRotation?: number;
119
+ }
91
120
  export type Stretch = 'none' | 'fill' | 'aspectFill' | 'aspectFit';
92
121
  export declare const srcProperty: Property<ImageBase, string | ImageSource | ImageAsset>;
93
122
  export declare const headersProperty: Property<ImageBase, Record<string, string>>;
@@ -164,7 +193,7 @@ export declare abstract class ImageBase extends View {
164
193
  get nativeImageViewProtected(): any;
165
194
  mCanRequestImage: boolean;
166
195
  mNeedRequestImage: boolean;
167
- protected abstract initImage(): any;
196
+ protected abstract initImage(): Promise<void>;
168
197
  onResumeNativeUpdates(): void;
169
198
  protected handleImageProgress(value: number, totalSize?: number): void;
170
199
  private static needsSizeAdjustment;
@@ -1 +1 @@
1
- {"version":3,"file":"index-common.js","sourceRoot":"","sources":["../../src/image/index-common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index-common.js","sourceRoot":"","sources":["../../src/image/index-common.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  export * from './index-common';
2
- import { ImageBase, ImageError as ImageErrorBase, ImageInfo as ImageInfoBase, ImagePipelineConfigSetting, SrcType } from './index-common';
2
+ import { ImageBase, ImageError as ImageErrorBase, ImageInfo as ImageInfoBase, ImagePipelineConfigSetting, PrefetchOptions, SrcType } from './index-common';
3
3
  export declare function initialize(config?: ImagePipelineConfigSetting): void;
4
4
  export declare class ImagePipeline {
5
5
  toUri(value: string | android.net.Uri): string;
6
- getCacheKey(uri: string, context: any): string;
6
+ getCacheKey(uri: string | android.net.Uri): string;
7
7
  isInDiskCache(uri: string | android.net.Uri): Promise<boolean>;
8
8
  isInBitmapMemoryCache(uri: string | android.net.Uri): boolean;
9
9
  evictFromMemoryCache(uri: string | android.net.Uri): Promise<void>;
@@ -12,8 +12,8 @@ export declare class ImagePipeline {
12
12
  clearCaches(): Promise<void>;
13
13
  clearMemoryCaches(): Promise<void>;
14
14
  clearDiskCaches(): Promise<void>;
15
- prefetchToDiskCache(uri: string): Promise<void>;
16
- prefetchToMemoryCache(uri: string): Promise<void>;
15
+ prefetchToDiskCache(uri: string, options?: PrefetchOptions): Promise<void>;
16
+ prefetchToMemoryCache(uri: string, options?: PrefetchOptions): Promise<void>;
17
17
  private prefetchToCache;
18
18
  get android(): any;
19
19
  }
@@ -51,10 +51,17 @@ export declare class Img extends ImageBase {
51
51
  private isNetworkRequest;
52
52
  private progressCallback;
53
53
  private loadSourceCallback;
54
+ private skipMemoryCacheOnNextLoad;
54
55
  createNativeView(): com.nativescript.image.MatrixImageView;
55
56
  disposeNativeView(): void;
56
57
  get cacheKey(): string;
57
58
  updateImageUri(): Promise<void>;
59
+ /**
60
+ * Force reload the image, bypassing memory cache and evicting from all caches.
61
+ * Use this when the image file content has changed but the URI remains the same.
62
+ * This ensures Glide loads the fresh content instead of serving cached data.
63
+ */
64
+ forceReloadImage(): Promise<void>;
58
65
  private cancelCurrentRequest;
59
66
  private loadImageWithGlide;
60
67
  private notifyLoadSource;
package/index.android.js CHANGED
@@ -1,6 +1,6 @@
1
1
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
2
2
  export * from './index-common';
3
- import { ImageAsset, ImageSource, Trace, Utils, backgroundInternalProperty, knownFolders, path } from '@nativescript/core';
3
+ import { Color, ImageAsset, ImageSource, Trace, Utils, backgroundInternalProperty, knownFolders, path } from '@nativescript/core';
4
4
  import { isString } from '@nativescript/core/utils/types';
5
5
  import { CLog, CLogTypes, ImageBase, ScaleType, aspectRatioProperty, backgroundUriProperty, blurDownSamplingProperty, blurRadiusProperty, decodeHeightProperty, decodeWidthProperty, fadeDurationProperty, failureImageUriProperty, headersProperty, imageRotationProperty, lowerResSrcProperty, needRequestImage, noRatioEnforceProperty, placeholderImageUriProperty, roundAsCircleProperty, roundBottomLeftRadiusProperty, roundBottomRightRadiusProperty, roundTopLeftRadiusProperty, roundTopRightRadiusProperty, srcProperty, stretchProperty, tintColorProperty, wrapNativeException } from './index-common';
6
6
  let initialized = false;
@@ -18,9 +18,13 @@ export function initialize(config) {
18
18
  if (config?.memoryCacheScreens > 0) {
19
19
  glideConfig.setMemoryCacheScreens(config.memoryCacheScreens);
20
20
  }
21
+ if (config?.usePersistentCacheKeyStore) {
22
+ com.nativescript.image.EvictionManager.get().setPersistentStore(new com.nativescript.image.SharedPrefCacheKeyStore(Utils.android.getApplicationContext()));
23
+ }
21
24
  signature = new com.bumptech.glide.signature.ObjectKey(config?.globalSignatureKey || globalSignatureKey);
22
25
  // Now initialize Glide (which will read from GlideConfiguration)
23
26
  glideInstance = com.bumptech.glide.Glide.get(context);
27
+ com.nativescript.image.EvictionManager.get().setGlideInstance(glideInstance);
24
28
  // this is needed for further buildKey to trigger ...
25
29
  com.bumptech.glide.Glide.with(context).load('toto').apply(new com.bumptech.glide.request.RequestOptions().signature(signature)).preload();
26
30
  // com.nativescript.image.EngineKeyFactoryMethodDumper.dumpKeyFactoryMethods(glideInstance);
@@ -28,81 +32,94 @@ export function initialize(config) {
28
32
  initialized = true;
29
33
  }
30
34
  }
35
+ /**
36
+ * Helper function to determine if a URI is a network request.
37
+ * Only http:// and https:// URLs are considered network requests.
38
+ * @param uri The URI to check
39
+ * @returns true if the URI is a network request, false otherwise
40
+ */
41
+ function isNetworkUri(uri) {
42
+ // Defensive check for runtime safety (uri should always be a string by TypeScript typing)
43
+ if (!uri) {
44
+ return false;
45
+ }
46
+ return uri.startsWith('http://') || uri.startsWith('https://');
47
+ }
31
48
  export class ImagePipeline {
32
49
  toUri(value) {
33
50
  if (value instanceof android.net.Uri) {
34
51
  return value.toString();
35
52
  }
36
- return value;
53
+ return getUri(value);
37
54
  }
38
- getCacheKey(uri, context) {
39
- return uri;
55
+ getCacheKey(uri) {
56
+ return this.toUri(uri);
40
57
  }
41
58
  isInDiskCache(uri) {
42
- const url = this.toUri(uri);
59
+ const url = this.getCacheKey(uri);
43
60
  return new Promise((resolve, reject) => {
44
61
  com.nativescript.image.EvictionManager.get().isInDiskCacheAsync(url, new com.nativescript.image.EvictionManager.DiskPresenceCallback({
45
- onResult(source, transform) {
46
- resolve(source || transform);
62
+ onResult(present) {
63
+ resolve(present);
47
64
  }
48
65
  }));
49
66
  });
50
67
  }
51
68
  isInBitmapMemoryCache(uri) {
52
69
  // Still not directly accessible, but we can check if it's registered
53
- const url = this.toUri(uri);
70
+ const url = this.getCacheKey(uri);
54
71
  return com.nativescript.image.EvictionManager.get().isInMemoryCache(url);
55
72
  }
56
73
  evictFromMemoryCache(uri) {
57
- const url = this.toUri(uri);
74
+ const url = this.getCacheKey(uri);
58
75
  return new Promise((resolve, reject) => {
59
76
  com.nativescript.image.EvictionManager.get().evictMemoryForId(url, new com.nativescript.image.EvictionManager.EvictionCallback({
60
77
  onComplete(success, error) {
61
- if (success) {
62
- resolve();
63
- }
64
- else {
78
+ if (error) {
65
79
  if (Trace.isEnabled()) {
66
80
  CLog(CLogTypes.error, error);
67
81
  }
68
82
  reject(error);
69
83
  }
84
+ else {
85
+ resolve();
86
+ }
70
87
  }
71
88
  }));
72
89
  });
73
90
  }
74
91
  evictFromDiskCache(uri) {
75
- const url = this.toUri(uri);
92
+ const url = this.getCacheKey(uri);
76
93
  return new Promise((resolve, reject) => {
77
94
  com.nativescript.image.EvictionManager.get().evictDiskForId(url, new com.nativescript.image.EvictionManager.EvictionCallback({
78
95
  onComplete(success, error) {
79
- if (success) {
80
- resolve();
81
- }
82
- else {
96
+ if (error) {
83
97
  if (Trace.isEnabled()) {
84
98
  CLog(CLogTypes.error, error);
85
99
  }
86
100
  reject(error);
87
101
  }
102
+ else {
103
+ resolve();
104
+ }
88
105
  }
89
106
  }));
90
107
  });
91
108
  }
92
- evictFromCache(uri) {
109
+ async evictFromCache(uri) {
93
110
  const url = this.toUri(uri);
94
111
  return new Promise((resolve, reject) => {
95
112
  com.nativescript.image.EvictionManager.get().evictAllForId(url, new com.nativescript.image.EvictionManager.EvictionCallback({
96
- onComplete(success, error) {
97
- if (success) {
98
- resolve();
99
- }
100
- else {
113
+ async onComplete(success, error) {
114
+ if (error) {
101
115
  if (Trace.isEnabled()) {
102
116
  CLog(CLogTypes.error, error);
103
117
  }
104
118
  reject(error);
105
119
  }
120
+ else {
121
+ resolve();
122
+ }
106
123
  }
107
124
  }));
108
125
  });
@@ -111,15 +128,15 @@ export class ImagePipeline {
111
128
  return new Promise((resolve, reject) => {
112
129
  com.nativescript.image.EvictionManager.get().clearAll(new com.nativescript.image.EvictionManager.EvictionCallback({
113
130
  onComplete(success, error) {
114
- if (success) {
115
- resolve();
116
- }
117
- else {
131
+ if (error) {
118
132
  if (Trace.isEnabled()) {
119
133
  CLog(CLogTypes.error, error);
120
134
  }
121
135
  reject(error);
122
136
  }
137
+ else {
138
+ resolve();
139
+ }
123
140
  }
124
141
  }));
125
142
  });
@@ -158,49 +175,88 @@ export class ImagePipeline {
158
175
  }));
159
176
  });
160
177
  }
161
- prefetchToDiskCache(uri) {
162
- return this.prefetchToCache(uri, true);
178
+ prefetchToDiskCache(uri, options) {
179
+ return this.prefetchToCache(uri, true, options);
163
180
  }
164
- prefetchToMemoryCache(uri) {
181
+ prefetchToMemoryCache(uri, options) {
182
+ return this.prefetchToCache(uri, false, options);
183
+ }
184
+ prefetchToCache(uri, toDiskCache, options) {
165
185
  return new Promise((resolve, reject) => {
166
186
  try {
187
+ const url = this.toUri(uri);
167
188
  const context = Utils.android.getApplicationContext();
168
189
  const requestManager = com.bumptech.glide.Glide.with(context);
169
- const requestBuilder = requestManager.asBitmap().load(uri).apply(new com.bumptech.glide.request.RequestOptions().signature(signature));
170
- let futureTarget = null;
171
- function clearLater() {
172
- if (futureTarget) {
173
- setTimeout(() => {
174
- com.bumptech.glide.Glide.with(context).clear(futureTarget);
175
- }, 0);
190
+ // Determine if this is a network request
191
+ const isNetworkRequest = isNetworkUri(uri);
192
+ // Build the load model
193
+ let loadModel;
194
+ // Only use CustomGlideUrl for network requests to ensure cache key consistency
195
+ // For local files (file://), use plain URI string to avoid OkHttp requirement
196
+ if (isNetworkRequest) {
197
+ let headersMap = null;
198
+ if (options?.headers) {
199
+ headersMap = new java.util.HashMap();
200
+ for (const key in options.headers) {
201
+ headersMap.put(key, options.headers[key]);
202
+ }
176
203
  }
204
+ loadModel = new com.nativescript.image.CustomGlideUrl(url, headersMap, null, // progressCallback
205
+ null // loadSourceCallback
206
+ );
177
207
  }
178
- const listener = new com.bumptech.glide.request.RequestListener({
179
- onLoadFailed(e, model, target, isFirstResource) {
180
- clearLater();
181
- reject(e);
182
- return true; // consumed
183
- },
184
- onResourceReady(resource, model, target, dataSource, isFirstResource) {
185
- clearLater();
186
- resolve();
187
- return true; // consumed
208
+ else {
209
+ // For local files, use plain URI string
210
+ loadModel = url;
211
+ }
212
+ // Use the same model for both disk and memory to ensure key consistency
213
+ let requestBuilder = toDiskCache ? requestManager.downloadOnly().load(loadModel) : requestManager.asBitmap().load(loadModel);
214
+ // Apply transformations if provided
215
+ const transformations = [];
216
+ if (options?.blurRadius) {
217
+ transformations.push(new jp.wasabeef.glide.transformations.BlurTransformation(Math.round(options.blurRadius), options.blurDownSampling || 1));
218
+ }
219
+ if (options?.roundAsCircle) {
220
+ transformations.push(new jp.wasabeef.glide.transformations.CropCircleTransformation());
221
+ }
222
+ else {
223
+ const topLeft = Utils.layout.toDevicePixels(options?.roundTopLeftRadius || 0);
224
+ const topRight = Utils.layout.toDevicePixels(options?.roundTopRightRadius || 0);
225
+ const bottomRight = Utils.layout.toDevicePixels(options?.roundBottomRightRadius || 0);
226
+ const bottomLeft = Utils.layout.toDevicePixels(options?.roundBottomLeftRadius || 0);
227
+ if (topLeft || topRight || bottomRight || bottomLeft) {
228
+ const radius = Math.max(topLeft, topRight, bottomRight, bottomLeft);
229
+ transformations.push(new jp.wasabeef.glide.transformations.RoundedCornersTransformation(Math.round(radius), 0, jp.wasabeef.glide.transformations.RoundedCornersTransformation.CornerType.ALL));
188
230
  }
189
- });
190
- // Kick the request off and keep a reference to the FutureTarget so it can be cleared.
191
- futureTarget = requestBuilder.listener(listener).preload();
192
- }
193
- catch (error) {
194
- reject(error);
195
- }
196
- });
197
- }
198
- prefetchToCache(uri, toDiskCache) {
199
- return new Promise((resolve, reject) => {
200
- try {
201
- const context = Utils.android.getApplicationContext();
202
- const requestManager = com.bumptech.glide.Glide.with(context);
203
- const requestBuilder = (toDiskCache ? requestManager.downloadOnly().load(uri) : requestManager.asBitmap().load(uri)).apply(new com.bumptech.glide.request.RequestOptions().signature(signature));
231
+ }
232
+ // Tint color
233
+ if (options?.tintColor) {
234
+ const tintColor = options.tintColor instanceof Color ? options.tintColor : new Color(options.tintColor);
235
+ transformations.push(new jp.wasabeef.glide.transformations.ColorFilterTransformation(tintColor.android));
236
+ }
237
+ let multiTransform = null;
238
+ if (transformations.length > 0) {
239
+ multiTransform = new com.bumptech.glide.load.MultiTransformation(java.util.Arrays.asList(transformations));
240
+ requestBuilder = requestBuilder.transform(multiTransform);
241
+ }
242
+ // Apply decode size if provided
243
+ if (options?.decodeWidth || options?.decodeHeight) {
244
+ const Target = com.bumptech.glide.request.target.Target;
245
+ const width = options.decodeWidth || Target.SIZE_ORIGINAL;
246
+ const height = options.decodeHeight || Target.SIZE_ORIGINAL;
247
+ if (width === Target.SIZE_ORIGINAL) {
248
+ requestBuilder = requestBuilder.override(height);
249
+ }
250
+ else if (height === Target.SIZE_ORIGINAL) {
251
+ requestBuilder = requestBuilder.override(width);
252
+ }
253
+ else {
254
+ requestBuilder = requestBuilder.override(width, height);
255
+ }
256
+ }
257
+ // Apply signature
258
+ const ro = new com.bumptech.glide.request.RequestOptions().signature(signature);
259
+ requestBuilder = requestBuilder.apply(ro);
204
260
  let futureTarget = null;
205
261
  function clearLater() {
206
262
  if (futureTarget) {
@@ -214,7 +270,12 @@ export class ImagePipeline {
214
270
  }, 0);
215
271
  }
216
272
  }
217
- const listener = new com.bumptech.glide.request.RequestListener({
273
+ // Create a composite listener array to save keys during preload
274
+ const objectArr = Array.create(com.bumptech.glide.request.RequestListener, 2);
275
+ // Add SaveKeysRequestListener to capture keys during preload
276
+ objectArr[0] = new com.nativescript.image.SaveKeysRequestListener(url, loadModel, new com.bumptech.glide.signature.ObjectKey(url), // fallback only
277
+ signature);
278
+ objectArr[1] = new com.bumptech.glide.request.RequestListener({
218
279
  onLoadFailed(e, model, target, isFirstResource) {
219
280
  clearLater();
220
281
  reject(e);
@@ -226,7 +287,7 @@ export class ImagePipeline {
226
287
  return true;
227
288
  }
228
289
  });
229
- futureTarget = requestBuilder.listener(listener).preload();
290
+ futureTarget = requestBuilder.listener(new com.nativescript.image.CompositeRequestListener(objectArr)).preload();
230
291
  }
231
292
  catch (error) {
232
293
  reject(error);
@@ -328,6 +389,7 @@ export class Img extends ImageBase {
328
389
  this.isNetworkRequest = false;
329
390
  this.progressCallback = null;
330
391
  this.loadSourceCallback = null;
392
+ this.skipMemoryCacheOnNextLoad = false;
331
393
  }
332
394
  createNativeView() {
333
395
  if (!initialized) {
@@ -350,11 +412,23 @@ export class Img extends ImageBase {
350
412
  return undefined;
351
413
  }
352
414
  async updateImageUri() {
415
+ return this.forceReloadImage();
416
+ }
417
+ /**
418
+ * Force reload the image, bypassing memory cache and evicting from all caches.
419
+ * Use this when the image file content has changed but the URI remains the same.
420
+ * This ensures Glide loads the fresh content instead of serving cached data.
421
+ */
422
+ async forceReloadImage() {
353
423
  const imagePipeLine = getImagePipeline();
354
424
  const cacheKey = this.cacheKey;
425
+ // Set flag to skip memory cache on next load
426
+ this.skipMemoryCacheOnNextLoad = true;
427
+ // Evict from all caches
355
428
  if (cacheKey) {
356
429
  await imagePipeLine.evictFromCache(cacheKey);
357
430
  }
431
+ // Clear current image and reload
358
432
  this.handleImageSrc(null);
359
433
  this.initImage();
360
434
  }
@@ -437,7 +511,7 @@ export class Img extends ImageBase {
437
511
  // Cancel any prior Glide request/target for this view before starting a new one.
438
512
  this.cancelCurrentRequest();
439
513
  // Determine if this is a network request
440
- this.isNetworkRequest = typeof uri === 'string' && (uri.startsWith('http://') || uri.startsWith('https://'));
514
+ this.isNetworkRequest = isNetworkUri(uri);
441
515
  let requestBuilder;
442
516
  let loadModel = uri;
443
517
  // Create callbacks separately based on what's needed
@@ -473,10 +547,12 @@ export class Img extends ImageBase {
473
547
  }
474
548
  });
475
549
  }
476
- // Use CustomGlideUrl if we need headers, progress, or load source
550
+ // Use CustomGlideUrl ONLY for network requests (http/https)
551
+ // For local file:// URIs, use the string directly to avoid CustomDataFetcher's OkHttp requirement
477
552
  if (this.isNetworkRequest && (this.headers || this.progressCallback || this.loadSourceCallback)) {
478
- const headersMap = new java.util.HashMap();
553
+ let headersMap = null;
479
554
  if (this.headers) {
555
+ headersMap = new java.util.HashMap();
480
556
  for (const key in this.headers) {
481
557
  headersMap.put(key, this.headers[key]);
482
558
  }
@@ -485,6 +561,10 @@ export class Img extends ImageBase {
485
561
  this.loadSourceCallback // Can be null
486
562
  );
487
563
  }
564
+ else {
565
+ // For local files or network requests without callbacks/headers, use plain URI
566
+ loadModel = uri;
567
+ }
488
568
  requestBuilder = com.bumptech.glide.Glide.with(context).load(loadModel);
489
569
  // Apply transformations (blur, rounded corners, etc.)
490
570
  const transformations = [];
@@ -541,7 +621,7 @@ export class Img extends ImageBase {
541
621
  requestBuilder = requestBuilder.transition(com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade(factory));
542
622
  }
543
623
  // Cache settings
544
- if (this.noCache) {
624
+ if (this.noCache || this.skipMemoryCacheOnNextLoad) {
545
625
  requestBuilder = requestBuilder.skipMemoryCache(true).diskCacheStrategy(com.bumptech.glide.load.engine.DiskCacheStrategy.NONE);
546
626
  }
547
627
  // Decode size
@@ -560,14 +640,18 @@ export class Img extends ImageBase {
560
640
  }
561
641
  }
562
642
  const owner = new WeakRef(this);
563
- const sourceKey = new com.bumptech.glide.signature.ObjectKey(uri);
564
643
  const objectArr = Array.create(com.bumptech.glide.request.RequestListener, 2);
565
644
  const ro = new com.bumptech.glide.request.RequestOptions().signature(signature);
566
- objectArr[0] = new com.nativescript.image.SaveKeysRequestListener(uri, uri, sourceKey, signature, this.decodeWidth || com.bumptech.glide.request.target.Target.SIZE_ORIGINAL, this.decodeHeight || com.bumptech.glide.request.target.Target.SIZE_ORIGINAL, multiTransform, ro, null);
645
+ objectArr[0] = new com.nativescript.image.SaveKeysRequestListener(uri, loadModel, new com.bumptech.glide.signature.ObjectKey(uri), // fallback only
646
+ signature);
567
647
  objectArr[1] = new com.bumptech.glide.request.RequestListener({
568
648
  onLoadFailed(e, model, target, isFirstResource) {
569
649
  const instance = owner.get();
570
650
  if (instance) {
651
+ if (instance.skipMemoryCacheOnNextLoad) {
652
+ getImagePipeline().evictFromMemoryCache(uri);
653
+ instance.skipMemoryCacheOnNextLoad = false;
654
+ }
571
655
  // If this callback is for a previously canceled request, swallow it to avoid
572
656
  // emitting/logging errors for obsolete requests.
573
657
  if (instance.currentTarget && target !== instance.currentTarget) {
@@ -586,6 +670,10 @@ export class Img extends ImageBase {
586
670
  onResourceReady(resource, model, target, dataSource, isFirstResource) {
587
671
  const instance = owner.get();
588
672
  if (instance) {
673
+ if (instance.skipMemoryCacheOnNextLoad) {
674
+ getImagePipeline().evictFromMemoryCache(uri);
675
+ instance.skipMemoryCacheOnNextLoad = false;
676
+ }
589
677
  // Ignore if the callback is from a previous request (stale).
590
678
  if (instance.currentTarget && target !== instance.currentTarget) {
591
679
  instance.progressCallback = null;