In preparation for the workshop I wrote a router for the UI.
The main features are
URL based routing
URLs support parameters
Child routes
Deep linking
Mouse button 4 and 5 can be used to go back/forwards like in the browser
Navigation cancelling
Navigation forwarding
(Partial) view model recycling
The fact that it uses URLs is so that in the future users can link to a profile directly using an URI like artemis://workshop/profile/{guid}. Artemis can associate to that protocol and bob's your uncle.
The URL isn't meant to be entered manually like in a browser, although you can currently use the test Workshop to do so for debugging.
I've updated the existing VMs to use the new routing, the settings tabs are each their own route.
The releases tab even supporting deep linking to a specific release, this is used by the release notifications.
The profile editor also uses the router to navigate between profiles.
I moved to using FluentAvalonia's frame which supports some nice animations. This did highlight some performance issues that I mostly addressed in this PR. The only remaining issue is the profile editor the first time it opens.
In preparation for the workshop I wrote a router for the UI.
The main features are
The fact that it uses URLs is so that in the future users can link to a profile directly using an URI like
artemis://workshop/profile/{guid}
. Artemis can associate to that protocol and bob's your uncle.The URL isn't meant to be entered manually like in a browser, although you can currently use the test Workshop to do so for debugging.
I've updated the existing VMs to use the new routing, the settings tabs are each their own route. The releases tab even supporting deep linking to a specific release, this is used by the release notifications. The profile editor also uses the router to navigate between profiles.
I moved to using FluentAvalonia's frame which supports some nice animations. This did highlight some performance issues that I mostly addressed in this PR. The only remaining issue is the profile editor the first time it opens.