Skip to content

Commit

Permalink
[image_picker] Migrate Android to Pigeon (flutter#3476)
Browse files Browse the repository at this point in the history
[image_picker] Migrate Android to Pigeon
  • Loading branch information
stuartmorgan authored and nploi committed Jul 16, 2023
1 parent 7dab441 commit 5544330
Show file tree
Hide file tree
Showing 17 changed files with 2,123 additions and 1,417 deletions.
4 changes: 4 additions & 0 deletions packages/image_picker/image_picker_android/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 0.8.6+3

* Switches to Pigeon for internal implementation.

## 0.8.6+2

* Fixes null pointer exception in `saveResult`.
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,15 @@ public enum CacheType {
VIDEO
}

static final String MAP_KEY_PATH = "path";
static final String MAP_KEY_PATH_LIST = "pathList";
static final String MAP_KEY_MAX_WIDTH = "maxWidth";
static final String MAP_KEY_MAX_HEIGHT = "maxHeight";
static final String MAP_KEY_IMAGE_QUALITY = "imageQuality";
private static final String MAP_KEY_TYPE = "type";
private static final String MAP_KEY_ERROR_CODE = "errorCode";
private static final String MAP_KEY_ERROR_MESSAGE = "errorMessage";
static final String MAP_KEY_TYPE = "type";
static final String MAP_KEY_ERROR = "error";

private static final String MAP_TYPE_VALUE_IMAGE = "image";
private static final String MAP_TYPE_VALUE_VIDEO = "video";

private static final String FLUTTER_IMAGE_PICKER_IMAGE_PATH_KEY =
"flutter_image_picker_image_path";
Expand All @@ -50,7 +51,7 @@ public enum CacheType {
@VisibleForTesting
static final String SHARED_PREFERENCES_NAME = "flutter_image_picker_shared_preference";

private SharedPreferences prefs;
private final SharedPreferences prefs;

ImagePickerCache(Context context) {
prefs = context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
Expand All @@ -59,10 +60,10 @@ public enum CacheType {
void saveType(CacheType type) {
switch (type) {
case IMAGE:
setType("image");
setType(MAP_TYPE_VALUE_IMAGE);
break;
case VIDEO:
setType("video");
setType(MAP_TYPE_VALUE_VIDEO);
break;
}
}
Expand All @@ -71,16 +72,17 @@ private void setType(String type) {
prefs.edit().putString(SHARED_PREFERENCE_TYPE_KEY, type).apply();
}

void saveDimensionWithOutputOptions(ImageOutputOptions options) {
void saveDimensionWithOutputOptions(Messages.ImageSelectionOptions options) {
SharedPreferences.Editor editor = prefs.edit();
if (options.maxWidth != null) {
editor.putLong(SHARED_PREFERENCE_MAX_WIDTH_KEY, Double.doubleToRawLongBits(options.maxWidth));
if (options.getMaxWidth() != null) {
editor.putLong(
SHARED_PREFERENCE_MAX_WIDTH_KEY, Double.doubleToRawLongBits(options.getMaxWidth()));
}
if (options.maxHeight != null) {
if (options.getMaxHeight() != null) {
editor.putLong(
SHARED_PREFERENCE_MAX_HEIGHT_KEY, Double.doubleToRawLongBits(options.maxHeight));
SHARED_PREFERENCE_MAX_HEIGHT_KEY, Double.doubleToRawLongBits(options.getMaxHeight()));
}
editor.putInt(SHARED_PREFERENCE_IMAGE_QUALITY_KEY, options.quality);
editor.putInt(SHARED_PREFERENCE_IMAGE_QUALITY_KEY, options.getQuality().intValue());
editor.apply();
}

Expand Down Expand Up @@ -115,35 +117,37 @@ void clear() {
}

Map<String, Object> getCacheMap() {

Map<String, Object> resultMap = new HashMap<>();
ArrayList<String> pathList = new ArrayList<>();
boolean hasData = false;

if (prefs.contains(FLUTTER_IMAGE_PICKER_IMAGE_PATH_KEY)) {
final Set<String> imagePathList =
prefs.getStringSet(FLUTTER_IMAGE_PICKER_IMAGE_PATH_KEY, null);
if (imagePathList != null) {
pathList.addAll(imagePathList);
ArrayList<String> pathList = new ArrayList<>(imagePathList);
resultMap.put(MAP_KEY_PATH_LIST, pathList);
hasData = true;
}
}

if (prefs.contains(SHARED_PREFERENCE_ERROR_CODE_KEY)) {
final String errorCodeValue = prefs.getString(SHARED_PREFERENCE_ERROR_CODE_KEY, "");
resultMap.put(MAP_KEY_ERROR_CODE, errorCodeValue);
final Messages.CacheRetrievalError.Builder error = new Messages.CacheRetrievalError.Builder();
error.setCode(prefs.getString(SHARED_PREFERENCE_ERROR_CODE_KEY, ""));
hasData = true;
if (prefs.contains(SHARED_PREFERENCE_ERROR_MESSAGE_KEY)) {
final String errorMessageValue = prefs.getString(SHARED_PREFERENCE_ERROR_MESSAGE_KEY, "");
resultMap.put(MAP_KEY_ERROR_MESSAGE, errorMessageValue);
error.setMessage(prefs.getString(SHARED_PREFERENCE_ERROR_MESSAGE_KEY, ""));
}
resultMap.put(MAP_KEY_ERROR, error.build());
}

if (hasData) {
if (prefs.contains(SHARED_PREFERENCE_TYPE_KEY)) {
final String typeValue = prefs.getString(SHARED_PREFERENCE_TYPE_KEY, "");
resultMap.put(MAP_KEY_TYPE, typeValue);
resultMap.put(
MAP_KEY_TYPE,
typeValue.equals(MAP_TYPE_VALUE_VIDEO)
? Messages.CacheRetrievalType.VIDEO
: Messages.CacheRetrievalType.IMAGE);
}
if (prefs.contains(SHARED_PREFERENCE_MAX_WIDTH_KEY)) {
final long maxWidthValue = prefs.getLong(SHARED_PREFERENCE_MAX_WIDTH_KEY, 0);
Expand All @@ -153,12 +157,8 @@ Map<String, Object> getCacheMap() {
final long maxHeightValue = prefs.getLong(SHARED_PREFERENCE_MAX_HEIGHT_KEY, 0);
resultMap.put(MAP_KEY_MAX_HEIGHT, Double.longBitsToDouble(maxHeightValue));
}
if (prefs.contains(SHARED_PREFERENCE_IMAGE_QUALITY_KEY)) {
final int imageQuality = prefs.getInt(SHARED_PREFERENCE_IMAGE_QUALITY_KEY, 100);
resultMap.put(MAP_KEY_IMAGE_QUALITY, imageQuality);
} else {
resultMap.put(MAP_KEY_IMAGE_QUALITY, 100);
}
final int imageQuality = prefs.getInt(SHARED_PREFERENCE_IMAGE_QUALITY_KEY, 100);
resultMap.put(MAP_KEY_IMAGE_QUALITY, imageQuality);
}
return resultMap;
}
Expand Down
Loading

0 comments on commit 5544330

Please sign in to comment.