Skip to content

Commit

Permalink
chore: Update EnterAccountDetails component with password validation …
Browse files Browse the repository at this point in the history
…and error handling
  • Loading branch information
IZUMI-Zu committed Aug 12, 2024
1 parent 6b13546 commit 839e2b1
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 67 deletions.
142 changes: 75 additions & 67 deletions EnterAccountDetails.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

import React, {useCallback, useState} from "react";
import {View} from "react-native";
import {Button, IconButton, Menu, Portal, Text, TextInput} from "react-native-paper";
import {Button, IconButton, Menu, Text, TextInput} from "react-native-paper";
import Toast from "react-native-toast-message";
import PropTypes from "prop-types";

Expand Down Expand Up @@ -42,6 +42,14 @@ const EnterAccountDetails = ({onClose, onAdd, validateSecret}) => {
}, []);

const handleAddAccount = useCallback(() => {
if (accountName.trim() === "") {
setAccountNameError("Account Name is required");
}

if (secretKey.trim() === "") {
setSecretError("Secret Key is required");
}

if (accountName.trim() === "" || secretKey.trim() === "") {
Toast.show({
type: "error",
Expand Down Expand Up @@ -79,77 +87,77 @@ const EnterAccountDetails = ({onClose, onAdd, validateSecret}) => {

const handleAccountNameChange = useCallback((text) => {
setAccountName(text);
setAccountNameError(text.trim() !== "" ? "" : "Account Name is required");
}, []);
if (accountNameError) {
setAccountNameError("");
}
}, [accountNameError]);

return (
<Portal>
<View style={styles.container}>
<View style={styles.content}>
<View style={styles.header}>
<Text style={styles.title}>Add Account</Text>
<IconButton
icon="close"
size={24}
onPress={onClose}
style={styles.closeButton}
/>
</View>
<TextInput
label="Account Name"
value={accountName}
onChangeText={handleAccountNameChange}
error={!!accountNameError}
style={styles.input}
mode="outlined"
<View style={styles.container}>
<View style={styles.content}>
<View style={styles.header}>
<Text style={styles.title}>Add Account</Text>
<IconButton
icon="close"
size={24}
onPress={onClose}
style={styles.closeButton}
/>
<TextInput
label="Secret Key"
value={secretKey}
onChangeText={handleSecretKeyChange}
secureTextEntry={!showPassword}
error={!!secretError}
style={styles.input}
mode="outlined"
right={
<TextInput.Icon
icon={showPassword ? "eye-off" : "eye"}
onPress={() => setShowPassword(!showPassword)}
/>
</View>
<TextInput
label="Account Name"
value={accountName}
onChangeText={handleAccountNameChange}
error={!!accountNameError}
style={styles.input}
mode="outlined"
/>
<TextInput
label="Secret Key"
value={secretKey}
onChangeText={handleSecretKeyChange}
secureTextEntry={!showPassword}
error={!!secretError}
style={styles.input}
mode="outlined"
right={
<TextInput.Icon
icon={showPassword ? "eye-off" : "eye"}
onPress={() => setShowPassword(!showPassword)}
/>
}
/>
<View style={styles.buttonContainer}>
<Menu
visible={visible}
onDismiss={closeMenu}
anchor={
<Button
onPress={openMenu}
mode="outlined"
icon="chevron-down"
contentStyle={styles.menuButtonContent}
style={styles.menuButton}
>
{selectedItem}
</Button>
}
/>
<View style={styles.buttonContainer}>
<Menu
visible={visible}
onDismiss={closeMenu}
anchor={
<Button
onPress={openMenu}
mode="outlined"
icon="chevron-down"
contentStyle={styles.menuButtonContent}
style={styles.menuButton}
>
{selectedItem}
</Button>
}
contentStyle={styles.menuContent}
>
<Menu.Item onPress={() => handleMenuItemPress("Time based")} title="Time based" />
<Menu.Item onPress={() => handleMenuItemPress("Counter based")} title="Counter based" />
</Menu>
<Button
mode="contained"
onPress={handleAddAccount}
style={styles.addButton}
labelStyle={styles.buttonLabel}
>
Add Account
</Button>
</View>
contentStyle={styles.menuContent}
>
<Menu.Item onPress={() => handleMenuItemPress("Time based")} title="Time based" />
<Menu.Item onPress={() => handleMenuItemPress("Counter based")} title="Counter based" />
</Menu>
<Button
mode="contained"
onPress={handleAddAccount}
style={styles.addButton}
labelStyle={styles.buttonLabel}
>
Add Account
</Button>
</View>
</View>
</Portal>
</View>
);
};

Expand All @@ -160,7 +168,7 @@ const styles = {
alignItems: "center",
},
content: {
width: "90%",
width: "100%",
borderRadius: 10,
padding: 20,
backgroundColor: "#F5F5F5",
Expand Down
11 changes: 11 additions & 0 deletions TotpDatabase.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,17 @@ CREATE TABLE accounts (
await db.execAsync(`PRAGMA user_version = ${DATABASE_VERSION}`);
}

export async function clearDatabase(db) {
try {
await db.execAsync("DELETE FROM accounts");
await db.execAsync("DELETE FROM sqlite_sequence WHERE name='accounts'");
await db.execAsync("PRAGMA user_version = 0");
return true;
} catch (error) {
return false;
}
}

const generateToken = (secretKey) => {
if (secretKey !== null && secretKey !== undefined && secretKey !== "") {
try {
Expand Down

0 comments on commit 839e2b1

Please sign in to comment.