make download work for state vars (#2092)

This commit is contained in:
Thomas Brandého 2023-11-01 01:08:10 +01:00 committed by GitHub
parent 853a43eaab
commit 96c09b0f6b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 7 deletions

View File

@ -171,6 +171,7 @@ export const applyEvent = async (event, socket) => {
const a = document.createElement('a');
a.hidden = true;
a.href = event.payload.url;
if (event.payload.filename)
a.download = event.payload.filename;
a.click();
a.remove();

View File

@ -434,7 +434,7 @@ def set_clipboard(content: str) -> EventSpec:
)
def download(url: str, filename: Optional[str] = None) -> EventSpec:
def download(url: str | Var, filename: Optional[str | Var] = None) -> EventSpec:
"""Download the file at a given path.
Args:
@ -447,6 +447,10 @@ def download(url: str, filename: Optional[str] = None) -> EventSpec:
Returns:
EventSpec: An event to download the associated file.
"""
if isinstance(url, Var) and filename is None:
filename = ""
if isinstance(url, str):
if not url.startswith("/"):
raise ValueError("The URL argument should start with a /")