ImageStore.js
2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @providesModule ImageStore
* @flow
* @format
*/
'use strict';
const RCTImageStoreManager = require('NativeModules').ImageStoreManager;
class ImageStore {
/**
* Check if the ImageStore contains image data for the specified URI.
* @platform ios
*/
static hasImageForTag(uri: string, callback: (hasImage: boolean) => void) {
if (RCTImageStoreManager.hasImageForTag) {
RCTImageStoreManager.hasImageForTag(uri, callback);
} else {
console.warn('hasImageForTag() not implemented');
}
}
/**
* Delete an image from the ImageStore. Images are stored in memory and
* must be manually removed when you are finished with them, otherwise they
* will continue to use up RAM until the app is terminated. It is safe to
* call `removeImageForTag()` without first calling `hasImageForTag()`, it
* will simply fail silently.
* @platform ios
*/
static removeImageForTag(uri: string) {
if (RCTImageStoreManager.removeImageForTag) {
RCTImageStoreManager.removeImageForTag(uri);
} else {
console.warn('removeImageForTag() not implemented');
}
}
/**
* Stores a base64-encoded image in the ImageStore, and returns a URI that
* can be used to access or display the image later. Images are stored in
* memory only, and must be manually deleted when you are finished with
* them by calling `removeImageForTag()`.
*
* Note that it is very inefficient to transfer large quantities of binary
* data between JS and native code, so you should avoid calling this more
* than necessary.
* @platform ios
*/
static addImageFromBase64(
base64ImageData: string,
success: (uri: string) => void,
failure: (error: any) => void,
) {
RCTImageStoreManager.addImageFromBase64(base64ImageData, success, failure);
}
/**
* Retrieves the base64-encoded data for an image in the ImageStore. If the
* specified URI does not match an image in the store, the failure callback
* will be called.
*
* Note that it is very inefficient to transfer large quantities of binary
* data between JS and native code, so you should avoid calling this more
* than necessary. To display an image in the ImageStore, you can just pass
* the URI to an `<Image/>` component; there is no need to retrieve the
* base64 data.
*/
static getBase64ForTag(
uri: string,
success: (base64ImageData: string) => void,
failure: (error: any) => void,
) {
RCTImageStoreManager.getBase64ForTag(uri, success, failure);
}
}
module.exports = ImageStore;