Arrastrar, soltar y «abrir con»
Las tres vías por las que un fichero entra en tu aplicación sin que nadie navegue por un diálogo — y la que solo funciona si la registras en el instalador.
Las tres vías
Arrastrar, que es la fácil
Tauri emite eventos de arrastre sobre la ventana, y lo único que hay que cuidar es la parte visual:
- Avisar al entrar. Un borde, un fondo, algo que diga «suelta aquí». Sin eso, el usuario no sabe si la aplicación acepta lo que lleva.
- Y avisar de si vale. Si tu aplicación solo abre cierto tipo de fichero, la señal debería distinguir «suelta aquí» de «esto no lo puedo abrir» antes de soltar.
- Distinguir zonas, si las hay. Soltar sobre un panel puede significar algo distinto que soltar sobre otro.
El error típico es no dar ninguna señal, con lo que la función existe y el usuario no la descubre nunca.
Abrir con: la que depende del instalador
La más valiosa y la que más gente deja a medias, porque tiene una parte que no está en tu código:
El paso 4 se olvida casi siempre, y produce un fallo muy visible: el usuario abre un fichero, la aplicación aparece, abre otro, y no ocurre nada — o peor, se abre una segunda ventana con su propia copia del estado.
Y va unido a la instancia única: si tu aplicación debe tener una sola, hay que resolverlo, y es el mismo mecanismo que recibe la ruta del segundo intento de apertura.
Validar lo que entra
Un fichero que llega por estas vías es entrada no confiable, igual que el del nivel 39.4:
- La extensión no dice qué es. Alguien puede renombrar cualquier cosa. Comprueba el contenido antes de tratarlo como lo que dice ser.
- Puede ser enorme. Nivel 40.3: no lo cargues entero sin mirar el tamaño.
- Puede ser un directorio, si el usuario arrastra una carpeta.
- Y puede haber muchos a la vez. Arrastrar cien ficheros es una acción de un segundo para el usuario y una operación larga para ti.
Y una nota de la fase V: estas vías dan a tu aplicación acceso a un fichero fuera de cualquier ámbito declarado, porque el permiso viene de la acción del usuario. Eso está bien y hay que ser consciente: el frontend no debería recibir esa ruta, sino el resultado de abrirla — es el nivel 40.1 aplicado a lo que entra por la puerta.