Add encrypted storage support for embedded webview in android (#42)

Part of `MTM NYM VPN Android app`

Co-authored-by: pranavjadhav007 <jadhavpranav89@gmail.com>
Co-authored-by: Pranav <jadhavpranav89@gmail.com>
Reviewed-on: LaconicNetwork/laconic-wallet-web#42
This commit is contained in:
2025-08-19 11:25:11 +00:00
co-authored by pranav
parent 2feec2db18
commit d8d100535e
4 changed files with 30 additions and 6 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "web-wallet", "name": "web-wallet",
"version": "0.1.7-nym-0.1.2", "version": "0.1.7-nym-0.1.3",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@cerc-io/registry-sdk": "^0.2.5", "@cerc-io/registry-sdk": "^0.2.5",
+9
View File
@@ -3,6 +3,15 @@ declare global {
interface Window { interface Window {
// Android bridge callbacks for signature and accounts related events // Android bridge callbacks for signature and accounts related events
Android?: { Android?: {
// Store a key-value pair securely in encrypted storage
setItem(key: string, value: string): boolean;
// Retrieve a value by key from encrypted storage
getItem(key: string): string | null;
// Remove a key-value pair from encrypted storage
removeItem(key: string): boolean;
// Called when signature is successfully generated // Called when signature is successfully generated
onSignatureComplete?: (signature: string) => void; onSignatureComplete?: (signature: string) => void;
+18 -3
View File
@@ -1,13 +1,28 @@
const setInternetCredentials = (name:string, username:string, password:string) => { const setInternetCredentials = (name:string, username:string, password:string) => {
localStorage.setItem(name, password); if (window.Android?.setItem) {
window.Android.setItem(name, password);
} else {
localStorage.setItem(name, password);
}
}; };
const getInternetCredentials = (name:string) : string | null => { const getInternetCredentials = (name:string) : string | null => {
return localStorage.getItem(name); if (window.Android?.getItem) {
const result = window.Android.getItem(name);
// Normalize undefined to null to match localStorage behavior
return result === undefined ? null : result;
} else {
return localStorage.getItem(name);
}
}; };
const resetInternetCredentials = (name:string) => { const resetInternetCredentials = (name:string) => {
localStorage.removeItem(name); if (window.Android?.removeItem) {
window.Android.removeItem(name);
} else {
localStorage.removeItem(name);
}
}; };
export { export {