Skip to content

Commit

Permalink
prevent illegal scene names in windows
Browse files Browse the repository at this point in the history
fixes #213
  • Loading branch information
kevboh committed Jan 22, 2024
1 parent 7471932 commit 8018a7a
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/view/explorer/NewSceneField.svelte
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<script lang="ts">
import { getContext } from "svelte";
import { selectedDraft } from "src/model/stores";
import { invalidFilenameCharacters, isValidFilename } from "../utils";
let newSceneName: string = "";
let newSceneInput: HTMLElement;
Expand All @@ -16,8 +17,8 @@
error = null;
} else if (sceneNames.contains(newSceneName)) {
error = "A scene with this name already exists in this draft.";
} else if (newSceneName.match(/[\/\\:]/g)) {
error = "A scene name cannot contain the characters: \\ / :";
} else if (!isValidFilename(newSceneName)) {
error = `A scene name cannot contain the characters: ${invalidFilenameCharacters()}`;
} else {
error = null;
}
Expand Down
19 changes: 19 additions & 0 deletions src/view/utils.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,26 @@
import { Platform } from "obsidian";

export function selectElementContents(el: HTMLElement) {
const range = document.createRange();
range.selectNodeContents(el);
const sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
}

export function invalidFilenameCharacters(): string {
if (Platform.isWin) {
return '* " \\ / : < > | ?';
}
return "\\ / :";
}

export function isValidFilename(name: string): boolean {
if (Platform.isWin && name.match(/[\*"\\\/:<>|\?]*/g)) {
return false;
}
if (name.match(/[\/\\:]/g)) {
return false;
}
return true;
}

0 comments on commit 8018a7a

Please sign in to comment.