diff --git a/app/client/mobile/src/settings/Settings.tsx b/app/client/mobile/src/settings/Settings.tsx
index 7c2af896..b2d67d7a 100644
--- a/app/client/mobile/src/settings/Settings.tsx
+++ b/app/client/mobile/src/settings/Settings.tsx
@@ -17,11 +17,13 @@ export function Settings({ showLogout }: { showLogout: boolean }) {
const [sealing, setSealing] = useState(false);
const [auth, setAuth] = useState(false);
const [clear, setClear] = useState(false);
+ const [change, setChange] = useState(false);
const [sealDelete, setSealDelete] = useState(false);
const [sealReset, setSealReset] = useState(false);
const [sealConfig, setSealConfig] = useState(false);
const [savingAuth, setSavingAuth] = useState(false);
const [savingSeal, setSavingSeal] = useState(false);
+ const [savingChange, setSavingChange] = useState(false);
const [savingDetails, setSavingDetails] = useState(false);
const [savingRegistry, setSavingRegistry] = useState(false);
const [savingNotifications, setSavingNotifications] = useState(false);
@@ -31,6 +33,27 @@ export function Settings({ showLogout }: { showLogout: boolean }) {
const [confirmingAuth, setConfirmingAuth] = useState(false);
const [authMessage, setAuthMessage] = useState('');
+ const changeLogin = () => {
+ actions.setPassword('');
+ actions.setConfirm('');
+ setChange(true);
+ }
+
+ const saveChange = async () => {
+ if (!savingChange) {
+ setSavingChange(true)
+ try {
+ await actions.setLogin()
+ setChange(false);
+ } catch (err) {
+ console.log(err)
+ setChange(false);
+ setAlert(true);
+ }
+ setSavingChange(false)
+ }
+ }
+
const selectImage = async () => {
try {
const img = await ImagePicker.openPicker({ mediaType: 'photo', width: 256, height: 256, cropping: true, cropperCircleOverlay: true, includeBase64: true });
@@ -345,7 +368,7 @@ export function Settings({ showLogout }: { showLogout: boolean }) {
setRegistry(!state.config.pushEnabled)}>
{state.strings.enableNotifications}
-
+
@@ -370,7 +393,7 @@ export function Settings({ showLogout }: { showLogout: boolean }) {
- manageSeal}>
+
{state.strings.changeLogin}
@@ -817,6 +840,108 @@ export function Settings({ showLogout }: { showLogout: boolean }) {
+ setChange(false)}>
+
+
+
+
+ { state.strings.changeLogin }
+ setChange(false)} />
+ }
+ right={
+ !state.checked ? (
+
+ ) : state.taken ? (
+
+ ) : (
+ <>>
+ )
+ }
+
+ onChangeText={value => actions.setHandle(value)}
+ />
+ }
+ right={
+ showPassword ? (
+ setShowPassword(false)}
+ />
+ ) : (
+ setShowPassword(true)}
+ />
+ )
+ }
+ onChangeText={value => actions.setPassword(value)}
+ />
+ }
+ right={
+ showPassword ? (
+ setShowConfirm(false)}
+ />
+ ) : (
+ setShowConfirm(true)}
+ />
+ )
+ }
+ onChangeText={value => actions.setConfirm(value)}
+ />
+
+
+
+
+
+
+
+
+
+
>
);
}
diff --git a/app/client/mobile/src/settings/useSettings.hook.ts b/app/client/mobile/src/settings/useSettings.hook.ts
index 4a4dad3b..7739c78f 100644
--- a/app/client/mobile/src/settings/useSettings.hook.ts
+++ b/app/client/mobile/src/settings/useSettings.hook.ts
@@ -200,8 +200,13 @@ export function useSettings() {
} else {
debounce.current = setTimeout(async () => {
const { settings } = getSession()
- const available = await settings.getUsernameStatus(handle)
- updateState({ taken: !available, checked: true })
+ try {
+ const available = await settings.getUsernameStatus(handle)
+ updateState({ taken: !available, checked: true })
+ }
+ catch (err) {
+ console.log(err);
+ }
}, DEBOUNCE_MS)
}
},