use of com.facebook.react.bridge.ReadableMap in project react-native-image-picker by marcshilling.
the class ImagePickerModule method parseOptions.
private void parseOptions(final ReadableMap options) {
noData = false;
if (options.hasKey("noData")) {
noData = options.getBoolean("noData");
}
maxWidth = 0;
if (options.hasKey("maxWidth")) {
maxWidth = options.getInt("maxWidth");
}
maxHeight = 0;
if (options.hasKey("maxHeight")) {
maxHeight = options.getInt("maxHeight");
}
quality = 100;
if (options.hasKey("quality")) {
quality = (int) (options.getDouble("quality") * 100);
}
rotation = 0;
if (options.hasKey("rotation")) {
rotation = options.getInt("rotation");
}
pickVideo = false;
if (options.hasKey("mediaType") && options.getString("mediaType").equals("video")) {
pickVideo = true;
}
videoQuality = 1;
if (options.hasKey("videoQuality") && options.getString("videoQuality").equals("low")) {
videoQuality = 0;
}
videoDurationLimit = 0;
if (options.hasKey("durationLimit")) {
videoDurationLimit = options.getInt("durationLimit");
}
saveToCameraRoll = false;
if (options.hasKey("storageOptions")) {
final ReadableMap storageOptions = options.getMap("storageOptions");
if (storageOptions.hasKey("cameraRoll")) {
saveToCameraRoll = storageOptions.getBoolean("cameraRoll");
}
}
}
use of com.facebook.react.bridge.ReadableMap in project react-native-image-picker by marcshilling.
the class ButtonsHelper method getCustomButtons.
@NonNull
private static LinkedList<Item> getCustomButtons(@NonNull final ReadableMap options) {
LinkedList<Item> result = new LinkedList<>();
if (!options.hasKey("customButtons")) {
return result;
}
final ReadableArray customButtons = options.getArray("customButtons");
for (int i = 0; i < customButtons.size(); i++) {
final ReadableMap button = customButtons.getMap(i);
final String title = button.getString("title");
final String action = button.getString("name");
result.add(new Item(title, action));
}
return result;
}
use of com.facebook.react.bridge.ReadableMap in project react-native-fcm by evollu.
the class SendNotificationTask method doInBackground.
protected Void doInBackground(Void... params) {
try {
String intentClassName = getMainActivityClassName();
if (intentClassName == null) {
return null;
}
String body = bundle.getString("body");
if (body == null) {
return null;
}
body = URLDecoder.decode(body, "UTF-8");
Resources res = mContext.getResources();
String packageName = mContext.getPackageName();
String title = bundle.getString("title");
if (title == null) {
ApplicationInfo appInfo = mContext.getApplicationInfo();
title = mContext.getPackageManager().getApplicationLabel(appInfo).toString();
}
title = URLDecoder.decode(title, "UTF-8");
String ticker = bundle.getString("ticker");
if (ticker != null)
ticker = URLDecoder.decode(ticker, "UTF-8");
String subText = bundle.getString("sub_text");
if (subText != null)
subText = URLDecoder.decode(subText, "UTF-8");
NotificationCompat.Builder notification = new NotificationCompat.Builder(mContext).setContentTitle(title).setContentText(body).setTicker(ticker).setVisibility(NotificationCompat.VISIBILITY_PRIVATE).setAutoCancel(bundle.getBoolean("auto_cancel", true)).setNumber((int) bundle.getDouble("number")).setSubText(subText).setVibrate(new long[] { 0, DEFAULT_VIBRATION }).setExtras(bundle.getBundle("data"));
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
String group = bundle.getString("group");
if (group != null)
group = URLDecoder.decode(group, "UTF-8");
notification.setGroup(group);
}
if (bundle.containsKey("ongoing") && bundle.getBoolean("ongoing")) {
notification.setOngoing(bundle.getBoolean("ongoing"));
}
// priority
String priority = bundle.getString("priority", "");
switch(priority) {
case "min":
notification.setPriority(NotificationCompat.PRIORITY_MIN);
break;
case "high":
notification.setPriority(NotificationCompat.PRIORITY_HIGH);
break;
case "max":
notification.setPriority(NotificationCompat.PRIORITY_MAX);
break;
default:
notification.setPriority(NotificationCompat.PRIORITY_DEFAULT);
}
// icon
String smallIcon = bundle.getString("icon", "ic_launcher");
int smallIconResId = res.getIdentifier(smallIcon, "mipmap", packageName);
if (smallIconResId == 0) {
smallIconResId = res.getIdentifier(smallIcon, "drawable", packageName);
}
if (smallIconResId != 0) {
notification.setSmallIcon(smallIconResId);
}
// large icon
String largeIcon = bundle.getString("large_icon");
if (largeIcon != null && android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
largeIcon = URLDecoder.decode(largeIcon, "UTF-8");
if (largeIcon.startsWith("http://") || largeIcon.startsWith("https://")) {
Bitmap bitmap = getBitmapFromURL(largeIcon);
notification.setLargeIcon(bitmap);
} else {
int largeIconResId = res.getIdentifier(largeIcon, "mipmap", packageName);
Bitmap largeIconBitmap = BitmapFactory.decodeResource(res, largeIconResId);
if (largeIconResId != 0) {
notification.setLargeIcon(largeIconBitmap);
}
}
}
// big text
String bigText = bundle.getString("big_text");
if (bigText != null) {
bigText = URLDecoder.decode(bigText, "UTF-8");
notification.setStyle(new NotificationCompat.BigTextStyle().bigText(bigText));
}
// picture
String picture = bundle.getString("picture");
if (picture != null) {
picture = URLDecoder.decode(picture, "UTF-8");
NotificationCompat.BigPictureStyle bigPicture = new NotificationCompat.BigPictureStyle();
if (picture.startsWith("http://") || picture.startsWith("https://")) {
Bitmap bitmap = getBitmapFromURL(picture);
bigPicture.bigPicture(bitmap);
} else {
int pictureResId = res.getIdentifier(picture, "mipmap", packageName);
Bitmap pictureResIdBitmap = BitmapFactory.decodeResource(res, pictureResId);
if (pictureResId != 0) {
bigPicture.bigPicture(pictureResIdBitmap);
}
}
bigPicture.setBigContentTitle(title);
bigPicture.setSummaryText(body);
notification.setStyle(bigPicture);
}
// sound
String soundName = bundle.getString("sound");
if (soundName != null) {
soundName = URLDecoder.decode(soundName, "UTF-8");
if (soundName.equalsIgnoreCase("default")) {
notification.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
} else {
int soundResourceId = res.getIdentifier(soundName, "raw", packageName);
if (soundResourceId == 0) {
soundName = soundName.substring(0, soundName.lastIndexOf('.'));
soundResourceId = res.getIdentifier(soundName, "raw", packageName);
}
notification.setSound(Uri.parse("android.resource://" + packageName + "/" + soundResourceId));
}
}
// color
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
notification.setCategory(NotificationCompat.CATEGORY_CALL);
String color = bundle.getString("color");
if (color != null) {
color = URLDecoder.decode(color, "UTF-8");
notification.setColor(Color.parseColor(color));
}
}
// vibrate
if (bundle.containsKey("vibrate")) {
long vibrate = Math.round(bundle.getDouble("vibrate", DEFAULT_VIBRATION));
if (vibrate > 0) {
notification.setVibrate(new long[] { 0, vibrate });
} else {
notification.setVibrate(null);
}
}
// lights
if (bundle.getBoolean("lights")) {
notification.setDefaults(NotificationCompat.DEFAULT_LIGHTS);
}
if (bundle.containsKey("fire_date")) {
Log.d(TAG, "broadcast intent if it is a scheduled notification");
Intent i = new Intent("com.evollu.react.fcm.ReceiveLocalNotification");
i.putExtras(bundle);
LocalBroadcastManager.getInstance(mContext).sendBroadcast(i);
}
if (!mIsForeground || bundle.getBoolean("show_in_foreground")) {
Intent intent = new Intent();
intent.setClassName(mContext, intentClassName);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtras(bundle);
String clickAction = bundle.getString("click_action");
if (clickAction != null)
clickAction = URLDecoder.decode(clickAction, "UTF-8");
intent.setAction(clickAction);
int notificationID = bundle.containsKey("id") ? bundle.getString("id", "").hashCode() : (int) System.currentTimeMillis();
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, notificationID, intent, PendingIntent.FLAG_UPDATE_CURRENT);
notification.setContentIntent(pendingIntent);
if (bundle.containsKey("android_actions")) {
String androidActions = bundle.getString("android_actions");
androidActions = URLDecoder.decode(androidActions, "UTF-8");
WritableArray actions = ReactNativeJson.convertJsonToArray(new JSONArray(androidActions));
for (int a = 0; a < actions.size(); a++) {
ReadableMap action = actions.getMap(a);
String actionTitle = action.getString("title");
String actionId = action.getString("id");
Intent actionIntent = new Intent();
actionIntent.setClassName(mContext, intentClassName);
actionIntent.setAction("com.evollu.react.fcm." + actionId + "_ACTION");
actionIntent.putExtras(bundle);
actionIntent.putExtra("_actionIdentifier", actionId);
actionIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingActionIntent = PendingIntent.getActivity(mContext, notificationID, actionIntent, PendingIntent.FLAG_UPDATE_CURRENT);
notification.addAction(0, actionTitle, pendingActionIntent);
}
}
Notification info = notification.build();
NotificationManagerCompat.from(mContext).notify(notificationID, info);
}
if (bundle.getBoolean("wake_screen", false)) {
PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
if (pm != null && !pm.isScreenOn()) {
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "FCMLock");
wl.acquire(5000);
}
}
// clear out one time scheduled notification once fired
if (!bundle.containsKey("repeat_interval") && bundle.containsKey("fire_date")) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.remove(bundle.getString("id"));
editor.apply();
}
} catch (Exception e) {
Log.e(TAG, "failed to send local notification", e);
}
return null;
}
use of com.facebook.react.bridge.ReadableMap in project react-native-gesture-handler by kmagiera.
the class RNGestureHandlerModule method handleHitSlopProperty.
private static void handleHitSlopProperty(GestureHandler handler, ReadableMap config) {
if (config.getType(KEY_HIT_SLOP) == ReadableType.Number) {
float hitSlop = PixelUtil.toPixelFromDIP(config.getDouble(KEY_HIT_SLOP));
handler.setHitSlop(hitSlop, hitSlop, hitSlop, hitSlop, HIT_SLOP_NONE, HIT_SLOP_NONE);
} else {
ReadableMap hitSlop = config.getMap(KEY_HIT_SLOP);
float left = HIT_SLOP_NONE, top = HIT_SLOP_NONE, right = HIT_SLOP_NONE, bottom = HIT_SLOP_NONE;
float width = HIT_SLOP_NONE, height = HIT_SLOP_NONE;
if (hitSlop.hasKey(KEY_HIT_SLOP_HORIZONTAL)) {
float horizontalPad = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_HORIZONTAL));
left = right = horizontalPad;
}
if (hitSlop.hasKey(KEY_HIT_SLOP_VERTICAL)) {
float verticalPad = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_VERTICAL));
top = bottom = verticalPad;
}
if (hitSlop.hasKey(KEY_HIT_SLOP_LEFT)) {
left = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_LEFT));
}
if (hitSlop.hasKey(KEY_HIT_SLOP_TOP)) {
top = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_TOP));
}
if (hitSlop.hasKey(KEY_HIT_SLOP_RIGHT)) {
right = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_RIGHT));
}
if (hitSlop.hasKey(KEY_HIT_SLOP_BOTTOM)) {
bottom = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_BOTTOM));
}
if (hitSlop.hasKey(KEY_HIT_SLOP_WIDTH)) {
width = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_WIDTH));
}
if (hitSlop.hasKey(KEY_HIT_SLOP_HEIGHT)) {
height = PixelUtil.toPixelFromDIP(hitSlop.getDouble(KEY_HIT_SLOP_HEIGHT));
}
handler.setHitSlop(left, top, right, bottom, width, height);
}
}
use of com.facebook.react.bridge.ReadableMap in project react-native-fbsdk by facebook.
the class Utility method reactArrayToPhotoList.
public static List<SharePhoto> reactArrayToPhotoList(ReadableArray photos) {
List<SharePhoto> list = new ArrayList<>(photos.size());
for (int i = 0; i < photos.size(); i++) {
ReadableMap photoDetail = photos.getMap(i);
list.add(buildSharePhoto(photoDetail));
}
return list;
}
Aggregations