diff --git a/apps/mobile/src/views/Login/index.js b/apps/mobile/src/views/Login/index.js
deleted file mode 100644
index d0fc7d60a..000000000
--- a/apps/mobile/src/views/Login/index.js
+++ /dev/null
@@ -1,474 +0,0 @@
-/* import {useIsFocused} from '@react-navigation/native';
-import React, {createRef, useEffect, useState} from 'react';
-import {
- ActivityIndicator,
- BackHandler,
- Text,
- TouchableOpacity,
- View,
-} from 'react-native';
-import * as Animatable from 'react-native-animatable';
-import {TextInput} from 'react-native-gesture-handler';
-import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
-import {opacity, pv, SIZE, WEIGHT} from '../../common/common';
-import {Button} from '../../components/Button';
-import {useTracked} from '../../provider';
-import {ACTIONS} from '../../provider/actions';
-import {eSendEvent} from '../../services/eventManager';
-import {
- eCloseSideMenu,
- eOpenSideMenu,
- eSetModalNavigator,
- eStartSyncer,
- refreshNotesPage,
-} from '../../services/events';
-import {validatePass, validateUsername} from '../../services/validation';
-import {db, DDS, ToastEvent} from '../../utils/utils';
-import Seperator from '../../components/Seperator';
-
-export const Login = ({route, navigation}) => {
- const [state, dispatch] = useTracked();
- const {colors, isLoginNavigator} = state;
- const [status, setStatus] = useState('Logging in...');
- const _username = createRef();
- const [loggingIn, setLoggingIn] = useState(false);
- const [email, setEmail] = useState(null);
- const [password, setPassword] = useState(null);
- const [invalidEmail, setInvalidEmail] = useState(false);
- const [invalidPassword, setInvalidPassword] = useState(false);
- const [username, setUsername] = useState(null);
- const [invalidUsername, setInvalidUsername] = useState(false);
- const [secureEntry, setSecureEntry] = useState(true);
-
- const _email = createRef();
- const _pass = createRef();
- const _passContainer = createRef();
-
- const isFocused = useIsFocused();
-
- const handleBackPress = () => {
- return true;
- };
-
- useEffect(() => {
- eSendEvent(eCloseSideMenu);
- let backhandler;
- if (isFocused) {
- backhandler = BackHandler.addEventListener(
- 'hardwareBackPress',
- handleBackPress,
- );
- } else {
- if (backhandler) {
- backhandler.remove();
- backhandler = null;
- }
- }
-
- return () => {
- eSendEvent(eOpenSideMenu);
- if (!backhandler) return;
- backhandler.remove();
- backhandler = null;
- };
- }, [isFocused]);
-
- const login = async () => {
- if (
- !password ||
- password.length < 8 ||
- !username ||
- invalidPassword ||
- invalidUsername
- ) {
- ToastEvent.show('username or password is invalid', 'error');
- return;
- }
-
- setLoggingIn(true);
- _username.current.blur();
- _pass.current.blur();
- setStatus('Logging in...');
-
- try {
- let res = await db.user.login(username.toLowerCase(), password);
-
- if (res) {
- setStatus('Fetching data...');
- }
- } catch (e) {
- setTimeout(() => {
- ToastEvent.show(e.message, 'error');
- setLoggingIn(false);
- }, 500);
-
- return;
- }
-
- let user;
-
- try {
- user = await db.user.get();
- if (!user) throw new Error('Username or password incorrect');
- dispatch({type: ACTIONS.USER, user: user});
- dispatch({type: ACTIONS.SYNCING, syncing: true});
- setStatus('Syncing your notes...');
- await db.sync();
- eSendEvent(eStartSyncer);
- navigation.goBack();
- dispatch({type: ACTIONS.ALL});
- eSendEvent(refreshNotesPage);
- dispatch({type: ACTIONS.SYNCING, syncing: false});
- ToastEvent.show(`Logged in as ${username}`, 'success');
- } catch (e) {
- dispatch({type: ACTIONS.SYNCING, syncing: false});
- setLoggingIn(false);
- ToastEvent.show(e.message, 'error');
- }
- };
-
- useEffect(() => {
- if (isFocused) {
- dispatch({
- type: ACTIONS.HEADER_STATE,
- state: {
- type: null,
- menu: false,
- canGoBack: true,
- route: route,
- color: null,
- navigation: navigation,
- ind: !route.params.root,
- },
- });
- dispatch({
- type: ACTIONS.CONTAINER_BOTTOM_BUTTON,
- state: {
- visible: false,
- ind: !route.params.root,
- },
- });
- dispatch({
- type: ACTIONS.CONTAINER_STATE,
- state: {
- noSelectionHeader: false,
- },
- });
- dispatch({
- type: ACTIONS.HEADER_VERTICAL_MENU,
- state: false,
- });
-
- dispatch({
- type: ACTIONS.HEADER_TEXT_STATE,
- state: {
- heading: 'Login',
- ind: !route.params.root,
- },
- });
-
- dispatch({
- type: ACTIONS.CURRENT_SCREEN,
- screen: 'login',
- });
-
- dispatch({
- type: ACTIONS.SEARCH_STATE,
- state: {
- noSearch: true,
- ind: !route.params.root,
- },
- });
- if (!route.params.root) {
- eSendEvent(eSetModalNavigator, true);
- }
- }
- }, [isFocused]);
-
- return (
-
- {loggingIn ? (
-
-
-
-
- {status}
-
-
- ) : null}
-
- {loggingIn ? null : (
- <>
-
-
-
-
-
- {
- if (!invalidUsername) {
- _username.current.setNativeProps({
- style: {
- borderColor: colors.accent,
- },
- });
- }
- }}
- defaultValue={username}
- onBlur={() => {
- if (!validateUsername(username) && username?.length > 0) {
- setInvalidUsername(true);
- _username.current.setNativeProps({
- style: {
- borderColor: colors.errorText,
- },
- });
- } else {
- setInvalidUsername(false);
- _username.current.setNativeProps({
- style: {
- borderColor: colors.nav,
- },
- });
- }
- }}
- textContentType="username"
- onChangeText={(value) => {
- setUsername(value);
-
- if (invalidUsername && validateUsername(username)) {
- setInvalidUsername(false);
- _username.current.setNativeProps({
- style: {
- borderColor: colors.accent,
- },
- });
- }
- }}
- onSubmitEditing={() => {
- if (!validateUsername(username)) {
- setInvalidUsername(true);
- }
- }}
- style={{
- padding: pv,
- borderWidth: 1.5,
- borderColor: colors.nav,
- borderRadius: 5,
- fontSize: SIZE.sm,
- fontFamily: WEIGHT.regular,
- }}
- placeholder="Username"
- placeholderTextColor={colors.icon}
- />
-
-
- {invalidUsername ? (
-
- {' '}
- Username is invalid
-
- ) : null}
-
-
-
-
- {
- if (!invalidPassword) {
- _passContainer.current?.setNativeProps({
- style: {
- borderColor: colors.accent,
- },
- });
- }
- }}
- onBlur={() => {
- if (!validatePass(password) && password?.length > 0) {
- setInvalidPassword(true);
-
- _passContainer.current?.setNativeProps({
- style: {
- borderColor: colors.errorText,
- },
- });
- } else {
- setInvalidPassword(false);
- _passContainer.current?.setNativeProps({
- style: {
- borderColor: colors.nav,
- },
- });
- }
- }}
- onChangeText={(value) => {
- setPassword(value);
- if (invalidPassword && validatePass(password)) {
- setInvalidPassword(false);
-
- _passContainer.current.setNativeProps({
- style: {
- borderColor: colors.accent,
- },
- });
- }
- }}
- onSubmitEditing={() => {
- if (!validatePass(password)) {
- setInvalidPassword(true);
- _pass.current.setNativeProps({
- style: {
- color: colors.errorText,
- },
- });
- }
- }}
- style={{
- paddingVertical: pv,
- paddingHorizontal: 0,
- fontSize: SIZE.sm,
- fontFamily: WEIGHT.regular,
- width: '85%',
- maxWidth: '85%',
- }}
- secureTextEntry={secureEntry}
- placeholder="Password"
- placeholderTextColor={colors.icon}
- />
- {
- setSecureEntry(!secureEntry);
- }}
- style={{
- width: 25,
- }}
- color={secureEntry ? colors.icon : colors.accent}
- />
-
-
- {invalidPassword ? (
-
- {' '}
- Password is invalid
-
- ) : null}
-
-
-
-
-
-
- {
- navigation.navigate('Signup', {
- root: true,
- });
- }}
- activeOpacity={opacity}
- style={{
- alignSelf: 'center',
- }}>
-
- Don't have an account yet?{' '}
-
- Sign Up
-
-
-
-
-
- >
- )}
-
- );
-};
-
-export default Login;
- */
\ No newline at end of file
diff --git a/apps/mobile/src/views/Notes/index.js b/apps/mobile/src/views/Notes/index.js
index dd74e7e29..16a8700de 100644
--- a/apps/mobile/src/views/Notes/index.js
+++ b/apps/mobile/src/views/Notes/index.js
@@ -17,7 +17,7 @@ import {
refreshNotesPage,
} from '../../services/events';
import {openEditorAnimation} from '../../utils/animations';
-import {db, DDS, editing, ToastEvent} from '../../utils/utils';
+import {db, DDS, editing} from '../../utils/utils';
export const Notes = ({route, navigation}) => {
const [state, dispatch] = useTracked();
diff --git a/apps/mobile/src/views/Signup/index.js b/apps/mobile/src/views/Signup/index.js
deleted file mode 100644
index 1d3bf2f4b..000000000
--- a/apps/mobile/src/views/Signup/index.js
+++ /dev/null
@@ -1,762 +0,0 @@
-/* import {useIsFocused} from '@react-navigation/native';
-import React, {createRef, useEffect, useState} from 'react';
-import {
- ActivityIndicator,
- Clipboard,
- Linking,
- Modal,
- Text,
- TouchableOpacity,
- View,
-} from 'react-native';
-import * as Animatable from 'react-native-animatable';
-import {TextInput} from 'react-native-gesture-handler';
-import QRCode from 'react-native-qrcode-generator';
-import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
-import {opacity, ph, pv, SIZE, WEIGHT} from '../../common/common';
-import {Toast} from '../../components/Toast';
-import {useTracked} from '../../provider';
-import {ACTIONS} from '../../provider/actions';
-import {
- eSendEvent,
- eSubscribeEvent,
- eUnSubscribeEvent,
-} from '../../services/eventManager';
-import {
- eCloseLoginDialog,
- eLoginDialogNavigateBack,
- eOpenSideMenu,
- eSetModalNavigator,
-} from '../../services/events';
-import {
- validateEmail,
- validatePass,
- validateUsername,
-} from '../../services/validation';
-import {db, DDS, getElevation, ToastEvent} from '../../utils/utils';
-import {Button} from '../../components/Button';
-import Seperator from '../../components/Seperator';
-
-const _email = createRef();
-const _pass = createRef();
-const _username = createRef();
-const _passConfirm = createRef();
-const _passContainer = createRef();
-export const Signup = ({route, navigation}) => {
- const [state, dispatch] = useTracked();
- const {colors, isLoginNavigator} = state;
- const [signingIn, setSigningIn] = useState(false);
- const [status, setStatus] = useState('Creating new user...');
- const [email, setEmail] = useState(null);
- const [password, setPassword] = useState(null);
- const [username, setUsername] = useState(null);
- const [invalidUsername, setInvalidUsername] = useState(false);
- const [invalidEmail, setInvalidEmail] = useState(false);
- const [invalidPassword, setInvalidPassword] = useState(false);
- const [failed, setFailed] = useState(false);
- const [modalVisible, setModalVisible] = useState(false);
- const [confirmPassword, setConfirmPassword] = useState(false);
- const [key, setKey] = useState('');
- const [passwordReEnter, setPasswordReEnter] = useState(null);
- const [secureEntry, setSecureEntry] = useState(true);
- let isFocused = useIsFocused();
-
- const handleBackPress = () => {
- navigation.goBack();
- };
-
- useEffect(() => {
- eSubscribeEvent(eLoginDialogNavigateBack, handleBackPress);
- return () => {
- eUnSubscribeEvent(eLoginDialogNavigateBack, handleBackPress);
- if (route.params.fromHome) {
- eSendEvent(eOpenSideMenu);
- }
- };
- }, [isFocused]);
-
- const validateInfo = () => {
- if (!password || !email || !username || !passwordReEnter) {
- ToastEvent.show('All fields are required', 'error');
- return false;
- }
-
- if (!confirmPassword) {
- ToastEvent.show('Passwords do not match', 'error');
- return false;
- }
-
- if (!invalidEmail && !invalidPassword && !invalidUsername) {
- ToastEvent.show('Signup information is invalid', 'error');
- return false;
- }
- };
-
- const signup = async () => {
- if (!validateInfo) return;
-
- setSigningIn(true);
- setStatus('Creating your account...');
- try {
- await db.user.signup(username, email, password);
- } catch (e) {
- setSigningIn(false);
- setFailed(true);
- ToastEvent.show('Signup failed, Network Error', 'error');
- return;
- }
-
- let user;
- try {
- user = await db.user.user.get();
- setStatus('Logging you in...');
- let k = await db.user.key();
- setKey(k.key);
- setStatus('Setting up crenditials...');
- dispatch({type: ACTIONS.USER, user: user});
- eSendEvent(eStartSyncer);
- setTimeout(() => {
- setModalVisible(true);
- }, 500);
- } catch (e) {
- setSigningIn(false);
- setFailed(true);
- ToastEvent.show('Login Failed, try again', 'error');
- }
- };
-
- useEffect(() => {
- if (isFocused) {
- dispatch({
- type: ACTIONS.HEADER_STATE,
- state: {
- type: null,
- menu: false,
- canGoBack: true,
- route: route,
- color: null,
- navigation: navigation,
- ind: !route.params.root,
- },
- });
- dispatch({
- type: ACTIONS.CONTAINER_BOTTOM_BUTTON,
- state: {
- visible: false,
- ind: !route.params.root,
- },
- });
- dispatch({
- type: ACTIONS.CONTAINER_STATE,
- state: {
- noSelectionHeader: false,
- },
- });
- dispatch({
- type: ACTIONS.HEADER_VERTICAL_MENU,
- state: false,
- });
-
- dispatch({
- type: ACTIONS.HEADER_TEXT_STATE,
- state: {
- heading: 'Create Account',
- ind: !route.params.root,
- },
- });
-
- dispatch({
- type: ACTIONS.CURRENT_SCREEN,
- screen: 'signup',
- });
-
- dispatch({
- type: ACTIONS.SEARCH_STATE,
- state: {
- noSearch: true,
- ind: !route.params.root,
- },
- });
- if (!route.params.root) {
- eSendEvent(eSetModalNavigator, true);
- }
- }
- }, [isFocused]);
-
- return (
-
-
-
-
-
- Hi there!
-
-
- All your data is encrypted. This means that we cannot read your
- data or recover your password.{' '}
-
- If you lose your password, you can recover your data only using
- your recovery key.{' '}
-
-
-
-
- Take a Sceenshot of QR-Code
-
-
-
-
- {
- Clipboard.setString(key);
- ToastEvent.show('Recovery key copied!', 'success', 'local');
- }}
- style={{
- flexDirection: 'row',
- borderWidth: 1,
- borderRadius: 5,
- paddingVertical: 8,
- paddingHorizontal: 10,
- marginTop: 15,
- alignItems: 'center',
- borderColor: colors.nav,
- }}>
-
- {key}
-
-
-
-
-
- You can also save your recovery key from app settings on any
- device.
-
-
- {
- DDS.isTab
- ? eSendEvent(eCloseLoginDialog)
- : navigation.navigate('Home');
- setModalVisible(false);
- }}
- activeOpacity={opacity}
- style={{
- ...getElevation(5),
- paddingVertical: pv + 5,
- paddingHorizontal: ph,
- borderRadius: 5,
- width: '90%',
- marginTop: 20,
- justifyContent: 'center',
- alignItems: 'center',
- backgroundColor: colors.accent,
- }}>
-
- I have saved the key
-
-
-
-
-
-
-
- {signingIn ? (
-
-
-
-
- {status}
-
-
- ) : null}
-
- {signingIn ? null : (
- <>
-
-
-
- {
- if (!invalidUsername) {
- _username.current.setNativeProps({
- style: {
- borderColor: colors.accent,
- },
- });
- }
- }}
- defaultValue={username}
- onBlur={() => {
- if (!validateUsername(username) && username?.length > 0) {
- setInvalidUsername(true);
- _username.current.setNativeProps({
- style: {
- color: colors.errorText,
- borderColor: colors.errorText,
- },
- });
- } else {
- setInvalidUsername(false);
- _username.current.setNativeProps({
- style: {
- borderColor: colors.nav,
- },
- });
- }
- }}
- textContentType="username"
- onChangeText={(value) => {
- setUsername(value);
-
- if (invalidUsername && validateUsername(username)) {
- setInvalidUsername(false);
- _username.current.setNativeProps({
- style: {
- color: colors.pri,
- borderColor: colors.accent,
- },
- });
- }
- }}
- onSubmitEditing={() => {
- if (!validateUsername(username)) {
- setInvalidUsername(true);
- _username.current.setNativeProps({
- style: {
- color: colors.errorText,
- },
- });
- }
- }}
- style={{
- padding: pv,
- borderWidth: 1.5,
- borderColor: colors.nav,
- borderRadius: 5,
- fontSize: SIZE.sm,
- fontFamily: WEIGHT.regular,
- }}
- placeholder="Username (a-z _- 0-9)"
- placeholderTextColor={colors.icon}
- />
-
- {invalidUsername ? (
-
- {' '}
- Username is invalid
-
- ) : null}
-
-
-
- {
- if (!invalidEmail) {
- _email.current.setNativeProps({
- style: {
- borderColor: colors.accent,
- },
- });
- }
- }}
- defaultValue={email}
- onBlur={() => {
- if (!validateEmail(email) && email?.length > 0) {
- setInvalidEmail(true);
- _email.current.setNativeProps({
- style: {
- color: colors.errorText,
- borderColor: colors.errorText,
- },
- });
- } else {
- setInvalidEmail(false);
- _email.current.setNativeProps({
- style: {
- borderColor: colors.nav,
- },
- });
- }
- }}
- textContentType="emailAddress"
- onChangeText={(value) => {
- setEmail(value);
- if (invalidEmail && validateEmail(email)) {
- setInvalidEmail(false);
- _email.current.setNativeProps({
- style: {
- color: colors.pri,
- borderColor: colors.accent,
- },
- });
- }
- }}
- onSubmitEditing={() => {
- if (!validateEmail(email)) {
- setInvalidEmail(true);
- _email.current.setNativeProps({
- style: {
- color: colors.errorText,
- },
- });
- }
- }}
- style={{
- padding: pv,
- borderWidth: 1.5,
- borderColor: colors.nav,
- borderRadius: 5,
- fontSize: SIZE.sm,
- fontFamily: WEIGHT.regular,
- }}
- placeholder="Email"
- placeholderTextColor={colors.icon}
- />
- {invalidEmail ? (
-
- {' '}
- Password is invalid
-
- ) : null}
-
-
-
-
- {
- if (!invalidPassword) {
- _passContainer.current?.setNativeProps({
- style: {
- borderColor: colors.accent,
- },
- });
- }
- }}
- defaultValue={password}
- onBlur={() => {
- if (!validatePass(password) && password?.length > 0) {
- setInvalidPassword(true);
- _pass.current.setNativeProps({
- style: {
- color: colors.errorText,
- },
- });
- _passContainer.current?.setNativeProps({
- style: {
- borderColor: colors.errorText,
- },
- });
- } else {
- setInvalidPassword(false);
- _passContainer.current?.setNativeProps({
- style: {
- borderColor: colors.nav,
- },
- });
- }
- }}
- onChangeText={(value) => {
- setPassword(value);
- if (invalidPassword && validatePass(password)) {
- setInvalidPassword(false);
- _pass.current.setNativeProps({
- style: {
- color: colors.pri,
- },
- });
- }
- }}
- onSubmitEditing={() => {
- if (!validatePass(password)) {
- setInvalidPassword(true);
- _pass.current.setNativeProps({
- style: {
- color: colors.errorText,
- },
- });
- }
- }}
- style={{
- paddingVertical: pv,
- paddingHorizontal: 0,
- fontSize: SIZE.sm,
- fontFamily: WEIGHT.regular,
- width: '85%',
- maxWidth: '85%',
- }}
- secureTextEntry={secureEntry}
- placeholder="Password"
- placeholderTextColor={colors.icon}
- />
-
- {
- setSecureEntry(!secureEntry);
- }}
- style={{
- width: 25,
- }}
- color={secureEntry ? colors.icon : colors.accent}
- />
-
- {invalidPassword ? (
-
- {' '}
- Password is invalid
-
- ) : null}
-
-
- {
- setPasswordReEnter(value);
- if (value !== password) {
- setConfirmPassword(false);
- _passConfirm.current.setNativeProps({
- style: {
- borderColor: colors.errorText,
- },
- });
- _pass.current.setNativeProps({
- style: {
- borderColor: colors.errorText,
- },
- });
- } else {
- setConfirmPassword(true);
- _passConfirm.current.setNativeProps({
- style: {
- borderColor: colors.accent,
- },
- });
- _pass.current.setNativeProps({
- style: {
- borderColor: colors.accent,
- },
- });
- }
- }}
- onFocus={() => {
- _passConfirm.current.setNativeProps({
- style: {
- borderColor: colors.accent,
- },
- });
- }}
- style={{
- padding: pv,
- borderWidth: 1.5,
- borderColor: colors.nav,
- borderRadius: 5,
- fontSize: SIZE.sm,
- fontFamily: WEIGHT.regular,
- }}
- secureTextEntry={secureEntry}
- placeholder="Confirm Password"
- placeholderTextColor={colors.icon}
- />
-
- {password && !invalidPassword && !confirmPassword ? (
-
- {' '}
- Passwords do not match
-
- ) : null}
-
-
-
-
-
- {
- Linking.openURL('https://notesnook.com/privacy.html');
- }}
- activeOpacity={opacity}
- style={{
- alignSelf: 'center',
- marginTop: 70,
- }}>
-
- By signing up you agree to our{' '}
-
- privacy policy
-
-
-
-
- >
- )}
-
- );
-};
-
-export default Signup;
- */
\ No newline at end of file
diff --git a/apps/mobile/src/views/Tags/index.js b/apps/mobile/src/views/Tags/index.js
index 4d1b37b26..c889c96e4 100644
--- a/apps/mobile/src/views/Tags/index.js
+++ b/apps/mobile/src/views/Tags/index.js
@@ -10,9 +10,8 @@ import NavigationService from '../../services/NavigationService';
export const Tags = ({route, navigation}) => {
const [state, dispatch] = useTracked();
- const {colors, tags} = state;
+ const { tags} = state;
-
const onFocus = useCallback(() => {
dispatch({