lib/isomorfeus/ssr.rb in isomorfeus-preact-10.6.48 vs lib/isomorfeus/ssr.rb in isomorfeus-preact-10.6.49
- old
+ new
@@ -1,73 +1,92 @@
module Isomorfeus
module SSR
%x{
- self.first_pass = function(session_id, env, locale, location, api_ws_path, transport_ws_url, component_name, props) {
- global.Opal.Preact.render_buffer = [];
- global.Opal.Preact.active_components = [];
- global.Opal.Preact.active_redux_components = [];
+ self.first_pass = function(session_id, env, locale, location, transport_ws_url, component_name, props) {
+ const oper = global.Opal.Preact;
+ const opi = global.Opal.Isomorfeus;
+ oper.render_buffer = [];
+ oper.active_components = [];
+ oper.active_redux_components = [];
global.FirstPassFinished = false;
global.NeedFurtherPass = false;
global.RenderedTree = '';
global.Exception = false;
global.IsomorfeusSessionId = session_id;
- global.HasTransport = (typeof global.Opal.Isomorfeus.Transport !== 'undefined') && (api_ws_path !== '');
- global.Opal.Isomorfeus['$env='](env);
- if (typeof global.Opal.Isomorfeus["$current_locale="] === 'function') { global.Opal.Isomorfeus["$current_locale="](locale); }
- global.Opal.Isomorfeus['$force_init!']();
- global.Opal.Isomorfeus['$ssr_response_status='](200);
- global.Opal.Isomorfeus.TopLevel['$ssr_route_path='](location);
+ global.HasTransport = (typeof opi.Transport !== 'undefined');
+ opi['$env='](env);
+ if (typeof opi["$current_locale="] === 'function') { opi["$current_locale="](locale); }
+ opi['$force_init!']();
+ opi['$ssr_response_status='](200);
+ opi.TopLevel['$ssr_route_path='](location);
if (global.HasTransport) {
- global.Opal.Isomorfeus.TopLevel["$transport_ws_url="](transport_ws_url);
- global.Opal.send(global.Opal.Isomorfeus.Transport.$promise_connect(global.IsomorfeusSessionId), 'then', [], ($$1 = function(){
+ opi.TopLevel["$transport_ws_url="](transport_ws_url);
+ let $$1;
+ global.Opal.send(opi.Transport.$promise_connect(global.IsomorfeusSessionId), 'then', [], ($$1 = function(){
try {
- global.RenderedTree = global.Opal.Isomorfeus.TopLevel.$render_component_to_string(component_name, props);
+ global.RenderedTree = opi.TopLevel.$render_component_to_string(component_name, props);
global.NeedFurtherPass = self.still_busy();
global.FirstPassFinished = true;
} catch (e) {
global.Exception = e;
+ global.FirstPassFinished = true;
global.NeedFurtherPass = false;
}
}, $$1.$$s = this, $$1.$$arity = 0, $$1))
+ global.NeedFurtherPass = true;
} else {
try {
- global.RenderedTree = global.Opal.Isomorfeus.TopLevel.$render_component_to_string(component_name, props);
+ global.RenderedTree = opi.TopLevel.$render_component_to_string(component_name, props);
global.NeedFurtherPass = self.store_busy();
} catch (e) {
global.Exception = e;
+ global.FirstPassFinished = true;
global.NeedFurtherPass = false;
}
};
- return [global.HasTransport, global.NeedFurtherPass, global.Exception ? { message: global.Exception.message, stack: global.Exception.stack } : false];
+ return [global.HasTransport, global.NeedFurtherPass, self.get_exception()];
}
+ self.first_pass_check = function() {
+ return [global.FirstPassFinished, global.NeedFurtherPass, self.get_exception()];
+ }
+
self.first_pass_result = function() {
- let ssr_styles;
- let application_state = global.Opal.Isomorfeus.store.native.getState();
- if (typeof global.NanoCSSInstance !== 'undefined') { ssr_styles = global.NanoCSSInstance.raw }
- return [global.RenderedTree, application_state, ssr_styles, global.Opal.Isomorfeus['$ssr_response_status'](), global.Exception ? { message: global.Exception.message, stack: global.Exception.stack } : false];
+ const opi = global.Opal.Isomorfeus;
+ let application_state = opi.store.native.getState();
+ let ssr_styles = global?.NanoCSSInstance?.raw;
+ return [global.RenderedTree, application_state, ssr_styles, opi['$ssr_response_status'](), self.get_exception()];
}
self.further_pass = function(component_name, props) {
- global.Opal.Preact.render_buffer = [];
- global.Opal.Preact.active_components = [];
- global.Opal.Preact.active_redux_components = [];
+ const oper = global.Opal.Preact;
+ const opi = global.Opal.Isomorfeus;
+ oper.render_buffer = [];
+ oper.active_components = [];
+ oper.active_redux_components = [];
+ global.NeedFurtherPass = false;
global.Exception = false;
- let rendered_tree;
- let ssr_styles;
+ let application_state = null;
+ let rendered_tree = null;
+ let ssr_styles = null;
try {
- rendered_tree = global.Opal.Isomorfeus.TopLevel.$render_component_to_string(component_name, props);
+ rendered_tree = opi.TopLevel.$render_component_to_string(component_name, props);
+ application_state = opi.store.native.getState();
+ ssr_styles = global?.NanoCSSInstance?.raw;
+ global.NeedFurtherPass = self.still_busy();
} catch (e) {
global.Exception = e;
}
- let application_state = global.Opal.Isomorfeus.store.native.getState();
- if (typeof global.NanoCSSInstance !== 'undefined') { ssr_styles = global.NanoCSSInstance.raw }
- global.NeedFurtherPass = ((global.HasTransport && global.Opal.Isomorfeus.Transport["$busy?"]()) || self.store_busy());
- return [rendered_tree, application_state, ssr_styles, global.Opal.Isomorfeus['$ssr_response_status'](), global.NeedFurtherPass, global.Exception ? { message: global.Exception.message, stack: global.Exception.stack } : false];
+ return [rendered_tree, application_state, ssr_styles, opi['$ssr_response_status'](), global.NeedFurtherPass, self.get_exception()];
}
+ self.get_exception = function() {
+ if (global.Exception) { return { message: global.Exception.message, stack: global.Exception.stack }; }
+ return false;
+ }
+
self.still_busy = function(){
- if (global.Opal.Isomorfeus.Transport["$busy?"]()) { return true; }
+ if (global.Opal.Isomorfeus?.Transport?.["$busy?"]?.()) { return true; }
return self.store_busy();
}
self.store_busy = function() {
let nfp = global.Opal.Isomorfeus.store["$recently_dispatched?"]();
\ No newline at end of file