private bool TryExtractFunction(ISymbol symbol, string moduleName, [NotNullWhen(returnValue: true)] out ReactFunction?function)
        {
            if (TryExtractCallback(symbol, moduleName, ReactTypes.ReactFunctionAttribute, out var callbackParameters, out var name, out var declaredModuleName))
            {
                function = new ReactFunction(symbol, callbackParameters, name, declaredModuleName);
                return(true);
            }

            function = null;
            return(false);
        }
Example #2
0
 internal StatementSyntax AddFunction(ReactFunction function)
 {
     // generates:
     //   moduleBuilder.AddInitializer((IReactContext reactContext) =>
     //      module.MyEvent = (ArgType0 arg0, ArgType1 arg1, ...) => new ReactContext(reactContext).EmitJsFunction("moduleName", "eventName", arg0, arg1, ...);
     return(InvocationStatement(
                MemberAccessExpression(ReactNativeNames.ModuleBuilder, ReactNativeNames.AddInitializer),
                ParenthesizedLambdaExpression(
                    parameterList: ParameterList(
                        Parameter(ReactNativeNames.ReactContextLocalName).WithType(ReactTypes.IReactContext.ToTypeSyntax())),
                    block: null,
                    expressionBody: GenerateCallback(function, ReactNativeNames.CallJSFunctionFunctionName))));
 }