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:
+1
-1
@@ -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",
|
||||||
|
|||||||
Vendored
+9
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -40,12 +40,12 @@ export const useWebViewHandler = () => {
|
|||||||
try {
|
try {
|
||||||
// Get available networks data
|
// Get available networks data
|
||||||
const networksData = await retrieveNetworksData();
|
const networksData = await retrieveNetworksData();
|
||||||
|
|
||||||
if (!networksData || networksData.length === 0) {
|
if (!networksData || networksData.length === 0) {
|
||||||
window.Android?.onAccountError?.('No networks configured');
|
window.Android?.onAccountError?.('No networks configured');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create wallet using the provided mnemonic if it doesn't exist
|
// Create wallet using the provided mnemonic if it doesn't exist
|
||||||
const walletExists = await isWalletCreated();
|
const walletExists = await isWalletCreated();
|
||||||
if (!walletExists) {
|
if (!walletExists) {
|
||||||
|
|||||||
+18
-3
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user