Search in sources :

Example 1 with SampleModuleRegistry

use of com.airbnb.deeplinkdispatch.sample.SampleModuleRegistry in project DeepLinkDispatch by airbnb.

the class TypeConversionErrorHandlerCustomTypeDeepLinkActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    typeConverters = new TypeConverters();
    typeConverters.put(ComparableColorDrawable.class, value -> {
        switch(value.toLowerCase()) {
            case "red":
                return new ComparableColorDrawable(0xff0000ff);
            case "green":
                return new ComparableColorDrawable(0x00ff00ff);
            case "blue":
                return new ComparableColorDrawable(0x000ffff);
            default:
                return new ComparableColorDrawable(0xffffffff);
        }
    });
    try {
        // Not very elegant reflection way to get the right type to add to the mapper.
        typeConverters.put(TypeConversionErrorHandlerCustomTypeDeepLinkActivity.class.getDeclaredField("stringList").getGenericType(), value -> Arrays.asList(value.split(",")));
    } catch (NoSuchFieldException e) {
        e.printStackTrace();
    }
    Function3<DeepLinkUri, Type, ? super String, Integer> typeConversionErrorNullable = (Function3<DeepLinkUri, Type, String, Integer>) (uriTemplate, type, s) -> {
        Log.e(TAG, "Unable to convert " + s + " used in urlTemplate " + uriTemplate + " to a " + type + ". Returning null.");
        throw new NumberFormatException("For input string: \"" + s + "\"");
    };
    Function3<DeepLinkUri, Type, ? super String, Integer> typeConversionErrorNonNullable = (Function3<DeepLinkUri, Type, String, Integer>) (uriTemplate, type, s) -> {
        Log.e(TAG, "Unable to convert " + s + " used in urlTemplate " + uriTemplate + " to a " + type + ". Returning 0.");
        throw new NumberFormatException("For input string: \"" + s + "\"");
    };
    Function0<TypeConverters> typeConvertersLambda = () -> typeConverters;
    super.onCreate(savedInstanceState);
    Map configurablePlaceholdersMap = new HashMap();
    configurablePlaceholdersMap.put("configPathOne", "somePathThree");
    configurablePlaceholdersMap.put("configurable-path-segment-one", "");
    configurablePlaceholdersMap.put("configurable-path-segment", "");
    configurablePlaceholdersMap.put("configurable-path-segment-two", "");
    configurablePlaceholdersMap.put("configPathOne", "somePathOne");
    DeepLinkDelegate deepLinkDelegate = new DeepLinkDelegate(new SampleModuleRegistry(), new LibraryDeepLinkModuleRegistry(), new BenchmarkDeepLinkModuleRegistry(), new KaptLibraryDeepLinkModuleRegistry(), configurablePlaceholdersMap, typeConvertersLambda, typeConversionErrorNullable, typeConversionErrorNonNullable);
    deepLinkDelegate.dispatchFrom(this);
    finish();
}
Also used : SampleModuleRegistry(com.airbnb.deeplinkdispatch.sample.SampleModuleRegistry) DeepLinkUri(com.airbnb.deeplinkdispatch.DeepLinkUri) HashMap(java.util.HashMap) Function3(kotlin.jvm.functions.Function3) BenchmarkDeepLinkModuleRegistry(com.airbnb.deeplinkdispatch.sample.benchmarkable.BenchmarkDeepLinkModuleRegistry) TypeConverters(com.airbnb.deeplinkdispatch.handler.TypeConverters) Type(java.lang.reflect.Type) KaptLibraryDeepLinkModuleRegistry(com.airbnb.deeplinkdispatch.sample.kaptlibrary.KaptLibraryDeepLinkModuleRegistry) KaptLibraryDeepLinkModuleRegistry(com.airbnb.deeplinkdispatch.sample.kaptlibrary.KaptLibraryDeepLinkModuleRegistry) LibraryDeepLinkModuleRegistry(com.airbnb.deeplinkdispatch.sample.library.LibraryDeepLinkModuleRegistry) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

DeepLinkUri (com.airbnb.deeplinkdispatch.DeepLinkUri)1 TypeConverters (com.airbnb.deeplinkdispatch.handler.TypeConverters)1 SampleModuleRegistry (com.airbnb.deeplinkdispatch.sample.SampleModuleRegistry)1 BenchmarkDeepLinkModuleRegistry (com.airbnb.deeplinkdispatch.sample.benchmarkable.BenchmarkDeepLinkModuleRegistry)1 KaptLibraryDeepLinkModuleRegistry (com.airbnb.deeplinkdispatch.sample.kaptlibrary.KaptLibraryDeepLinkModuleRegistry)1 LibraryDeepLinkModuleRegistry (com.airbnb.deeplinkdispatch.sample.library.LibraryDeepLinkModuleRegistry)1 Type (java.lang.reflect.Type)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 Function3 (kotlin.jvm.functions.Function3)1