diff --git a/js/url_utilities.js b/js/url_utilities.js index 2c8596c..ac6a2ea 100644 --- a/js/url_utilities.js +++ b/js/url_utilities.js @@ -1,4 +1,4 @@ -export function makeDefaultFilename(url) { +function getFilename(url) { let segments; try { segments = new URL(url).pathname.split("/"); @@ -9,4 +9,19 @@ export function makeDefaultFilename(url) { // The || handles the possibility of a trailing slash. return segments.pop() || segments.pop() || null; +} + +const EXTENSION = /\.((?:tar\.)?[^/.]+)$/; + +export function makeDefaultFilename(url) { + let filename = getFilename(url); + if (!filename) return null; + return filename.replace(EXTENSION, ""); +} + +export function makeDefaultExtension(url) { + let filename = getFilename(url); + if (!filename) return null; + const match = filename.match(EXTENSION); + return match ? match[1] : null; } \ No newline at end of file diff --git a/js/views/Prompt.svelte b/js/views/Prompt.svelte index 641d8ca..2548aee 100644 --- a/js/views/Prompt.svelte +++ b/js/views/Prompt.svelte @@ -5,15 +5,17 @@ const OC = window.OC; import { enqueueTransfer } from "../ajax"; - import { makeDefaultFilename } from "../url_utilities"; + import { makeDefaultFilename, makeDefaultExtension } from "../url_utilities"; export let fileList; export let closeHandler; $: filename = ""; + $: extension = ""; // This will be used if the user does not enter their own name. - $: defaultFilename = t("transfer", "file.txt"); + $: defaultFilename = t("transfer", "file"); + $: defaultExtension = ""; let url = ""; // When the URL is edited, update the default filename. @@ -22,6 +24,7 @@ function setDefaultFilename() { // Keeps the current value if the URL is invalid. defaultFilename = makeDefaultFilename(url) || defaultFilename; + defaultExtension = makeDefaultExtension(url) || defaultExtension; } function submit() { @@ -42,26 +45,41 @@ action={OC.generateUrl('/')} on:submit|preventDefault={submit} method="post"> -
+ {t("transfer", "The file name and extension will be detected automatically, if left blank.")} +