-
Notifications
You must be signed in to change notification settings - Fork 37
FileService: a way to work with file at frontend #656
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
e92d4bc
to
f3ac0f6
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the contribution, it's surely a tricky API use case we could cover for future users. It needs some more love before we ship it.
f3ac0f6
to
762c992
Compare
@ddworak I have no idea when to revoke this URL. If you have some, feel free to share. |
9a7f575
to
93b95be
Compare
e223de8
to
414b03f
Compare
414b03f
to
53a6021
Compare
guide/guide/.js/src/main/scala/io/udash/web/guide/views/frontend/demos/FileInputDemo.scala
Show resolved
Hide resolved
guide/guide/.js/src/main/scala/io/udash/web/guide/views/frontend/demos/FileInputDemo.scala
Outdated
Show resolved
Hide resolved
guide/guide/.js/src/main/scala/io/udash/web/guide/views/frontend/demos/FileInputDemo.scala
Outdated
Show resolved
Hide resolved
53a6021
to
5e2b8ed
Compare
0d90a27
to
46da6eb
Compare
46da6eb
to
d950c0c
Compare
guide/guide/.js/src/main/scala/io/udash/web/guide/views/frontend/demos/FileInputDemo.scala
Outdated
Show resolved
Hide resolved
guide/guide/.js/src/main/scala/io/udash/web/guide/views/frontend/demos/FileInputDemo.scala
Show resolved
Hide resolved
d950c0c
to
9b86e13
Compare
9b86e13
to
0111442
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with minor rename, thanks!
The usecase of this code is something like this: let image that user is making a protonmail or any another application where content inside frontend (=browser storage) some secret user's data that shouldn't be exposed to backend. Secret key for example or anything like that. This code allows to developer to convert any `Seq[Array[Byte]]` from frontend to URL as simple call `FileService.createURL`, asynchronously convert any uploaded `File` to `Future[Array[Byte]]` as `FileService.asBytesArray`, or to `Array[Byte]` via `FileService.asSyncBytesArray` inside worker. Unfortunately scalatags doesn't support `download` attribute and I need to make it by hand. I've opened a PR[^1] to introduce it, but it might be a while until it is included to release. `FileService.asSyncBytesArray` is using `FileReaderSync` that is also missed inside scala-js-dom. I've opened a PR[^2] but it might be a while. Also, this draft API but it is supported by majority of modern browsers[^3]. [^1]: com-lihaoyi/scalatags#212 [^2]: scala-js/scala-js-dom#424 [^3]: https://caniuse.com/?search=FileReaderSync
0111442
to
9c1d9a2
Compare
@ddworak pushed renaming. |
The usecase of this code is something like this: let image that user is making a protonmail or any another application where content inside frontend (=browser storage) some secret user's data that shouldn't be exposed to backend. Secret key for example or anything like that.
This code allows to developer to convert any
Seq[Array[Byte]]
from frontend to URL as simple callFileService.createURL
, asynchronously convert any uploadedFile
toFuture[Array[Byte]]
asFileService.asBytesArray
, or toArray[Byte]
viaFileService.asSyncBytesArray
inside worker.Unfortunately scalatags doesn't support
download
attribute and I need to make it by hand. I've opened a PR1 to introduce it, but it might be a while until it is included to release.FileService.asSyncBytesArray
is usingFileReaderSync
that is also missed inside scala-js-dom. I've opened a PR2 but it might be a while. Also, this draft API but it is supported by majority of modern browsers3.Footnotes
https://github.com/lihaoyi/scalatags/pull/212 ↩
https://github.com/scala-js/scala-js-dom/pull/424 ↩
https://caniuse.com/?search=FileReaderSync ↩