diff options
author | polwex <polwex@sortug.com> | 2025-06-15 04:59:49 +0700 |
---|---|---|
committer | polwex <polwex@sortug.com> | 2025-06-15 04:59:49 +0700 |
commit | 71c20233ff79e696d0eeca2ce1462d3083fbcfed (patch) | |
tree | 4491f680fb6fe65e9d8606764c7000396856e93e /bs5/server/pages/ServerOnlyRSC.re | |
parent | 241dc9c99bed4dddbc748aad54cee5bf7d77ab92 (diff) |
and were done, just like that
Diffstat (limited to 'bs5/server/pages/ServerOnlyRSC.re')
-rw-r--r-- | bs5/server/pages/ServerOnlyRSC.re | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/bs5/server/pages/ServerOnlyRSC.re b/bs5/server/pages/ServerOnlyRSC.re new file mode 100644 index 0000000..8e166aa --- /dev/null +++ b/bs5/server/pages/ServerOnlyRSC.re @@ -0,0 +1,46 @@ +let handler = request => { + let isRSCheader = + Dream.header(request, "Accept") == Some("application/react.component"); + + let app = + <DemoLayout background=Theme.Color.Gray2> + <div className="flex flex-col items-center justify-center h-full gap-4"> + <span className="text-gray-400 text-center"> + {React.string( + "The client will fetch the server component from the server and run createFromFetch", + )} + <br /> + {React.string("asking for the current time (in seconds) since")} + <br /> + {React.string("00:00:00 GMT, Jan. 1, 1970")} + </span> + <h1 + className={Cx.make([ + "font-bold text-4xl", + Theme.text(Theme.Color.Gray11), + ])}> + {React.string(string_of_float(Unix.gettimeofday()))} + </h1> + </div> + </DemoLayout>; + + if (isRSCheader) { + Dream.stream(response_stream => { + let%lwt () = + ReactServerDOM.render_model( + ~debug=true, + ~subscribe=data => Dream.write(response_stream, data), + app, + ); + Lwt.return(); + }); + } else { + Dream.html( + ReactDOM.renderToString( + <Document script="/static/demo/ServerOnlyRSC.re.js"> + React.null + </Document>, + ), + ); + }; +}; |