Commit Graph

32 Commits

Author SHA1 Message Date
Lorenzo Blasa
f1b35ca592 Make HTML entry points identical
Summary: Make both prod and dev HTML entry points identical.

Reviewed By: aigoncharov

Differential Revision: D51307116

fbshipit-source-id: 5aea8e455d623aba260e3e37a2c549ebc67dd3b0
2023-11-14 10:53:09 -08:00
Lorenzo Blasa
65d2ce7ed5 Move dev socket
Summary: Not entirely sure what the use of this socket is, but it can definitely be defined inside flipper-ui-browser instead.

Reviewed By: aigoncharov

Differential Revision: D51307090

fbshipit-source-id: 36eb336536e8672fb0b2bcf12dad31c7fbc00a39
2023-11-14 10:53:09 -08:00
Lorenzo Blasa
af3f11521b Remove probably duplicated logs
Summary: These logs only available on debug but we already have these logs coming from the actual used socket, so remove.

Reviewed By: aigoncharov

Differential Revision: D51307089

fbshipit-source-id: 32e3eada42fa54b429df0bfcdd936d24cebaf0cb
2023-11-14 10:53:09 -08:00
Lorenzo Blasa
067693f3c8 Standard message between prod and dev
Summary: These two texts were different, they should be the same for consistency.

Reviewed By: aigoncharov

Differential Revision: D51307086

fbshipit-source-id: a71fb7e6cf072df73e7f9fb386245f266984900b
2023-11-14 10:53:09 -08:00
Lorenzo Blasa
11ec4c3107 Remove unused css
Summary: This CSS was unused, so remove.

Reviewed By: aigoncharov

Differential Revision: D51307093

fbshipit-source-id: a978d76fca7cfb07c96180c4ece0b1bdf1087894
2023-11-14 10:53:09 -08:00
Lorenzo Blasa
7de92cb34a Config set from server
Summary: Instead of having duplicate configs defined on our HTML. Move the config definition to the server.

Reviewed By: aigoncharov

Differential Revision: D51307092

fbshipit-source-id: 68f4afc918cf191b3a15b3981429c5a05d5df8df
2023-11-14 10:53:09 -08:00
Lorenzo Blasa
9166939214 Rename constants
Summary: After the move, let's rename the constants to make them match our code standards.

Reviewed By: aigoncharov

Differential Revision: D51307087

fbshipit-source-id: 4e44e956fd88abd3e8359fe94fa4e31d17f61a55
2023-11-14 10:53:09 -08:00
Lorenzo Blasa
49abb4dd41 Move constants to flipperConfig
Summary: Recently we have added a few constants to be used by our main entry point. This change moves them to a central place: flipperConfig.

Reviewed By: aigoncharov

Differential Revision: D51307088

fbshipit-source-id: 09f0ef0e69e2067ce5c8501367629eeec7523858
2023-11-14 10:53:09 -08:00
Andrey Goncharov
4b3f572205 Preserve previous error messages
Reviewed By: passy

Differential Revision: D51197113

fbshipit-source-id: 237c6f1f894cb4d758150ff2bddf14c104d3b381
2023-11-10 03:39:32 -08:00
Andrey Goncharov
8ef29c8160 Embed auth token into HTML
Summary:
Auth token used be injected in the manifest file. Instead, have the server injected into the main HTML page.

The main driver to this change are:
- Simplify
- There are instances in which for some reason reading/writing the token from the manifest fails. This will address that problem.

Reviewed By: lblasa

Differential Revision: D51160521

fbshipit-source-id: 4626fd8f56bc8b61182a53a5d9cf5acad1e723bc
2023-11-09 14:05:43 -08:00
Lorenzo Blasa
34bbd41547 If unable to load main bundle, retry after 3 seconds
Summary: If we fail to load the main js bundle, retry after 3 seconds.

Reviewed By: aigoncharov

Differential Revision: D50732857

fbshipit-source-id: b19ea165776f8105d724e586b1bed20bf1f5178c
2023-10-27 10:19:33 -07:00
Andrey Goncharov
cc76a21d80 Add more tracking data for UI startup
Reviewed By: lblasa

Differential Revision: D50365803

fbshipit-source-id: b6a601e7bf987738400a86be6814de7cafd50d3d
2023-10-17 08:28:02 -07:00
Andrey Goncharov
ee7736caee Add a more complex logger to Flipper UI Browser
Reviewed By: passy, lblasa

Differential Revision: D50223987

fbshipit-source-id: 108e1753b555c7d7b32d3fc2408c2f8efcbadb4d
2023-10-16 09:27:50 -07:00
Lorenzo Blasa
d9ad2a8932 Remove troubleshoot from here
Summary:
Simplify how messages (state updates) are shown in Flipper UI.

This main change was introduced as a way to show the 'Start' server button whenever we were in a disconnected state. This is not as simple as the server may be restarting or the client may be even have reset the WS connection. Hence you the experience where this UI is shown and immediately dismissed.

This UI is only ever shown if at one point the server was alive, period. So, in this case, either the server becomes available again OR the user quits the PWA/tab/browser and launches again.

IMHO, this is a better experience that totally assuming the server is dead.

In a next iteration, we can be more clever and have a timeout such that if after a set period of time the server doesn't become online, then we show a button to start (or force kill) the server.

Reviewed By: aigoncharov

Differential Revision: D49915698

fbshipit-source-id: 03fcc150ed1f1303d1d727c82a71eb32616208e8
2023-10-05 04:37:16 -07:00
Lorenzo Blasa
80fc8eb4ed Hide troubleshoot if a message needs to be shown
Summary: Also remove the suppress error usage as is it was never used.

Reviewed By: aigoncharov

Differential Revision: D49910876

fbshipit-source-id: 7267eaddadb73ab2b6e2aab0045157271ceed427
2023-10-05 04:37:16 -07:00
Lorenzo Blasa
f897203a32 Better name for showing troubleshooting steps
Summary: Better name for toggling troubleshoot/main UI

Reviewed By: antonk52

Differential Revision: D49411916

fbshipit-source-id: 1e5bd4e3e5742abef1fca41349bc8b16cf1229bf
2023-09-20 04:10:39 -07:00
Lorenzo Blasa
f1c88a464b Do not use window reload
Summary: Let's keep it simple, do not reload. Just show/hide the right content.

Reviewed By: antonk52

Differential Revision: D49377316

fbshipit-source-id: 9b2a47374da3e72f17e2d55c9290960b703fd43e
2023-09-18 12:03:09 -07:00
Lorenzo Blasa
342ef42114 Break connection loop
Summary:
Whenever there was a connectivity error, we would show an error message and setup a retry mechanism as to refresh the page as to make it transparent for engineers to have a working workspace again.

The problem is that there are two different channels:
- HTTP server
- WS server

If the HTTP server is healthy but there is a WS error, it is not entirely correct to try to reload the page. If the error conditions for the WS remain, then we end up in a loop.

Reviewed By: passy, antonk52

Differential Revision: D49373335

fbshipit-source-id: 4e0a08fe2384860db0bf92a22edc87402d41651c
2023-09-18 08:57:15 -07:00
Lorenzo Blasa
4ff9279a0b Offline troubleshoot when server disconnects
Summary:
If there server disconnects, we used to show a red box message on the lower left section of the screen. It didn't say much other than the server had disconnected.
If you are aware of what the server is, then you may try to manually restart it.

Instead of doing that, a much better experience is to show the no connection troubleshoot with the button to start the server or with instructions on how to achieve this.

Reviewed By: antonk52

Differential Revision: D48467308

fbshipit-source-id: 0ffded95789c7548d9f1e1a9127409e02e72ab8c
2023-08-18 07:59:51 -07:00
Lorenzo Blasa
ce13ee426f Open file import
Summary: This change only adds the PWA as capable of handling files with the ".flipper" extension.

Reviewed By: aigoncharov

Differential Revision: D48353437

fbshipit-source-id: fd78942ac4dffb7d26d5ca5be826290018465b93
2023-08-17 13:46:08 -07:00
Lorenzo Blasa
7fcaf52c71 Show error in box if one is available
Summary: Add a check to prevent the odd error when the box is no longer available to display an error.

Reviewed By: antonk52

Differential Revision: D46763634

fbshipit-source-id: 6ac2c404c842ff989b037c991b5f085baacd2f9a
2023-06-15 08:53:16 -07:00
Lorenzo Blasa
c6d5eb3334 Flipper as PWA
Summary:
^

Reference: https://docs.google.com/document/d/1flQJUzTe4AuQz3QCpvbloQycenHsu7ZxbKScov7K7ao

Reviewed By: passy

Differential Revision: D45693382

fbshipit-source-id: 5a2e6c213a7e7e2cf9cd5f3033cff3e5291a2a92
2023-05-16 04:32:47 -07:00
Lorenzo Blasa
238f40f55d Mandate auth token to connect over TCP
Summary:
Until now, launching flipper-server with TCP would accept any incoming connection as long as it comes from the same origin (localhost) using web socket host origin verification.

This is not entirely secure as origin can be spoofed with tools like curl.

Our team created a security review and a proposal was written:
https://docs.google.com/document/d/16iXypCQibPiner061SoaQUFUY9tLVAEpkKfV_hUXI7c/

Effectively, Flipper can generate a token which is then used by the client to authenticate.

This diff contains the changes required to generate, obtain, and validate authentication tokens from clients connecting to flipper over TCP connections.

The token itself is a JWT token. JWT was chosen because it is a simple industry standard which offers three features which can immediately benefit us:

- Expiration handling. No need for Flipper to store this information anywhere.
- Payload. Payload can be used to push any data we deem relevant i.e. unix username.
- Signing. Signed and verified using the same server key pair which is already in place for certificate exchange.

Additionally, the token is stored in the Flipper static folder. This ensures that the browser and PWA clients have access to it.

Reviewed By: mweststrate

Differential Revision: D45179654

fbshipit-source-id: 6761bcb24f4ba30b67d1511cde8fe875158d78af
2023-05-05 07:52:13 -07:00
Andrey Goncharov
d3d2e189d0 Consume changed plugins message in the UI
Summary: Relay message to the React app via postmessage. Later, we will subscribe to these messages and update the plugins

Reviewed By: lblasa

Differential Revision: D39539590

fbshipit-source-id: c6742e45330e71b63c135c0267e6e9c5817fc9ff
2022-09-15 10:02:19 -07:00
Pascal Hartig
af924b1c6a Format html files
Summary: Using the built-in VSCode formatter to make them all a little more consistent before making changes to them.

Reviewed By: antonk52, nikoant

Differential Revision: D34897393

fbshipit-source-id: 270e575a4e8b15ff31887a356516af7409315618
2022-03-16 09:41:36 -07:00
Andrey Goncharov
f85def32fb Migrate from socket.io
Reviewed By: passy

Differential Revision: D34787674

fbshipit-source-id: 63d7c166ea29d14c96f0646a045e3f6fa93472e2
2022-03-10 10:31:24 -08:00
Michel Weststrate
b1162a47c5 Set favicon
Summary: Added a favicon so that Flipper tab is recognisable

Reviewed By: nikoant

Differential Revision: D33296434

fbshipit-source-id: 8801c6d0333db5dc9d38f2ff92c86f03386591c7
2021-12-24 02:16:48 -08:00
Michel Weststrate
92a743cc59 Processed some earlier review comments
Summary: Per title, processed some pending review comments made earlier in this stack

Reviewed By: aigoncharov

Differential Revision: D32916920

fbshipit-source-id: 01db85883596b5c85b77efc9cddadeac23cc4ef5
2021-12-08 04:30:57 -08:00
Michel Weststrate
ad4a55f263 move node types, stub node modules
Summary: This diff stubs all node modules when running in the browser, so that, albeit with a lot of errors and without plugins, the UI loads in a browser. To be continued in the rest of this diff

Reviewed By: antonk52

Differential Revision: D32665705

fbshipit-source-id: 4632e241f59c5b9712a41d01a26878afb01f69b5
2021-12-08 04:30:57 -08:00
Michel Weststrate
eab4f0d3d3 Bits & pieces
Summary: Added a command to let a file be opened by the OS, and some other small bits and pieces to make Flipper browser compatible.

Reviewed By: lblasa

Differential Revision: D32721748

fbshipit-source-id: a4ad1c2f662f4651ddf6c20c57e5af1e123914a8
2021-12-08 04:30:56 -08:00
Michel Weststrate
5d45bd741b Initialise flipper-ui-browser with socket connection
Summary:
This diff sets up the socket connection between flipper-browser and flipper-server, and verifies that the initial UI initialisation work (e.g. `get-config` command works). The initial RenderHost is initialised as well based on the config and browser APIs.

Note that flipper-ui-core itself isn't started yet, as that has still a plethora of node imports, so Metro will correctly refuse to bundle

Not in this diff
* remove Node usage from flipper-ui-core
* implement all RenderHost APIs

Reviewed By: aigoncharov

Differential Revision: D32644074

fbshipit-source-id: 2c8065caf0191771a3867b69a431ca50eeb7a5a3
2021-12-08 04:30:55 -08:00
Michel Weststrate
0dfc73da93 setup webserver for flipper-server
Summary:
This sets up the metro bundler for flipper-server, to be able to serve the front end.

Note that this is a setup that is only relevant for development purposes

Done in this diff:

* setup metro
* setup fast refresh
* setup nodemon to be able to refresh on server changes

Not done in this diff

* Setup FlipperServerImpl in the flipper-server
* Load flipper-ui-core in flipper-ui-browser
* Load plugins
* Support options, env vars etc etc
* Make flipper-server stand alone (it is largely self contained, but still requires some static resources like theming)

Reviewed By: passy, aigoncharov

Differential Revision: D32626137

fbshipit-source-id: 47f580356ddf0993392d3b583082b187661727e9
2021-12-08 04:30:55 -08:00