UI State Storage & Cleanup

Labels
AJAX(112) App Studio(8) Apple(1) Application Builder(245) Application Factory(207) ASP.NET(95) ASP.NET 3.5(45) ASP.NET Code Generator(72) ASP.NET Membership(28) Azure(18) Barcode(2) Barcodes(3) BLOB(18) Business Rules(1) Business Rules/Logic(140) BYOD(13) Caching(2) Calendar(5) Charts(29) Cloud(14) Cloud On Time(2) Cloud On Time for Windows 7(2) Code Generator(54) Collaboration(11) command line(1) Conflict Detection(1) Content Management System(12) COT Tools for Excel(26) CRUD(1) Custom Actions(1) Data Aquarium Framework(122) Data Sheet(9) Data Sources(22) Database Lookups(50) Deployment(22) Designer(177) Device(1) DotNetNuke(12) EASE(20) Email(6) Features(101) Firebird(1) Form Builder(14) Globalization and Localization(6) How To(1) Hypermedia(2) Inline Editing(1) Installation(5) JavaScript(20) Kiosk(1) Low Code(3) Mac(1) Many-To-Many(4) Maps(6) Master/Detail(36) Microservices(4) Mobile(63) Mode Builder(3) Model Builder(3) MySQL(10) Native Apps(5) News(18) OAuth(9) OAuth Scopes(1) OAuth2(13) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(11) PKCE(2) Postgre SQL(1) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(184) Reports(48) REST(29) RESTful(29) RESTful Workshop(15) RFID tags(1) SaaS(7) Security(81) SharePoint(12) SPA(6) SQL Anywhere(3) SQL Server(26) SSO(1) Stored Procedure(4) Teamwork(15) Tips and Tricks(87) Tools for Excel(2) Touch UI(93) Transactions(5) Tutorials(183) Universal Windows Platform(3) User Interface(338) Video Tutorial(37) Web 2.0(100) Web App Generator(101) Web Application Generator(607) Web Form Builder(40) Web.Config(9) Workflow(28)
Archive
Blog
Wednesday, April 7, 2021PrintSubscribe
UI State Storage & Cleanup

The state of the user interface in the apps built with Touch UI is maintained on the client. Authenticated users find the search criteria, filters, sort expressions, view styles, theme choice, and many other traces of their interactions with the app to be persisted between sessions. This makes it easy to pick up where you left off on the same device even when the browser window is closed and opened again. The app framework uses the local storage of the web view for this purpose. Each identity used to sign into the app will have its own UI state.

Touch UI can be configured to keep the user interface state in the session storage of the web view instead. The user interface state will persist while the browser window is open. App users start with the clean slate when the session is started in the new window.

Set the option ui.state.storage to session in ~/touch-settings.json configuration file to enable this behavior of the UI.


User identities and avatars are still persisted in the local storage to avoid having the user to sign in while moving between the app pages and browsing sessions. So are the global choices such as the theme and the presence of the sidebar.

Another related option allows controlling whether the user interface state is cleared when the user logs in or logs out. Option ui.state.clear is set to never by default. Developers may choose to clear the user-specific application state on the client upon logout. Value always will force the app to clear the UI state both on login and logout.

If the app is expected to be used on the shared devices, then setting the UI state storage to session and having it cleared always will eliminate any potential data exposure that can be exploited by the individuals with the physical access to the device. Recommend the end users to sign out and to close the browser or app when not in use.

Cloud On Time app executes the front end of the applications created with Code On Time from the locally stored HTML pages. Neither localStorage nor the sessionStorage objects are available in the web view. The entire set of local data specific to the user is removed from the device when the user signs out.

Touch UI application in the screenshot is running as the Progressive Web App and behaves just like the app in the web browser. It will retain the minimized sidebar, the data filter, and the reading pane mode when restarted by the user if the options ui.state.storage and ui.state.clear are not specified in the application configuration.