Fix Web UI logs in compiled server
This commit is contained in:
parent
71a425ce66
commit
1331145333
8 changed files with 25 additions and 27 deletions
4
crates/librqbit/webui/dist/assets/index.js
vendored
4
crates/librqbit/webui/dist/assets/index.js
vendored
File diff suppressed because one or more lines are too long
2
crates/librqbit/webui/dist/manifest.json
vendored
2
crates/librqbit/webui/dist/manifest.json
vendored
|
|
@ -4,7 +4,7 @@
|
|||
"src": "assets/logo.svg"
|
||||
},
|
||||
"index.html": {
|
||||
"file": "assets/index-b02909de.js",
|
||||
"file": "assets/index-b804d1c8.js",
|
||||
"isEntry": true,
|
||||
"src": "index.html"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ export interface JSONLogLine {
|
|||
}
|
||||
|
||||
export interface RqbitAPI {
|
||||
getHttpBaseUrl: () => string | null;
|
||||
getStreamLogsUrl: () => string | null;
|
||||
listTorrents: () => Promise<ListTorrentsResponse>;
|
||||
getTorrentDetails: (index: number) => Promise<TorrentDetails>;
|
||||
getTorrentStats: (index: number) => Promise<TorrentStats>;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import { LogLine } from "./LogLine";
|
|||
import { JSONLogLine } from "../api-types";
|
||||
|
||||
interface LogStreamProps {
|
||||
httpApiBase: string;
|
||||
url: string;
|
||||
maxLines?: number;
|
||||
}
|
||||
|
||||
|
|
@ -39,7 +39,7 @@ const mergeBuffers = (a1: Uint8Array, a2: Uint8Array): Uint8Array => {
|
|||
};
|
||||
|
||||
const streamLogs = (
|
||||
httpApiBase: string,
|
||||
url: string,
|
||||
addLine: (text: string) => void,
|
||||
setError: (error: ErrorWithLabel | null) => void
|
||||
): (() => void) => {
|
||||
|
|
@ -55,7 +55,7 @@ const streamLogs = (
|
|||
};
|
||||
|
||||
const runOnce = async () => {
|
||||
let response = await fetch(httpApiBase + "/stream_logs", { signal });
|
||||
let response = await fetch(url, { signal });
|
||||
|
||||
if (!response.ok) {
|
||||
let text = await response.text();
|
||||
|
|
@ -128,10 +128,7 @@ const streamLogs = (
|
|||
};
|
||||
};
|
||||
|
||||
export const LogStream: React.FC<LogStreamProps> = ({
|
||||
httpApiBase,
|
||||
maxLines,
|
||||
}) => {
|
||||
export const LogStream: React.FC<LogStreamProps> = ({ url, maxLines }) => {
|
||||
const [logLines, setLogLines] = useState<Line[]>([]);
|
||||
const [error, setError] = useState<ErrorWithLabel | null>(null);
|
||||
const [filter, setFilter] = useState<string>("");
|
||||
|
|
@ -189,12 +186,8 @@ export const LogStream: React.FC<LogStreamProps> = ({
|
|||
useEffect(() => updateFilter.cancel, []);
|
||||
|
||||
useEffect(() => {
|
||||
return streamLogs(
|
||||
httpApiBase,
|
||||
(line) => addLineRef.current(line),
|
||||
setError
|
||||
);
|
||||
}, [httpApiBase]);
|
||||
return streamLogs(url, (line) => addLineRef.current(line), setError);
|
||||
}, [url]);
|
||||
|
||||
return (
|
||||
<div>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ interface Props {
|
|||
|
||||
export const LogStreamModal: React.FC<Props> = ({ show, onClose }) => {
|
||||
const api = useContext(APIContext);
|
||||
const apiBase = api.getHttpBaseUrl();
|
||||
let logsUrl = api.getStreamLogsUrl();
|
||||
|
||||
return (
|
||||
<Modal size="xl" show={show} onHide={onClose}>
|
||||
|
|
@ -19,8 +19,8 @@ export const LogStreamModal: React.FC<Props> = ({ show, onClose }) => {
|
|||
<Modal.Title>rqbit server logs</Modal.Title>
|
||||
</Modal.Header>
|
||||
<Modal.Body>
|
||||
{apiBase ? (
|
||||
<LogStream httpApiBase={apiBase} />
|
||||
{logsUrl ? (
|
||||
<LogStream url={logsUrl} />
|
||||
) : (
|
||||
<ErrorComponent
|
||||
error={{ text: "HTTP API not available to stream logs" }}
|
||||
|
|
|
|||
|
|
@ -27,8 +27,8 @@ export const APIContext = createContext<RqbitAPI>({
|
|||
delete: () => {
|
||||
throw new Error("Function not implemented.");
|
||||
},
|
||||
getHttpBaseUrl: () => {
|
||||
throw new Error("Function not implemented.");
|
||||
getStreamLogsUrl: () => {
|
||||
return null;
|
||||
},
|
||||
});
|
||||
export const AppContext = createContext<ContextType>({
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ const makeRequest = async (
|
|||
};
|
||||
|
||||
export const API: RqbitAPI & { getVersion: () => Promise<string> } = {
|
||||
getHttpBaseUrl: () => apiUrl,
|
||||
getStreamLogsUrl: () => apiUrl + "/stream_logs",
|
||||
listTorrents: (): Promise<ListTorrentsResponse> =>
|
||||
makeRequest("GET", "/torrents"),
|
||||
getTorrentDetails: (index: number): Promise<TorrentDetails> => {
|
||||
|
|
|
|||
|
|
@ -69,10 +69,15 @@ async function readFileAsBase64(file: File): Promise<string> {
|
|||
|
||||
export const makeAPI = (configuration: RqbitDesktopConfig): RqbitAPI => {
|
||||
return {
|
||||
getHttpBaseUrl: () => {
|
||||
return configuration.http_api.listen_addr
|
||||
? `http://${configuration.http_api.listen_addr}`
|
||||
: null;
|
||||
getStreamLogsUrl: () => {
|
||||
if (!configuration.http_api.listen_addr) {
|
||||
return null;
|
||||
}
|
||||
let port = configuration.http_api.listen_addr.split(":")[1];
|
||||
if (!port) {
|
||||
return null;
|
||||
}
|
||||
return `http://127.0.0.1:${port}/stream_logs`;
|
||||
},
|
||||
listTorrents: async function (): Promise<ListTorrentsResponse> {
|
||||
return await invokeAPI<ListTorrentsResponse>("torrents_list");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue