Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepares CatalystInstance for implementation of ReactContext. #19

Merged
merged 1 commit into from
Dec 22, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 21 additions & 5 deletions ReactWindows/ReactNative/Bridge/CatalystInstance.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@ namespace ReactNative.Bridge
class CatalystInstance : ICatalystInstance, IDisposable
{
private readonly NativeModuleRegistry _registry;
private readonly CatalystQueueConfiguration _catalystQueueConfiguration;
private readonly ICatalystQueueConfiguration _catalystQueueConfiguration;
private readonly IJavaScriptExecutor _jsExecutor;

private readonly JavaScriptModulesConfig _jsModulesConfig;
private readonly Action<Exception> _nativeModuleCallsExceptionHandler;
private readonly JavaScriptModuleRegistry _jsRegistry;

private IReactBridge _bridge;

private bool _initialized;
Expand All @@ -27,13 +29,16 @@ public CatalystInstance(
CatalystQueueConfigurationSpec catalystQueueConfigurationSpec,
IJavaScriptExecutor jsExecutor,
NativeModuleRegistry registry,
JavaScriptModulesConfig jsModulesConfig)
JavaScriptModulesConfig jsModulesConfig,
Action<Exception> nativeModuleCallsExceptionHandler)
{
_registry = registry;
_jsExecutor = jsExecutor;
_jsModulesConfig = jsModulesConfig;
_nativeModuleCallsExceptionHandler = nativeModuleCallsExceptionHandler;
_jsRegistry = new JavaScriptModuleRegistry(this, _jsModulesConfig);

_catalystQueueConfiguration = CatalystQueueConfiguration.Create(
QueueConfiguration = CatalystQueueConfiguration.Create(
catalystQueueConfigurationSpec,
HandleException);
}
Expand All @@ -46,6 +51,16 @@ public IEnumerable<INativeModule> NativeModules
}
}

public ICatalystQueueConfiguration QueueConfiguration
{
get;
}

public T GetJavaScriptModule<T>() where T : IJavaScriptModule
{
return _jsRegistry.GetJavaScriptModule<T>();
}

public T GetNativeModule<T>() where T : INativeModule
{
return _registry.GetModule<T>();
Expand Down Expand Up @@ -169,7 +184,8 @@ private string BuildModulesConfig()

private void HandleException(Exception ex)
{
// TODO
_nativeModuleCallsExceptionHandler(ex);
QueueConfiguration.DispatcherQueueThread.RunOnQueue(Dispose);
}

class NativeModulesReactCallback : IReactCallback
Expand Down
7 changes: 7 additions & 0 deletions ReactWindows/ReactNative/Bridge/ICatalystInstance.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,13 @@ public interface ICatalystInstance
/// <param name="arguments">The arguments.</param>
void InvokeCallback(int callbackId, JArray arguments);

/// <summary>
/// Gets a JavaScript module instance.
/// </summary>
/// <typeparam name="T">Type of JavaScript module.</typeparam>
/// <returns>The JavaScript module instance.</returns>
T GetJavaScriptModule<T>() where T : IJavaScriptModule;

/// <summary>
/// Gets a native module instance.
/// </summary>
Expand Down