internal async Task UpdateJavascriptObjects(bool debugMode) { await RunInJavascriptContext(async() => { RegisterJavascriptHelper(); Context.InitOnJsContext(debugMode); _SessionInjector = Context.JavascriptSessionInjector; _BuilderStrategy = _BuilderStrategyFactory.GetStrategy(Context.WebView, _SessionCache, Context.JavascriptFrameworkIsMappingObject); _BuilderStrategy.UpdateJavascriptValue(JsValueRoot); IJavascriptObject res; if (Context.JavascriptFrameworkIsMappingObject) { res = await InjectInHtmlSession(JsValueRoot); } else { res = JsValueRoot.JsValue; } await _SessionInjector.RegisterMainViewModel(res); _IsLoaded = true; }); }
private void InitOnJavascriptContext(bool debugMode) { RegisterJavascriptHelper(); Context.InitOnJsContext(debugMode); _SessionInjector = Context.JavascriptSessionInjector; _BuilderStrategy = _BuilderStrategyFactory.GetStrategy(Context.WebView, _SessionCache, Context.JavascriptFrameworkIsMappingObject); _BuilderStrategy.UpdateJavascriptValue(JsValueRoot); }
private Task <IJSCSGlue> UpdateFromCSharpChanges(object newCSharpObject, Func <IJSCSGlue, BridgeUpdater> updaterBuilder) { CheckUIContext(); var value = _JSObjectBuilder.Map(newCSharpObject); if (value == null) { return(null); } BridgeUpdater updater = null; using (var relisten = value.IsBasicNotNull()? null : ReListen()) { updater = Update(() => updaterBuilder(value), relisten); } if (!_IsLoaded) { return(Task.FromResult(value)); } return(RunInJavascriptContext(async() => { _BuilderStrategy.UpdateJavascriptValue(value); if (_Context.JavascriptFrameworkIsMappingObject) { await InjectInHTMLSession(value); } updater.UpdateOnJavascriptContext(_Context.ViewModelUpdater); return value; })); }
private void UpdateOnJavascriptContext(BridgeUpdater updater, IJsCsGlue value) { _BuilderStrategy.UpdateJavascriptValue(value); updater.UpdateOnJavascriptContext(Context.ViewModelUpdater); }
private void UpdateJavascriptValue(IJsCsGlue value) { _BuilderStrategy.UpdateJavascriptValue(value); }