I might be putting my hand up to maintain it.
This is awesome, I am also a heavy user of edgee:slingshot
. Works reliably ever since.
I might be putting my hand up to maintain it.
This is awesome, I am also a heavy user of edgee:slingshot
. Works reliably ever since.
Yeah, that package has been working fine for years…knock on wood
Ok, let’s do this. I’ve looked through the code, and it’s simple enough.
I have forked it to https://github.com/Back2bikes/meteor-slingshot
I might review the old PR’s first and merge as many of those as make sense.
Please let me know if you would like to help.
I am getting stuck in now - has anyone had success in doing an upload progress bar in React? I am clearly missing something on how to do it.
I have done it but im not in my pc rigth now, ill share it tomorrow with you.
This is what I’ve:
First I declare a Slingshot uploader:
const uploader = new Slingshot.Upload('File-Uploader');
And I wrap the uploader.progress within tracker that would call the progress function passed.
const uploadToS3 = (file, uploader, progress) =>
new Promise((resolve, reject) => {
uploader.send(file, (error, s3Url) => {
if (error) {
console.log(error);
reject(error);
} else {
resolve({ fileName: file.name, s3Url, type: file.type });
}
});
if (progress && typeof progress === 'function') {
Tracker.autorun(() => {
progress(uploader.progress());
});
}
});
And from the UI, the progress function will get called with a percentage change each time it changes. When this function gets called, I set the state of the progress react component:
progress: value => {
console.log(`current value: ${value}`);
if (!isNaN(value)) {
this.setState({
progress: value * 100
});
}
}
I hope that helps.
Fun fact, Ryan Dahl, the creator of node, stated that the real-time progress bar implementation was his motivation for creating NodeJS in the first place.
@alawi Thanks, that did the trick… but there is no need to wrap a promise around the uploader.send
, it worked fine without that.
One question though, is Tracker.autorun()
the right way for React? I’m used to using withTracker
, and I wonder if there is way to use that instead?
@pmogollon I would be interested to see your approach
That depends on the use-case. If the functionality has a limited scope, like a component or a tree of components, I would always prefer withTracker()
, so tracking will stop once the component(s) are unmounted.
If you want do track changes at a “central” location in your app, e.g. to check the connection status, Tracker.autorun() comes in handy.
Last time I tried, the cors has been a problem for me too.
I think several among us would be glad to loearn how you solved it
This package is good, though I might get some useful update to make the progress / resume / pause thing a little bit easier and straightforward, mainly when not using blaze
You have to set-up CORS in the bucket settings, under “Permissions”. You can find the correct CORS config in the slingshot docs.
Also, you have to disable “Block public access”:
@waldgeist has provided help above, which is how I solved it too.
And yes, I am planning on updating the docs and providing some examples to make it easier to get started. I have thought about using axios
instead of the raw XMLHttpRequest
, although that starts introducing module dependencies. Feel free to offer opinions on that
The repo is now at https://github.com/Back2bikes/meteor-slingshot. I have merged the old PR’s from 6 years ago. Tests needed
@storyteller Garik has come back to me and said we can do a transfer. We will meet at the weekend. The old organisation doesn’t exist any more. We can either move it to Back2bikes (A bicycle recycling NFP that I run), or we can go to MCP - what do you think?
I vote for MCP, slingshot is a power package just like Meteor account, it makes the meteor ecosystem pleasure to work with.
But I think MCP will soon need a shared funding account with a voting ranked backlog of tasks given the growing number of packages under its umbrella.
Right, sure. Is MCP funded, or you think it should be?
I think it should be. It seems it has a significant scope of work to run on volunteer/donation basis, at least to me. But with shared funding, it will need some basic governance as well.
I also vote for MCP.
If you want to transfer it to MCP I’m for it. Let’s list people who want to maintain it here and I’ll start the process.
Count me in that list, I think this package should be well maintained.
@storyteller let’s do this. Myself and @alawi are in, and possibly @waldgeist ?
What are the next steps ? (I didn’t talk to @gsuess yet, but will follow up with him)
I need confirmation and GitHub usernames from @alawi, @waldgeist and @gsuess
I have created the team, next step after that is moving/cloning the repository.