chromelyapps / Chromely

Build Cross Platform HTML Desktop Apps on .NET using native GUI, HTML5, JavaScript, CSS, Owin, AspNetCore (MVC, RazorPages, Blazor)
MIT License
2.99k stars 279 forks source link

Notification of CEF Binaries download #347

Closed wwarby closed 2 years ago

wwarby commented 2 years ago

Just gonna throw an idea out here and see if it sticks. It bothered me that occasionally I would update my project and when I started it, I'd see a couple of HTML files open in a browser as the updated Chromely instance pulled down it's binaries. The behaviour is fine, it's just the UI presentation that's a bit naff. I just went looking to see if I could counteract this behaviour and I noticed there's a setting on CefDownloadOptions for DownloadSilently which I've just set to true. This does get rid of the HTML pages it seems, but the app takes a long time to load with no feedback to the user. As such neither of the out-of-the-box options for notifying the user of what's going when a download is underway on are particularly pleasant in terms of user experience.

As a potentially quick win, it would be nice if Chromely provided some kind of event that could be hooked into to find out that a download is required and has been started, and another when it is complete. With that, the developer would at least be able to to present their own custom UI to keep the user informed in whatever way they choose.

Perhaps a better solution though would be for the default behaviour to be a hook into the OS notification system instead of using an HTML page opened in a browser. That would make the user experience much nicer. In an ideal world you'd be able to customise the text shown in the notifications, something like this for example:

var config = DefaultConfiguration.CreateForRuntimePlatform();
config.CefDownloadOptions.DownloadingNotificationStartedTitle = "Downloading Update for [AppName]";
config.CefDownloadOptions.DownloadingNotificationStartedMessage = "[AppName] is updating, and will start shortly. Please be patient.";
config.CefDownloadOptions.DownloadingNotificationErrorTitle = "[AppName] Update Failed.";
config.CefDownloadOptions.DownloadingNotificationErrorMessage = "{error_message}";

I appreciate it's not the most important feature by any stretch, but it does make the UX feel a little clunky at the moment. And yes, I do know I can take full control of the download process if I want - I'd just rather not have to. It does feel like an implementation detail of Chromely that I should be able to avoid getting down and dirty with if possible.

mattkol commented 2 years ago

@wwarby I think it is a good idea.

at least be able to to present their own custom UI

As long as the default UI is HTML. The problem usually comes with the UI aspect. As long as developers know they need to provide their custom UI (if they need to), I do not see why not.