package com.imagepicker.utils;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import java.util.LinkedList;
import java.util.List;
/**
* Created by rusfearuth on 20.02.17.
*/
public class ButtonsHelper
{
public static class Item
{
public final String title;
public final String action;
public Item(@NonNull final String title,
@NonNull final String action)
{
this.title = title;
this.action = action;
}
}
public final @Nullable Item btnCamera;
public final @Nullable Item btnLibrary;
public final @Nullable Item btnCancel;
public final List<Item> customButtons;
public ButtonsHelper(@Nullable final Item btnCamera,
@Nullable final Item btnLibrary,
@Nullable final Item btnCancel,
@NonNull final LinkedList<Item> customButtons)
{
this.btnCamera = btnCamera;
this.btnLibrary = btnLibrary;
this.btnCancel = btnCancel;
this.customButtons = customButtons;
}
public List<String> getTitles()
{
List<String> result = new LinkedList<>();
if (btnCamera != null)
{
result.add(btnCamera.title);
}
if (btnLibrary != null)
{
result.add(btnLibrary.title);
}
for (int i = 0; i < customButtons.size(); i++)
{
result.add(customButtons.get(i).title);
}
return result;
}
public List<String> getActions()
{
List<String> result = new LinkedList<>();
if (btnCamera != null)
{
result.add(btnCamera.action);
}
if (btnLibrary != null)
{
result.add(btnLibrary.action);
}
for (int i = 0; i < customButtons.size(); i++)
{
result.add(customButtons.get(i).action);
}
return result;
}
public static ButtonsHelper newInstance(@NonNull final ReadableMap options)
{
Item btnCamera = getItemFromOption(options, "takePhotoButtonTitle", "photo");
Item btnLibrary = getItemFromOption(options, "chooseFromLibraryButtonTitle", "library");
Item btnCancel = getItemFromOption(options, "cancelButtonTitle", "cancel");
LinkedList<Item> customButtons = getCustomButtons(options);
return new ButtonsHelper(btnCamera, btnLibrary, btnCancel, customButtons);
}
private static @Nullable Item getItemFromOption(@NonNull final ReadableMap options,
@NonNull final String key,
@NonNull final String action)
{
if (!ReadableMapUtils.hasAndNotEmptyString(options, key))
{
return null;
}
final String title = options.getString(key);
return new Item(title, action);
}
private static @NonNull 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;
}
}