mirror of
https://github.com/streetwriters/notesnook.git
synced 2025-12-23 23:19:40 +01:00
refactor
This commit is contained in:
@@ -21,7 +21,8 @@ import {
|
||||
SIZE,
|
||||
WEIGHT,
|
||||
} from '../../common/common';
|
||||
import {ACTIONS, useTracked} from '../../provider';
|
||||
import {useTracked} from '../../provider';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
import {
|
||||
moveNoteEvent,
|
||||
_recieveEvent,
|
||||
|
||||
@@ -11,7 +11,7 @@ import {FlatList, TextInput} from 'react-native-gesture-handler';
|
||||
import Icon from 'react-native-vector-icons/Feather';
|
||||
import {db, DDS} from '../../../App';
|
||||
import {opacity, ph, pv, SIZE, WEIGHT} from '../../common/common';
|
||||
import {ACTIONS} from '../../provider';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
import {getElevation, ToastEvent} from '../../utils/utils';
|
||||
import {updateEvent} from '../DialogManager';
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
import Icon from 'react-native-vector-icons/Feather';
|
||||
import {db, DDS} from '../../../App';
|
||||
import {opacity, ph, pv, SIZE, WEIGHT} from '../../common/common';
|
||||
import {ACTIONS} from '../../provider';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
import NavigationService from '../../services/NavigationService';
|
||||
import {getElevation, ToastEvent} from '../../utils/utils';
|
||||
import {dialogActions, updateEvent} from '../DialogManager';
|
||||
|
||||
@@ -346,6 +346,7 @@ export class DialogManager extends Component {
|
||||
DDS.isTab
|
||||
? {
|
||||
borderRadius: 10,
|
||||
backgroundColor: colors.bg,
|
||||
}
|
||||
: null
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import React, {useState, useEffect} from 'react';
|
||||
import {
|
||||
ActivityIndicator,
|
||||
FlatList,
|
||||
KeyboardAvoidingView,
|
||||
Platform,
|
||||
ScrollView,
|
||||
@@ -21,9 +20,9 @@ import {
|
||||
SIZE,
|
||||
WEIGHT,
|
||||
} from '../../common/common';
|
||||
import {useTracked, ACTIONS} from '../../provider';
|
||||
import {useTracked} from '../../provider';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
import {AnimatedSafeAreaView} from '../../views/Home';
|
||||
import {VaultDialog} from '../VaultDialog';
|
||||
import {db} from '../../../App';
|
||||
import {w} from '../../utils/utils';
|
||||
|
||||
|
||||
@@ -2,10 +2,7 @@ import React from 'react';
|
||||
import {Modal, DeviceEventEmitter, View, TouchableOpacity} from 'react-native';
|
||||
import {createAppContainer} from 'react-navigation';
|
||||
import {createStackNavigator} from 'react-navigation-stack';
|
||||
import {ACTIONS} from '../../provider';
|
||||
import Folders from '../../views/Folders';
|
||||
import Notebook from '../../views/Notebook';
|
||||
import Notes from '../../views/Notes';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
import {updateEvent} from '../DialogManager';
|
||||
import * as Animatable from 'react-native-animatable';
|
||||
import Login from '../../views/Login';
|
||||
|
||||
@@ -21,7 +21,8 @@ import {
|
||||
SIZE,
|
||||
WEIGHT,
|
||||
} from '../../common/common';
|
||||
import {ACTIONS, useTracked} from '../../provider';
|
||||
import {useTracked} from '../../provider';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
import NavigationService from '../../services/NavigationService';
|
||||
import {AnimatedSafeAreaView} from '../../views/Home';
|
||||
import {DDS} from '../../../App';
|
||||
|
||||
@@ -1,18 +1,7 @@
|
||||
import React, {Component} from 'react';
|
||||
import {
|
||||
Modal,
|
||||
Text,
|
||||
TouchableOpacity,
|
||||
View,
|
||||
DeviceEventEmitter,
|
||||
} from 'react-native';
|
||||
import Icon from 'react-native-vector-icons/Feather';
|
||||
import {db} from '../../../App';
|
||||
import {opacity, ph, pv, SIZE, WEIGHT} from '../../common/common';
|
||||
import {ACTIONS} from '../../provider';
|
||||
import NavigationService from '../../services/NavigationService';
|
||||
import {getElevation, ToastEvent, w} from '../../utils/utils';
|
||||
import {dialogActions, updateEvent} from '../DialogManager';
|
||||
import {Modal, TouchableOpacity, View, DeviceEventEmitter} from 'react-native';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
import {getElevation, w} from '../../utils/utils';
|
||||
import * as Animatable from 'react-native-animatable';
|
||||
import {Menu} from '../Menu';
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import React from 'react';
|
||||
import {Modal, DeviceEventEmitter, View, TouchableOpacity} from 'react-native';
|
||||
import {createAppContainer} from 'react-navigation';
|
||||
import {createStackNavigator} from 'react-navigation-stack';
|
||||
import {ACTIONS} from '../../provider';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
import Folders from '../../views/Folders';
|
||||
import Notebook from '../../views/Notebook';
|
||||
import Notes from '../../views/Notes';
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import React, {useEffect} from 'react';
|
||||
import {FlatList, Platform, SectionList, Text, View} from 'react-native';
|
||||
import {SIZE, WEIGHT} from '../../common/common';
|
||||
import {ACTIONS, useTracked} from '../../provider';
|
||||
import {useTracked} from '../../provider';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
import {slideLeft, slideRight} from '../../utils/animations';
|
||||
import {w} from '../../utils/utils';
|
||||
import {NotesPlaceHolder} from '../ListPlaceholders';
|
||||
|
||||
@@ -10,7 +10,8 @@ import {
|
||||
import * as Animatable from 'react-native-animatable';
|
||||
import Icon from 'react-native-vector-icons/Feather';
|
||||
import {SIZE, WEIGHT} from '../../common/common';
|
||||
import {ACTIONS, useTracked} from '../../provider';
|
||||
import {useTracked} from '../../provider';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
import {w} from '../../utils/utils';
|
||||
|
||||
export const AnimatedSafeAreaView = Animatable.createAnimatableComponent(
|
||||
|
||||
@@ -3,7 +3,8 @@ import {View, TouchableOpacity} from 'react-native';
|
||||
import {SIZE} from '../../common/common';
|
||||
import Icon from 'react-native-vector-icons/Feather';
|
||||
import {w} from '../../utils/utils';
|
||||
import {useTracked, ACTIONS} from '../../provider';
|
||||
import {useTracked} from '../../provider';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
|
||||
const SelectionWrapper = ({children, item, currentEditingNote}) => {
|
||||
const [state, dispatch] = useTracked();
|
||||
|
||||
15
apps/mobile/src/provider/actions.js
Normal file
15
apps/mobile/src/provider/actions.js
Normal file
@@ -0,0 +1,15 @@
|
||||
export const ACTIONS = {
|
||||
NOTES: 'note',
|
||||
NOTEBOOKS: 'notebook',
|
||||
TRASH: 'trash',
|
||||
TAGS: 'tags',
|
||||
PINNED: 'pinned',
|
||||
FAVORITES: 'favorites',
|
||||
SELECTION_MODE: 'selectionMode',
|
||||
SELECTED_ITEMS: 'selectedItemsList',
|
||||
THEME: 'theme',
|
||||
MODAL_NAVIGATOR: 'modalNavigator',
|
||||
CLEAR_SELECTION: 'clearSelection',
|
||||
LOGIN_NAVIGATOR: 'loginNavigator',
|
||||
CURRENT_EDITING_NOTE: 'currentEditingNote',
|
||||
};
|
||||
35
apps/mobile/src/provider/defaultState.js
Normal file
35
apps/mobile/src/provider/defaultState.js
Normal file
@@ -0,0 +1,35 @@
|
||||
export const defaultState = {
|
||||
isMenuOpen: {
|
||||
current: false,
|
||||
},
|
||||
selectionMode: false,
|
||||
selectedItemsList: [],
|
||||
notes: [],
|
||||
notebooks: [],
|
||||
trash: [],
|
||||
favorites: [],
|
||||
pinned: [],
|
||||
tags: [],
|
||||
colors: {
|
||||
night: false,
|
||||
bg: 'white',
|
||||
fg: '#0560FF',
|
||||
navbg: '#f6fbfc',
|
||||
nav: '#f0f0f0',
|
||||
pri: 'black',
|
||||
sec: 'white',
|
||||
accent: '#0560FF',
|
||||
shade: '#0560FF12',
|
||||
normal: 'black',
|
||||
icon: 'gray',
|
||||
errorBg: '#FFD2D2',
|
||||
errorText: '#D8000C',
|
||||
successBg: '#DFF2BF',
|
||||
successText: '#4F8A10',
|
||||
warningBg: '#FEEFB3',
|
||||
warningText: '#9F6000',
|
||||
},
|
||||
preventDefaultMargins: false,
|
||||
isLoginNavigator: false,
|
||||
currenEditingNote: null,
|
||||
};
|
||||
@@ -1,154 +1,7 @@
|
||||
import {useReducer} from 'react';
|
||||
import {db} from '../../App';
|
||||
import {createContainer} from 'react-tracked';
|
||||
import {SideMenuEvent} from '../utils/utils';
|
||||
const defaultState = {
|
||||
isMenuOpen: {
|
||||
current: false,
|
||||
},
|
||||
selectionMode: false,
|
||||
selectedItemsList: [],
|
||||
notes: [],
|
||||
notebooks: [],
|
||||
trash: [],
|
||||
favorites: [],
|
||||
pinned: [],
|
||||
tags: [],
|
||||
colors: {
|
||||
night: false,
|
||||
bg: 'white',
|
||||
fg: '#0560FF',
|
||||
navbg: '#f6fbfc',
|
||||
nav: '#f0f0f0',
|
||||
pri: 'black',
|
||||
sec: 'white',
|
||||
accent: '#0560FF',
|
||||
shade: '#0560FF12',
|
||||
normal: 'black',
|
||||
icon: 'gray',
|
||||
errorBg: '#FFD2D2',
|
||||
errorText: '#D8000C',
|
||||
successBg: '#DFF2BF',
|
||||
successText: '#4F8A10',
|
||||
warningBg: '#FEEFB3',
|
||||
warningText: '#9F6000',
|
||||
},
|
||||
preventDefaultMargins: false,
|
||||
isLoginNavigator: false,
|
||||
currenEditingNote: null,
|
||||
};
|
||||
|
||||
export const ACTIONS = {
|
||||
NOTES: 'note',
|
||||
NOTEBOOKS: 'notebook',
|
||||
TRASH: 'trash',
|
||||
TAGS: 'tags',
|
||||
PINNED: 'pinned',
|
||||
FAVORITES: 'favorites',
|
||||
SELECTION_MODE: 'selectionMode',
|
||||
SELECTED_ITEMS: 'selectedItemsList',
|
||||
THEME: 'theme',
|
||||
MODAL_NAVIGATOR: 'modalNavigator',
|
||||
CLEAR_SELECTION: 'clearSelection',
|
||||
LOGIN_NAVIGATOR: 'loginNavigator',
|
||||
CURRENT_EDITING_NOTE: 'currentEditingNote',
|
||||
};
|
||||
|
||||
const reducer = (state, action) => {
|
||||
switch (action.type) {
|
||||
case ACTIONS.NOTES:
|
||||
let notes = db.groupNotes();
|
||||
return {
|
||||
...state,
|
||||
notes: notes,
|
||||
};
|
||||
case ACTIONS.THEME: {
|
||||
return {
|
||||
...state,
|
||||
colors: {...action.colors},
|
||||
};
|
||||
}
|
||||
case ACTIONS.NOTEBOOKS: {
|
||||
let notebooks = [...db.getNotebooks()];
|
||||
return {
|
||||
...state,
|
||||
notebooks: notebooks,
|
||||
};
|
||||
}
|
||||
case ACTIONS.PINNED: {
|
||||
let pinned = [...db.getPinned()];
|
||||
return {
|
||||
...state,
|
||||
pinned: pinned,
|
||||
};
|
||||
}
|
||||
case ACTIONS.TAGS: {
|
||||
return {
|
||||
...state,
|
||||
};
|
||||
}
|
||||
case ACTIONS.FAVORITES: {
|
||||
let favorites = [...db.getFavorites()];
|
||||
|
||||
return {
|
||||
...state,
|
||||
favorites: [...favorites],
|
||||
};
|
||||
}
|
||||
case ACTIONS.SELECTION_MODE: {
|
||||
if (action.enabled) {
|
||||
SideMenuEvent.disable();
|
||||
} else {
|
||||
SideMenuEvent.enable();
|
||||
}
|
||||
|
||||
return {
|
||||
...state,
|
||||
selectionMode: action.enabled,
|
||||
selectedItemsList: [],
|
||||
};
|
||||
}
|
||||
case ACTIONS.SELECTED_ITEMS: {
|
||||
let selectedItems = [...state.selectedItemsList];
|
||||
if (selectedItems.includes(action.item)) {
|
||||
selectedItems.splice(selectedItems.indexOf(action.item), 1);
|
||||
} else {
|
||||
selectedItems.push(action.item);
|
||||
}
|
||||
console.log(action.item, selectedItems);
|
||||
return {
|
||||
...state,
|
||||
selectedItemsList: selectedItems,
|
||||
};
|
||||
}
|
||||
case ACTIONS.CLEAR_SELECTION: {
|
||||
return {
|
||||
...state,
|
||||
selectedItemsList: [],
|
||||
};
|
||||
}
|
||||
case ACTIONS.MODAL_NAVIGATOR: {
|
||||
return {
|
||||
...state,
|
||||
preventDefaultMargins: action.enabled,
|
||||
};
|
||||
}
|
||||
case ACTIONS.LOGIN_NAVIGATOR: {
|
||||
return {
|
||||
...state,
|
||||
isLoginNavigator: action.enabled,
|
||||
};
|
||||
}
|
||||
case ACTIONS.CURRENT_EDITING_NOTE: {
|
||||
return {
|
||||
...state,
|
||||
currentEditingNote: action.dateCreated,
|
||||
};
|
||||
}
|
||||
default:
|
||||
throw new Error('unknown action type');
|
||||
}
|
||||
};
|
||||
import {reducer} from './reducer';
|
||||
import {defaultState} from './defaultState';
|
||||
|
||||
const useValue = () => useReducer(reducer, defaultState);
|
||||
|
||||
|
||||
99
apps/mobile/src/provider/reducer.js
Normal file
99
apps/mobile/src/provider/reducer.js
Normal file
@@ -0,0 +1,99 @@
|
||||
import {db} from '../../App';
|
||||
import {SideMenuEvent} from '../utils/utils';
|
||||
import {ACTIONS} from './actions';
|
||||
|
||||
export const reducer = (state, action) => {
|
||||
switch (action.type) {
|
||||
case ACTIONS.NOTES:
|
||||
let notes = db.groupNotes();
|
||||
return {
|
||||
...state,
|
||||
notes: notes,
|
||||
};
|
||||
case ACTIONS.THEME: {
|
||||
return {
|
||||
...state,
|
||||
colors: {...action.colors},
|
||||
};
|
||||
}
|
||||
case ACTIONS.NOTEBOOKS: {
|
||||
let notebooks = [...db.getNotebooks()];
|
||||
return {
|
||||
...state,
|
||||
notebooks: notebooks,
|
||||
};
|
||||
}
|
||||
case ACTIONS.PINNED: {
|
||||
let pinned = [...db.getPinned()];
|
||||
return {
|
||||
...state,
|
||||
pinned: pinned,
|
||||
};
|
||||
}
|
||||
case ACTIONS.TAGS: {
|
||||
return {
|
||||
...state,
|
||||
};
|
||||
}
|
||||
case ACTIONS.FAVORITES: {
|
||||
let favorites = [...db.getFavorites()];
|
||||
|
||||
return {
|
||||
...state,
|
||||
favorites: [...favorites],
|
||||
};
|
||||
}
|
||||
case ACTIONS.SELECTION_MODE: {
|
||||
if (action.enabled) {
|
||||
SideMenuEvent.disable();
|
||||
} else {
|
||||
SideMenuEvent.enable();
|
||||
}
|
||||
|
||||
return {
|
||||
...state,
|
||||
selectionMode: action.enabled,
|
||||
selectedItemsList: [],
|
||||
};
|
||||
}
|
||||
case ACTIONS.SELECTED_ITEMS: {
|
||||
let selectedItems = [...state.selectedItemsList];
|
||||
if (selectedItems.includes(action.item)) {
|
||||
selectedItems.splice(selectedItems.indexOf(action.item), 1);
|
||||
} else {
|
||||
selectedItems.push(action.item);
|
||||
}
|
||||
console.log(action.item, selectedItems);
|
||||
return {
|
||||
...state,
|
||||
selectedItemsList: selectedItems,
|
||||
};
|
||||
}
|
||||
case ACTIONS.CLEAR_SELECTION: {
|
||||
return {
|
||||
...state,
|
||||
selectedItemsList: [],
|
||||
};
|
||||
}
|
||||
case ACTIONS.MODAL_NAVIGATOR: {
|
||||
return {
|
||||
...state,
|
||||
preventDefaultMargins: action.enabled,
|
||||
};
|
||||
}
|
||||
case ACTIONS.LOGIN_NAVIGATOR: {
|
||||
return {
|
||||
...state,
|
||||
isLoginNavigator: action.enabled,
|
||||
};
|
||||
}
|
||||
case ACTIONS.CURRENT_EDITING_NOTE: {
|
||||
return {
|
||||
...state,
|
||||
currentEditingNote: action.dateCreated,
|
||||
};
|
||||
}
|
||||
default:
|
||||
throw new Error('unknown action type');
|
||||
}
|
||||
};
|
||||
@@ -24,7 +24,8 @@ import {
|
||||
_unSubscribeEvent,
|
||||
TEMPLATE_EXIT_FULLSCREEN,
|
||||
} from '../../components/DialogManager';
|
||||
import {useTracked, ACTIONS} from '../../provider';
|
||||
import {useTracked} from '../../provider';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
import {SideMenuEvent, w, h} from '../../utils/utils';
|
||||
import {AnimatedSafeAreaView} from '../Home';
|
||||
|
||||
|
||||
@@ -9,7 +9,8 @@ import {NotebookItem} from '../../components/NotebookItem';
|
||||
import NoteItem from '../../components/NoteItem';
|
||||
import {Search} from '../../components/SearchInput';
|
||||
import SelectionWrapper from '../../components/SelectionWrapper';
|
||||
import {ACTIONS, useTracked} from '../../provider';
|
||||
import {useTracked} from '../../provider';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
|
||||
export const Favorites = ({navigation}) => {
|
||||
// Global State
|
||||
|
||||
@@ -11,7 +11,8 @@ import {NotebookItem} from '../../components/NotebookItem';
|
||||
import {Search} from '../../components/SearchInput';
|
||||
import SelectionHeader from '../../components/SelectionHeader';
|
||||
import SelectionWrapper from '../../components/SelectionWrapper';
|
||||
import {ACTIONS, useTracked} from '../../provider';
|
||||
import {useTracked} from '../../provider';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
import {slideLeft, slideRight} from '../../utils/animations';
|
||||
import {w} from '../../utils/utils';
|
||||
import {AddNotebookEvent} from '../../components/DialogManager';
|
||||
|
||||
@@ -7,7 +7,8 @@ import {Header} from '../../components/header';
|
||||
import {NotesList} from '../../components/NotesList';
|
||||
import {Search} from '../../components/SearchInput';
|
||||
import SelectionHeader from '../../components/SelectionHeader';
|
||||
import {ACTIONS, useTracked} from '../../provider';
|
||||
import {useTracked} from '../../provider';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
import NavigationService from '../../services/NavigationService';
|
||||
import {SideMenuEvent, ToastEvent} from '../../utils/utils';
|
||||
import {useIsFocused} from 'react-navigation-hooks';
|
||||
|
||||
@@ -22,7 +22,8 @@ import {
|
||||
} from '../../common/common';
|
||||
import Container from '../../components/Container';
|
||||
import {Header} from '../../components/header';
|
||||
import {useTracked, ACTIONS} from '../../provider';
|
||||
import {useTracked} from '../../provider';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
import NavigationService from '../../services/NavigationService';
|
||||
export const Settings = ({navigation}) => {
|
||||
const [state, dispatch] = useTracked();
|
||||
|
||||
@@ -11,7 +11,8 @@ import {TrashPlaceHolder} from '../../components/ListPlaceholders';
|
||||
import {NotebookItem} from '../../components/NotebookItem';
|
||||
import NoteItem from '../../components/NoteItem';
|
||||
import SelectionHeader from '../../components/SelectionHeader';
|
||||
import {ACTIONS, useTracked} from '../../provider';
|
||||
import {useTracked} from '../../provider';
|
||||
import {ACTIONS} from '../../provider/actions';
|
||||
import {w} from '../../utils/utils';
|
||||
|
||||
export const Trash = ({navigation}) => {
|
||||
|
||||
Reference in New Issue
Block a user