feature: use locked from application state for side menu

This commit is contained in:
Radek Czemerys
2020-10-15 10:26:34 +02:00
parent 9373ffb17a
commit e4783eaaa8
9 changed files with 16 additions and 50 deletions

View File

@@ -60,7 +60,7 @@ export const AppStackComponent = (
// Context
const application = useContext(ApplicationContext);
const theme = useContext(ThemeContext);
const isLocked = useIsLocked();
const [isLocked] = useIsLocked();
const [hasEditor] = useHasEditor();
// State

View File

@@ -25,7 +25,7 @@ export const useSignedIn = (
// Context
const application = React.useContext(ApplicationContext);
const isLocked = useIsLocked();
const [isLocked] = useIsLocked();
// State
const [signedIn, setSignedIn] = React.useState(false);
@@ -59,7 +59,7 @@ export const useSignedIn = (
};
}, [application, signedInCallback, signedOutCallback, isLocked]);
return signedIn;
return [signedIn];
};
export const useOutOfSync = () => {
@@ -97,7 +97,7 @@ export const useOutOfSync = () => {
return removeSignedInObserver;
}, [application]);
return outOfSync;
return [outOfSync];
};
export const useIsLocked = () => {
@@ -130,7 +130,7 @@ export const useIsLocked = () => {
};
}, [application]);
return isLocked;
return [isLocked];
};
export const useHasEditor = () => {

View File

@@ -50,7 +50,7 @@ type Props = {
export const NoteList = (props: Props): JSX.Element => {
// Context
const signedIn = useSignedIn();
const [signedIn] = useSignedIn();
const application = useContext(ApplicationContext);
const themeService = useContext(ThemeServiceContext);
const theme = useContext(ThemeContext);

View File

@@ -49,7 +49,7 @@ export const Notes = ({
* Update sync status
*/
const [loading, decrypting, refreshing, startRefreshing] = useSyncStatus();
const signedIn = useSignedIn();
const [signedIn] = useSignedIn();
// State
const [sortBy, setSortBy] = useState<CollectionSort>(() =>

View File

@@ -25,7 +25,7 @@ export const Root = (): JSX.Element | null => {
// Context
const application = useContext(ApplicationContext);
const theme = useContext(ThemeContext);
const isLocked = useIsLocked();
const [isLocked] = useIsLocked();
// State
const [, setWidth] = useState<number | undefined>(undefined);

View File

@@ -19,7 +19,7 @@ type Props = {
export const EncryptionSection = (props: Props) => {
// Context
const application = useContext(ApplicationContext);
const isLocked = useIsLocked();
const [isLocked] = useIsLocked();
// State
const [protocolDisplayName, setProtocolDisplayName] = useState('');

View File

@@ -26,7 +26,7 @@ type Props = {
export const OptionsSection = ({ title, encryptionAvailable }: Props) => {
// Context
const application = useContext(ApplicationContext);
const signedIn = useSignedIn();
const [signedIn] = useSignedIn();
const navigation = useNavigation<
ModalStackNavigationProp<typeof SCREEN_SETTINGS>['navigation']
>();

View File

@@ -43,7 +43,7 @@ export const Settings = (props: Props) => {
props.navigation.goBack();
}, [props.navigation]);
const signedIn = useSignedIn(goBack);
const [signedIn] = useSignedIn(goBack);
return (
<Container

View File

@@ -1,9 +1,9 @@
import { Circle } from '@Components/Circle';
import { useOutOfSync, useSignedIn } from '@Lib/snjs_helper_hooks';
import { useIsLocked, useOutOfSync, useSignedIn } from '@Lib/snjs_helper_hooks';
import { ApplicationContext } from '@Root/ApplicationContext';
import React, { useContext, useEffect, useMemo, useState } from 'react';
import { ViewProps } from 'react-native';
import { ApplicationEvent, ContentType } from 'snjs';
import { ContentType } from 'snjs';
import { ThemeContext } from 'styled-components/native';
import {
Cell,
@@ -27,9 +27,9 @@ export const SideMenuHero: React.FC<Props> = props => {
const theme = useContext(ThemeContext);
// State
const signedIn = useSignedIn();
const [isLocked, setIsLocked] = React.useState<boolean>(true);
const isOutOfSync = useOutOfSync();
const [signedIn] = useSignedIn();
const [isLocked] = useIsLocked();
const [isOutOfSync] = useOutOfSync();
const [itemsLength, setItemsLength] = useState(0);
useEffect(() => {
@@ -45,40 +45,6 @@ export const SideMenuHero: React.FC<Props> = props => {
return removeStreamItems;
}, [application, itemsLength]);
useEffect(() => {
let mounted = true;
const getIsLocked = async () => {
const locked = await application?.isLocked();
if (mounted) {
if (locked === undefined) {
setIsLocked(true);
} else {
setIsLocked(Boolean(locked));
}
}
};
const removeSignedInObserver = application?.addEventObserver(
async event => {
if (
event === ApplicationEvent.Launched ||
event === ApplicationEvent.SignedIn ||
event === ApplicationEvent.WillSync
) {
setIsLocked(false);
}
if (event === ApplicationEvent.SignedOut) {
getIsLocked();
}
}
);
return () => {
mounted = false;
removeSignedInObserver && removeSignedInObserver();
};
}, [application]);
const textData = useMemo(() => {
const hasEncryption = application?.isEncryptionAvailable();
if (!signedIn) {