@linxin666/dsh-remote-web-ui 0.1.19 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/client.js +20 -3
- package/lib/client.js.map +1 -1
- package/lib/index.js +119 -78
- package/lib/mobile.js +18 -5
- package/lib/mobile.js.map +1 -1
- package/lib/types/client/FooterRemoteEntry.js +1 -1
- package/lib/types/client/PluginSettingsCard.d.ts +1 -1
- package/lib/types/client/PluginSettingsCard.d.ts.map +1 -1
- package/lib/types/client/RemoteEntry.d.ts.map +1 -1
- package/lib/types/client/RemoteEntry.js +41 -11
- package/lib/types/client/RemotePanel.d.ts +1 -0
- package/lib/types/client/RemotePanel.d.ts.map +1 -1
- package/lib/types/client/RemotePanel.js +2 -2
- package/lib/types/client/RemoteSettingsCard.d.ts.map +1 -1
- package/lib/types/client/RemoteSettingsCard.js +2 -2
- package/lib/types/client/UpdateEntry.js +1 -1
- package/lib/types/client/UpdatePanel.js +1 -1
- package/lib/types/client/deep-link.js +1 -1
- package/lib/types/client/index.js +7 -7
- package/lib/types/client/settings-form.d.ts.map +1 -1
- package/lib/types/client/update-api.d.ts.map +1 -1
- package/lib/types/gate.js +1 -1
- package/lib/types/http.d.ts +14 -0
- package/lib/types/http.d.ts.map +1 -0
- package/lib/types/http.js +27 -0
- package/lib/types/index.d.ts +3 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +12 -10
- package/lib/types/invariant.d.ts.map +1 -1
- package/lib/types/mobile/api.js +1 -1
- package/lib/types/mobile/index.js +3 -3
- package/lib/types/mobile/markdown.d.ts +6 -4
- package/lib/types/mobile/markdown.d.ts.map +1 -1
- package/lib/types/mobile/markdown.js +8 -4
- package/lib/types/mobile/markdown.test.js +5 -1
- package/lib/types/mobile/messages.d.ts.map +1 -1
- package/lib/types/mobile/messages.js +14 -1
- package/lib/types/mobile/messages.test.js +1 -1
- package/lib/types/mobile/mobile-theme.test.js +2 -2
- package/lib/types/mobile/mux.d.ts.map +1 -1
- package/lib/types/mobile/mux.js +1 -1
- package/lib/types/mobile/mux.test.js +1 -1
- package/lib/types/mobile/rpc.d.ts.map +1 -1
- package/lib/types/mobile/theme-toggle.js +1 -1
- package/lib/types/mobile/views/App.d.ts +0 -11
- package/lib/types/mobile/views/App.d.ts.map +1 -1
- package/lib/types/mobile/views/App.js +6 -6
- package/lib/types/mobile/views/ChatView.js +6 -6
- package/lib/types/mobile/views/ChatView.test.js +3 -3
- package/lib/types/mobile/views/SessionListView.js +3 -3
- package/lib/types/mobile/views/SessionListView.test.js +2 -2
- package/lib/types/mobile/views/WorkspaceView.js +3 -3
- package/lib/types/mobile/views/WorkspaceView.test.js +3 -3
- package/lib/types/mobile-api.d.ts +1 -1
- package/lib/types/mobile-api.d.ts.map +1 -1
- package/lib/types/mobile-api.js +11 -18
- package/lib/types/mobile-routes.d.ts.map +1 -1
- package/lib/types/mobile-routes.js +17 -11
- package/lib/types/mount-once.d.ts +25 -0
- package/lib/types/mount-once.d.ts.map +1 -0
- package/lib/types/mount-once.js +42 -0
- package/lib/types/pairing.d.ts.map +1 -1
- package/lib/types/routes.d.ts +6 -6
- package/lib/types/routes.d.ts.map +1 -1
- package/lib/types/routes.js +14 -19
- package/lib/types/tunnel.d.ts.map +1 -1
- package/lib/types/update-routes.d.ts +2 -2
- package/lib/types/update-routes.d.ts.map +1 -1
- package/lib/types/update-routes.js +1 -6
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +6 -3
- package/package.json +1 -1
- package/src/client/RemoteEntry.tsx +38 -6
- package/src/client/RemotePanel.tsx +1 -1
- package/src/http.ts +30 -0
- package/src/index.ts +4 -1
- package/src/mobile/markdown.test.ts +5 -0
- package/src/mobile/markdown.ts +7 -4
- package/src/mobile/messages.ts +14 -1
- package/src/mobile/views/App.tsx +0 -12
- package/src/mobile-api.ts +9 -17
- package/src/mobile-routes.ts +16 -10
- package/src/mount-once.ts +48 -0
- package/src/routes.ts +11 -17
- package/src/update-routes.ts +1 -7
- package/src/update.ts +6 -3
package/lib/client.js
CHANGED
|
@@ -2001,8 +2001,16 @@ window.__ModuleLoader__.load({
|
|
|
2001
2001
|
* rendered by {@link UpdateEntry}. Component-local state per the client
|
|
2002
2002
|
* stack rules: nothing here survives remounts or crosses entries.
|
|
2003
2003
|
*/
|
|
2004
|
-
/**
|
|
2004
|
+
/**
|
|
2005
|
+
* Apply one status frame onto the current state: the ready state mirrors
|
|
2006
|
+
* the full phase/device picture, while the lan-required banner only keeps
|
|
2007
|
+
* the auto-tunnel frame (the signal for the running re-issue).
|
|
2008
|
+
*/
|
|
2005
2009
|
function mergeFrame(state, frame) {
|
|
2010
|
+
if (state.kind === "lan-required") return {
|
|
2011
|
+
...state,
|
|
2012
|
+
...frame.tunnel !== void 0 ? { tunnel: frame.tunnel } : {}
|
|
2013
|
+
};
|
|
2006
2014
|
if (state.kind !== "ready") return state;
|
|
2007
2015
|
return {
|
|
2008
2016
|
...state,
|
|
@@ -2020,6 +2028,10 @@ window.__ModuleLoader__.load({
|
|
|
2020
2028
|
function RemoteEntry({ wide, useWorkspaces, t }) {
|
|
2021
2029
|
const [open, setOpen] = (0, react.useState)(false);
|
|
2022
2030
|
const [state, setState] = (0, react.useState)({ kind: "lan-required" });
|
|
2031
|
+
const stateRef = (0, react.useRef)(state);
|
|
2032
|
+
(0, react.useEffect)(() => {
|
|
2033
|
+
stateRef.current = state;
|
|
2034
|
+
}, [state]);
|
|
2023
2035
|
const [copied, setCopied] = (0, react.useState)(false);
|
|
2024
2036
|
const eventSource = (0, react.useRef)(void 0);
|
|
2025
2037
|
const workspaceId = useWorkspaces((s) => s.recentWorkspaceId);
|
|
@@ -2058,14 +2070,19 @@ window.__ModuleLoader__.load({
|
|
|
2058
2070
|
setOpen(true);
|
|
2059
2071
|
const next = await mint();
|
|
2060
2072
|
setState(next);
|
|
2061
|
-
if (next.kind !== "ready") return;
|
|
2073
|
+
if (next.kind !== "ready" && next.kind !== "lan-required") return;
|
|
2062
2074
|
const source = new EventSource("/api/pair/events");
|
|
2063
2075
|
eventSource.current = source;
|
|
2064
2076
|
source.onmessage = (event) => {
|
|
2065
2077
|
try {
|
|
2066
2078
|
const frame = JSON.parse(event.data);
|
|
2067
2079
|
if (frame.type !== "state") return;
|
|
2068
|
-
|
|
2080
|
+
const previous = stateRef.current;
|
|
2081
|
+
if (previous.kind === "lan-required" && frame.tunnel?.state === "running" && previous.tunnel?.state !== "running") {
|
|
2082
|
+
mint().then(setState);
|
|
2083
|
+
return;
|
|
2084
|
+
}
|
|
2085
|
+
setState((current) => mergeFrame(current, frame));
|
|
2069
2086
|
} catch {}
|
|
2070
2087
|
};
|
|
2071
2088
|
}, [mint]);
|