remove ns2 example doing DOM manip

This commit is contained in:
Olivier Gagnon
2021-09-20 00:14:30 -04:00
parent 7355f4212b
commit a3e624deba
7 changed files with 36 additions and 41 deletions
+2 -1
View File
@@ -5,7 +5,7 @@ import { HacknetServer } from "../Hacknet/HacknetServer";
import { BaseServer } from "../Server/BaseServer";
import { Programs } from "../Programs/Programs";
import { CodingContractResult } from "../CodingContracts";
import { TerminalEvents } from "./TerminalEvents";
import { TerminalEvents, TerminalClearEvents } from "./TerminalEvents";
import { TextFile } from "../TextFile";
import { Script } from "../Script/Script";
@@ -480,6 +480,7 @@ export class Terminal implements ITerminal {
// TODO: remove this once we figure out the height issue.
this.outputHistory = [new Output(`Bitburner v${CONSTANTS.Version}`, "primary")];
TerminalEvents.emit();
TerminalClearEvents.emit();
}
prestige(): void {
+1
View File
@@ -1,2 +1,3 @@
import { EventEmitter } from "../utils/EventEmitter";
export const TerminalEvents = new EventEmitter<[]>();
export const TerminalClearEvents = new EventEmitter<[]>();
+9 -5
View File
@@ -11,7 +11,7 @@ import { ITerminal, Output, Link } from "../ITerminal";
import { IRouter } from "../../ui/Router";
import { IPlayer } from "../../PersonObjects/IPlayer";
import { TerminalInput } from "./TerminalInput";
import { TerminalEvents } from "../TerminalEvents";
import { TerminalEvents, TerminalClearEvents } from "../TerminalEvents";
interface IActionTimerProps {
terminal: ITerminal;
@@ -51,13 +51,17 @@ interface IProps {
export function TerminalRoot({ terminal, router, player }: IProps): React.ReactElement {
const scrollHook = useRef<HTMLDivElement>(null);
const setRerender = useState(0)[1];
const [key, setKey] = useState(0);
function rerender(): void {
setRerender((old) => old + 1);
}
useEffect(() => {
return TerminalEvents.subscribe(rerender);
}, []);
function clear(): void {
setKey((key) => key + 1);
}
useEffect(() => TerminalEvents.subscribe(rerender), []);
useEffect(() => TerminalClearEvents.subscribe(clear), []);
function doScroll(): void {
const hook = scrollHook.current;
@@ -76,7 +80,7 @@ export function TerminalRoot({ terminal, router, player }: IProps): React.ReactE
return (
<>
<Box width="100%" minHeight="100vh" display={"flex"} alignItems={"flex-end"}>
<List id="terminal" classes={{ root: classes.list }}>
<List key={key} id="terminal" classes={{ root: classes.list }}>
{terminal.outputHistory.map((item, i) => {
if (item instanceof Output)
return (