tauri-apps / tauri

Build smaller, faster, and more secure desktop applications with a web frontend.
https://tauri.app
Apache License 2.0
82.08k stars 2.47k forks source link

[bug] `<input accept="audio/mpeg" type="file" />` does not filter file types #9158

Open bradleat opened 6 months ago

bradleat commented 6 months ago

Describe the bug

Similar to https://github.com/tauri-apps/tauri/issues/6915.

<input accept="audio/mpeg" type="file" /> does not filter for the right type of files on macOS 14.3

Reproduction

Just a react app with <input accept="audio/mpeg" type="file" /> should do it.

Expected behavior

It should only allow mp3 files to be selected on on macOS 14.3

Full tauri info output

WARNING: no lock files found, defaulting to npm

[✔] Environment
    - OS: Mac OS 14.3.0 X64
    ✔ Xcode Command Line Tools: installed
    ✔ rustc: 1.74.0 (79e9716c9 2023-11-13)
    ✔ cargo: 1.74.0 (ecb9851af 2023-10-18)
    ✔ rustup: 1.26.0 (5af9b9484 2023-04-05)
    ✔ Rust toolchain: stable-aarch64-apple-darwin (default)
    - node: 20.4.0
    - npm: 9.7.2

[-] Packages
    - tauri [RUST]: 1.6.1
    - tauri-build [RUST]: 1.5.1
    - wry [RUST]: 0.24.7
    - tao [RUST]: 0.16.7
    - @tauri-apps/api [NPM]: 1.5.3
    - @tauri-apps/cli [NPM]: 1.5.11

[-] App

Stack trace

No response

Additional context

No response

FabianLars commented 6 months ago

Same question i had in that other issue, could you test the same in Safari please?

bradleat commented 6 months ago

In Safari it works. It filters the file types.

Not Working in Tauri

Screenshot of it not working in Tauri

Working in Safari

Screenshot of it working in Safari

FabianLars commented 6 months ago

Thanks. So the issue we're dealing with here is that the apis we'd have to use to get the file types are private: https://github.com/WebKit/WebKit/blob/448446ef4d14d7648787ac0d062b2c759a1e935e/Source/WebKit/UIProcess/API/Cocoa/WKOpenPanelParameters.mm#L55-L72 which means using them would prevent the app from being accepted to the app store. 😮‍💨

We could add that behind a feature flag of course like we do for fullscreen and transparency but that's still super annoying of course.

p.s. I'd recommend to use tauri's dialog own dialog apis for this instead of the browser's native one. Those apis should have working filters. Main drawback of that is of course that you couldn't drop file onto the element as easily anymore (tauri has a custom drag drop implementation but it doesn't contain coordinates in v1)

FabianLars commented 6 months ago

/upstream tauri-apps/wry

bradleat commented 6 months ago

I'd appreciate a feature flag to enable the private file type API on MacOS. We are not so concerned about the App Store at this moment in time.

PavelLaptev commented 5 months ago

Looks like it also doesn't work on Windows

ryleu commented 2 months ago

image

Weirdly it seems to be working fine on linux? There are more non-image files in my Downloads folder that aren't showing up in the file picker.