Ignore trailing whitespace for dirty file asterisk

Saved scripts is stored on servers with its starting & trailing whitespace removed, so
comparison would fail and show the file as dirty when there was a
trailing newline in the script.
This commit is contained in:
Martin Fournier 2022-01-14 05:14:56 -05:00
parent ea2f2bd92b
commit aec2763b27
2 changed files with 13 additions and 2 deletions

@ -118,7 +118,7 @@ export class Script {
*/ */
saveScript(player: IPlayer, filename: string, code: string, hostname: string, otherScripts: Script[]): void { saveScript(player: IPlayer, filename: string, code: string, hostname: string, otherScripts: Script[]): void {
// Update code and filename // Update code and filename
this.code = code.replace(/^\s+|\s+$/g, ""); this.code = Script.formatCode(this.code);
this.filename = filename; this.filename = filename;
this.server = hostname; this.server = hostname;
@ -158,6 +158,15 @@ export class Script {
s.rehash(); s.rehash();
return s; return s;
} }
/**
* Formats code: Removes the starting & trailing whitespace
* @param {string} code - The code to format
* @returns The formatted code
*/
static formatCode(code: string): string {
return code.replace(/^\s+|\s+$/g, "");
}
} }
Reviver.constructors.Script = Script; Reviver.constructors.Script = Script;

@ -686,7 +686,9 @@ export function Root(props: IProps): React.ReactElement {
const serverScript = server.scripts.find((s) => s.filename === openScript.fileName); const serverScript = server.scripts.find((s) => s.filename === openScript.fileName);
if (serverScript === undefined) return " *"; if (serverScript === undefined) return " *";
return serverScript.code !== openScript.code ? " *" : ""; // The server code is stored with its starting & trailing whitespace removed
const openScriptFormatted = Script.formatCode(openScript.code);
return serverScript.code !== openScriptFormatted ? " *" : "";
} }
// Toolbars are roughly 112px: // Toolbars are roughly 112px: