After going through my now extremely strict testing, the first general stable release of Panel is now available! Thank you to everyone who supported me. Even if you just left a comment, it still means a lot to me. Download from the dashboard
Release notes
The Panel extension now actually works
Version info is now displayed in the dashboard
A token of celebration
The new release isn’t all. I might not even be able to call this my own success. Panel was only possible with the support of the community. In honor of everyone who helped out or even just commented, I have written a permanent message onto the WAVES blockchain.
This message contains the names of everyone who helped, gave feedback, or commented before now. It’s stored in a non-reissuable token, which there are only 17 of. 17 tokens representing 17 unique commenters before today. It’s permanently stored, at transaction Eyg92dWNoyCDKE7dEt3kp4gZWnnkGwRf6BeJ6J8bPPrE on the Waves blockchain.
Once again, thank you all for helping make Panel a reality.
Thanks! What do you mean by prepaid card though? I’m able to accept pretty much every type of credit/debit card through the Panel website. (Also if you end up being able to donate, I think it would only be fair if @Mohamed_Tamer also got a donation, since we worked together.)
You need to go to Object Properties, then uncheck the checkboxes next to the items. You can recover them by checking the box again, but once you close the tab or reload, they will be deleted.
I wonder
How is it working with just a function block that returns value (when fetching data from internet)
There is no event block (on got value)
Can you explain how is it working this way?
It starts a thread that makes the request, then adds it to a volatile variable when it’s done. The main thread simply waits for the variable to be updated. Here’s some code:
class FetchExample{
public volatile String fetchedValue;
// ...
public String GetFromInternet(String urlToGet){
this.fetchedValue = "";
new Thread(){ // create a thread for networking, main thread can't be used for networking
// ... make request and set fetchedValue to the request result as a string
}.start(); // start the thread
try{
while(this.fetchedValue == ""){
Thread.sleep(60); // check if the value is ready every 60 milliseconds
}
}catch(Exception e){/* error handling */} // catch errors
return this.fetchedValue; // return the value (this will only run when the while loop breaks, which is when the value has been fetched
}
}
I’ll think of adding something like that as an alternate method. My original idea was that you could put a loading screen or something while data is being fetched.