szimek / sharedrop

Easy P2P file transfer powered by WebRTC - inspired by Apple AirDrop
https://www.sharedrop.io
MIT License
9.94k stars 725 forks source link

Allow to send multiple files at once #92

Closed valoricDe closed 3 years ago

valoricDe commented 3 years ago

@iBobik requested it https://github.com/cowbell/sharedrop/issues/64 and here it is 🎉 @GO3LIN Do you want to lay and hand on this? It could still be polished to use the stream support of the jszip library. @szimek Something I should change?

szimek commented 3 years ago

@valoricDe That's awesome!

I deployed it to https://staging.sharedrop.io/ and it seems to work.

A few questions:

UPDATE:

I pushed my changed to https://github.com/cowbell/sharedrop/commits/multiple-file-uploads and deployed it to staging. I'll take a look at some basic CSS fixes and then it should be good to go on production!

Also, I really hope to find enough time to try to rewrite it using Next.js and try to use webtorrent library rather than the really old PeerJS with a custom protocol.

valoricDe commented 3 years ago

Hi sry lot to work on. Yes the limits are kind of arbitrary but on my strong macbook 4 50mb files already need 3-4minutes to zip. So I thought it is a good compromise to not accidentically lock yourself when choosing to big files.

Ideally we would use the streaming interface of the jszip package but a lot of the current implementation is based on a file transmission. I would have changed it but I'm not really experienced with ember as I only use ReactJS with Gatbsy or NextJS.

szimek commented 3 years ago

@valoricDe No worries! I deployed your and my changes to https://staging.sharedrop.io/. It's slow, but it works! :) I asked a friend to do some small CSS fixes and once it's done, I'll deploy it to production.

I haven't really used Ember in a very long time either (this app was released over 6 years ago) and that's one of the reasons why I'm considering rewriting it in React. The other is that I couldn't find much info about accessibility in Ember and I don't really want to write accessible components like modals and tooltips from scratch, when there are plenty of existing solutions in React.