[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gambas-bugtracker] Bug #3169: Native support for Browser LocalStorage/SessionStorage in gb.web.gui


http://gambaswiki.org/bugtracker/edit?object=BUG.3169&from=L21haW4-

Omar MORENO reported a new bug.

Summary
-------

Native support for Browser LocalStorage/SessionStorage in gb.web.gui

Type             : Request
Priority         : High
Gambas version   : Master
Product          : Web components


Description
-----------

Currently, when developing applications with gb.web.gui, there is no native way to interact with browser storage (LocalStorage or SessionStorage).

This is critical for applications requiring:

    Persistent hardware/browser identification (Device Tokens) for security purposes.

    Persistence of user settings without relying solely on server sessions.

    Security token management that survives browser restarts.

Presently, we must resort to manually injecting JavaScript and synchronizing data through _Change events in hidden WebTextBox controls. This leads to timing issues (race conditions) and code that is difficult to maintain. Implementing this would make Gambas WebForm much more competitive against modern frameworks (React, Vue, etc.) by facilitating client-side state management while maintaining the simplicity of the Gambas language.

Proposal:
Implement a class within WebForm or WebSession to allow:

    WebForm.Storage.Set(Key, Value)

    WebForm.Storage.Get(Key)

    WebForm.Storage.Delete(Key)

Thank you for your time and for this great language.


System information
------------------

[System]
Gambas=3.21.99 2f9f910 (master)
OperatingSystem=Linux
Distribution=Linux Mint 22.3 (Zena)
Kernel=6.8.0-111-generic
Architecture=x86_64
Cores=4
Memory=7639M
Language=es_ES.utf-8
Platform=x11
Desktop=XFCE
DesktopResolution=96
DesktopScale=7
WidgetTheme=mint-l
Font=Ubuntu Sans,10
DarkTheme=False
[Programs]
dpkg=Programa de gestión de paquetes de Debian `dpkg' versión 1.22.6 (amd64).
gcc=gcc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0
git=git version 2.43.0
msgmerge=msgmerge (GNU gettext-tools) 0.21
[Libraries]
Cairo=libcairo.so.2.11800.0
Curl=libcurl.so.4.8.0
DBus=libdbus-1.so.3.32.4
GDK2=libgdk-x11-2.0.so.0.2400.33
GDK3=libgdk-3.so.0.2409.32
GStreamer=libgstreamer-1.0.so.0.2402.0
GTK+2=libgtk-x11-2.0.so.0.2400.33
GTK+3=libgtk-3.so.0.2409.32
OpenGL=libGL.so.1.7.0
Poppler=libpoppler.so.134.0.0
QT5=libQt5Core.so.5.15.13
QT6=libQt6Core.so.6.4.2
RSvg=librsvg-2.so.2.50.0
SDL=libSDL2-2.0.so.0.3000.0
SQLite3=libsqlite3.so.0.8.6
[Environment]
CLUTTER_BACKEND=x11
COMPIZ_CONFIG_PROFILE=mint
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DESKTOP_SESSION=xfce
DISPLAY=:0.0
GB_GUI=gb.gtk3
GDMSESSION=xfce
GDM_LANG=es_ES
GTK3_MODULES=xapp-gtk3-module
GTK_MODULES=gail:atk-bridge
HOME=<home>
LANG=es_ES.utf-8
LANGUAGE=es_ES.utf-8
LC_ALL=es_ES.utf-8
LOGNAME=<user>
PATH=<home>/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
PWD=<home>
QT_ACCESSIBILITY=1
QT_LOGGING_RULES=*.debug=false
SESSION_MANAGER=local/<hostname>:@/tmp/.ICE-unix/1885,unix/<hostname>:/tmp/.ICE-unix/1885
SHELL=/bin/bash
SHLVL=0
SSH_AGENT_PID=2028
SSH_AUTH_SOCK=/tmp/ssh-J47ayYNaanUz/agent.2027
TZ=:/etc/localtime
USER=<user>
XAUTHORITY=<home>/.Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-xfce:/etc/xdg
XDG_CURRENT_DESKTOP=XFCE
XDG_DATA_DIRS=/usr/share/xfce4:<home>/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/<user>
XDG_MENU_PREFIX=xfce-
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_SESSION_CLASS=user
XDG_SESSION_DESKTOP=xfce
XDG_SESSION_ID=c2
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SESSION_TYPE=x11
XDG_VTNR=7



----[ Gambas bugtracker-list is hosted by https://www.hostsharing.net ]----