Skip to content

Commit e48e1ae

Browse files
fix(upload): correct on_drop_rejected args spec (#6342)
* Fix upload on_drop_rejected args spec * test(upload): parametrize on_drop_rejected spec check over GhostUpload too --------- Co-authored-by: Farhan Ali Raza <[email protected]>
1 parent fd5da4a commit e48e1ae

3 files changed

Lines changed: 14 additions & 4 deletions

File tree

packages/reflex-components-core/src/reflex_components_core/core/upload.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ def get_upload_url(file_path: str | Var[str]) -> Var[str]:
177177
_on_drop_spec,
178178
passthrough_event_spec(UploadChunkIterator),
179179
)
180+
_on_drop_rejected_spec = passthrough_event_spec(list[dict[str, Any]])
180181
_UPLOAD_FILES_CLIENT_HANDLER = "uploadFiles"
181182

182183

@@ -220,7 +221,7 @@ class GhostUpload(Fragment):
220221
# Fired when files are dropped.
221222
on_drop: EventHandler[_on_drop_args_spec]
222223

223-
on_drop_rejected: EventHandler[_on_drop_spec] = field(
224+
on_drop_rejected: EventHandler[_on_drop_rejected_spec] = field(
224225
doc="Fired when dropped files do not meet the specified criteria."
225226
)
226227

@@ -264,7 +265,7 @@ class Upload(MemoizationLeaf):
264265
# Fired when files are dropped.
265266
on_drop: EventHandler[_on_drop_args_spec]
266267

267-
on_drop_rejected: EventHandler[_on_drop_spec] = field(
268+
on_drop_rejected: EventHandler[_on_drop_rejected_spec] = field(
268269
doc="Fired when dropped files do not meet the specified criteria."
269270
)
270271

pyi_hashes.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"packages/reflex-components-core/src/reflex_components_core/core/helmet.pyi": "7fd81a99bde5b0ff94bb52523597fd5c",
2121
"packages/reflex-components-core/src/reflex_components_core/core/html.pyi": "753d6ae315369530dad450ed643f5be6",
2222
"packages/reflex-components-core/src/reflex_components_core/core/sticky.pyi": "ba60a7d9cba75b27a1133bd63a9fbd59",
23-
"packages/reflex-components-core/src/reflex_components_core/core/upload.pyi": "17775edb94cc804686ae4cd873584810",
23+
"packages/reflex-components-core/src/reflex_components_core/core/upload.pyi": "48bccd1cf1cedaf24503e7dbd2c0b02b",
2424
"packages/reflex-components-core/src/reflex_components_core/core/window_events.pyi": "cab827931770be082cd1598a9908abbc",
2525
"packages/reflex-components-core/src/reflex_components_core/datadisplay/__init__.pyi": "c96fed4da42a13576d64f84e3c7cb25c",
2626
"packages/reflex-components-core/src/reflex_components_core/el/__init__.pyi": "f09129ddefb57ab4c7769c86dc9a3153",

tests/units/components/core/test_upload.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
from typing import Any, cast
22

33
import pytest
4-
from reflex_base.event import EventChain, EventHandler, EventSpec
4+
from reflex_base.event import EventChain, EventHandler, EventSpec, parse_args_spec
55
from reflex_base.vars.base import LiteralVar, Var
66
from reflex_components_core.core.upload import (
7+
GhostUpload,
78
StyledUpload,
89
Upload,
910
UploadNamespace,
@@ -76,6 +77,14 @@ def test__on_drop_spec():
7677
assert isinstance(_on_drop_spec(LiteralVar.create([])), tuple)
7778

7879

80+
@pytest.mark.parametrize("component", [Upload, GhostUpload])
81+
def test_on_drop_rejected_uses_file_rejection_payload_spec(component):
82+
rejected_spec = component.get_event_triggers()["on_drop_rejected"]
83+
placeholders, _ = parse_args_spec(rejected_spec)
84+
85+
assert placeholders[0]._var_type == list[dict[str, Any]]
86+
87+
7988
def test_upload_files_chunk_requires_background():
8089
with pytest.raises(TypeError) as err:
8190
event.resolve_upload_chunk_handler_param(

0 commit comments

Comments
 (0)