forked from vergnet/application-amicale
Moved debug, about and feedback inside settings screen
This commit is contained in:
parent
8163429539
commit
0c881f5ce9
5 changed files with 64 additions and 68 deletions
|
@ -3,7 +3,6 @@
|
|||
import * as React from 'react';
|
||||
import {FlatList, Linking, Platform, View} from 'react-native';
|
||||
import i18n from "i18n-js";
|
||||
import AsyncStorageManager from "../../managers/AsyncStorageManager";
|
||||
import {Avatar, Card, List, Title, withTheme} from 'react-native-paper';
|
||||
import packageJson from "../../../package.json";
|
||||
|
||||
|
@ -32,10 +31,6 @@ type Props = {
|
|||
navigation: Object,
|
||||
};
|
||||
|
||||
type State = {
|
||||
isDebugUnlocked: boolean,
|
||||
};
|
||||
|
||||
/**
|
||||
* Opens a link in the device's browser
|
||||
* @param link The link to open
|
||||
|
@ -47,14 +42,8 @@ function openWebLink(link) {
|
|||
/**
|
||||
* Class defining an about screen. This screen shows the user information about the app and it's author.
|
||||
*/
|
||||
class AboutScreen extends React.Component<Props, State> {
|
||||
class AboutScreen extends React.Component<Props> {
|
||||
|
||||
debugTapCounter = 0;
|
||||
modalRef: Object;
|
||||
|
||||
state = {
|
||||
isDebugUnlocked: AsyncStorageManager.getInstance().preferences.debugUnlocked.current === '1'
|
||||
};
|
||||
/**
|
||||
* Data to be displayed in the app card
|
||||
*/
|
||||
|
@ -89,20 +78,13 @@ class AboutScreen extends React.Component<Props, State> {
|
|||
text: i18n.t('aboutScreen.license'),
|
||||
showChevron: true
|
||||
},
|
||||
{
|
||||
onPressCallback: () => this.props.navigation.navigate('debug'),
|
||||
icon: 'bug-check',
|
||||
text: i18n.t('aboutScreen.debug'),
|
||||
showChevron: true,
|
||||
showOnlyInDebug: true
|
||||
},
|
||||
];
|
||||
/**
|
||||
* Data to be displayed in the author card
|
||||
*/
|
||||
authorData: Array<Object> = [
|
||||
{
|
||||
onPressCallback: () => this.tryUnlockDebugMode(),
|
||||
onPressCallback: () => console.log('cc'),
|
||||
icon: 'account-circle',
|
||||
text: 'Arnaud VERGNET',
|
||||
showChevron: false
|
||||
|
@ -223,7 +205,6 @@ class AboutScreen extends React.Component<Props, State> {
|
|||
<Card.Content>
|
||||
<FlatList
|
||||
data={this.appData}
|
||||
extraData={this.state.isDebugUnlocked}
|
||||
keyExtractor={this.keyExtractor}
|
||||
renderItem={this.getCardItem}
|
||||
/>
|
||||
|
@ -314,51 +295,26 @@ class AboutScreen extends React.Component<Props, State> {
|
|||
* @returns {*}
|
||||
*/
|
||||
getCardItem = ({item}: Object) => {
|
||||
let shouldShow = item === undefined
|
||||
|| !item.showOnlyInDebug
|
||||
|| (item.showOnlyInDebug && this.state.isDebugUnlocked);
|
||||
const getItemIcon = this.getItemIcon.bind(this, item);
|
||||
if (shouldShow) {
|
||||
if (item.showChevron) {
|
||||
return (
|
||||
<List.Item
|
||||
title={item.text}
|
||||
left={getItemIcon}
|
||||
right={this.getChevronIcon}
|
||||
onPress={item.onPressCallback}
|
||||
/>
|
||||
);
|
||||
} else {
|
||||
return (
|
||||
<List.Item
|
||||
title={item.text}
|
||||
left={getItemIcon}
|
||||
onPress={item.onPressCallback}
|
||||
/>
|
||||
);
|
||||
}
|
||||
} else
|
||||
return null;
|
||||
};
|
||||
|
||||
/**
|
||||
* Tries to unlock debug mode
|
||||
*/
|
||||
tryUnlockDebugMode() {
|
||||
this.debugTapCounter = this.debugTapCounter + 1;
|
||||
if (this.debugTapCounter >= 4) {
|
||||
this.unlockDebugMode();
|
||||
if (item.showChevron) {
|
||||
return (
|
||||
<List.Item
|
||||
title={item.text}
|
||||
left={getItemIcon}
|
||||
right={this.getChevronIcon}
|
||||
onPress={item.onPressCallback}
|
||||
/>
|
||||
);
|
||||
} else {
|
||||
return (
|
||||
<List.Item
|
||||
title={item.text}
|
||||
left={getItemIcon}
|
||||
onPress={item.onPressCallback}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unlocks debug mode
|
||||
*/
|
||||
unlockDebugMode() {
|
||||
this.setState({isDebugUnlocked: true});
|
||||
let key = AsyncStorageManager.getInstance().preferences.debugUnlocked.key;
|
||||
AsyncStorageManager.getInstance().savePref(key, '1');
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets a card, depending on the given item's id
|
||||
|
|
|
@ -174,11 +174,9 @@ class HomeScreen extends React.Component<Props, State> {
|
|||
}
|
||||
|
||||
const onPressSettings = () => this.props.navigation.navigate("settings");
|
||||
const onPressAbout = () => this.props.navigation.navigate("about");
|
||||
return <MaterialHeaderButtons>
|
||||
<Item title="log" iconName={logIcon} color={logColor} onPress={onPressLog}/>
|
||||
<Item title={i18n.t("screens.settings")} iconName={"settings"} onPress={onPressSettings}/>
|
||||
<Item title={i18n.t("screens.about")} iconName={"information"} onPress={onPressAbout}/>
|
||||
</MaterialHeaderButtons>;
|
||||
};
|
||||
|
||||
|
|
|
@ -9,8 +9,10 @@ import AsyncStorageManager from "../../managers/AsyncStorageManager";
|
|||
import {Card, List, Switch, ToggleButton, withTheme} from 'react-native-paper';
|
||||
import {Appearance} from "react-native-appearance";
|
||||
import CustomSlider from "../../components/Overrides/CustomSlider";
|
||||
import {StackNavigationProp} from "@react-navigation/stack";
|
||||
|
||||
type Props = {
|
||||
navigation: StackNavigationProp,
|
||||
theme: CustomTheme,
|
||||
};
|
||||
|
||||
|
@ -19,6 +21,7 @@ type State = {
|
|||
nightModeFollowSystem: boolean,
|
||||
notificationReminderSelected: number,
|
||||
startScreenPickerSelected: string,
|
||||
isDebugUnlocked: boolean,
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -41,9 +44,19 @@ class SettingsScreen extends React.Component<Props, State> {
|
|||
Appearance.getColorScheme() !== 'no-preference',
|
||||
notificationReminderSelected: this.savedNotificationReminder,
|
||||
startScreenPickerSelected: AsyncStorageManager.getInstance().preferences.defaultStartScreen.current,
|
||||
isDebugUnlocked: AsyncStorageManager.getInstance().preferences.debugUnlocked.current === '1'
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Unlocks debug mode
|
||||
*/
|
||||
unlockDebugMode = () => {
|
||||
this.setState({isDebugUnlocked: true});
|
||||
let key = AsyncStorageManager.getInstance().preferences.debugUnlocked.key;
|
||||
AsyncStorageManager.getInstance().savePref(key, '1');
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the value for the proxiwash reminder notification time
|
||||
*
|
||||
|
@ -205,6 +218,31 @@ class SettingsScreen extends React.Component<Props, State> {
|
|||
</View>
|
||||
</List.Section>
|
||||
</Card>
|
||||
<Card style={{margin: 5}}>
|
||||
<Card.Title title={i18n.t('settingsScreen.information')}/>
|
||||
<List.Section>
|
||||
{this.state.isDebugUnlocked
|
||||
? <List.Item
|
||||
title={i18n.t('screens.debug')}
|
||||
left={props => <List.Icon {...props} icon="bug-check"/>}
|
||||
onPress={() => this.props.navigation.navigate("debug")}
|
||||
/>
|
||||
:null}
|
||||
<List.Item
|
||||
title={i18n.t('screens.about')}
|
||||
description={i18n.t('aboutScreen.buttonDesc')}
|
||||
left={props => <List.Icon {...props} icon="information"/>}
|
||||
onPress={() => this.props.navigation.navigate("about")}
|
||||
onLongPress={this.unlockDebugMode}
|
||||
/>
|
||||
<List.Item
|
||||
title={i18n.t('feedbackScreen.homeButtonTitle')}
|
||||
description={i18n.t('feedbackScreen.homeButtonSubtitle')}
|
||||
left={props => <List.Icon {...props} icon="bug"/>}
|
||||
onPress={() => this.props.navigation.navigate("feedback")}
|
||||
/>
|
||||
</List.Section>
|
||||
</Card>
|
||||
</ScrollView>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -91,7 +91,8 @@
|
|||
"startScreen": "Start Screen",
|
||||
"startScreenSub": "Select which screen to start the app on",
|
||||
"proxiwashNotifReminder": "Machine running reminder",
|
||||
"proxiwashNotifReminderSub": "How many minutes before"
|
||||
"proxiwashNotifReminderSub": "How many minutes before",
|
||||
"information": "Information"
|
||||
},
|
||||
"homeScreen": {
|
||||
"listUpdated": "List updated!",
|
||||
|
@ -110,6 +111,7 @@
|
|||
}
|
||||
},
|
||||
"aboutScreen": {
|
||||
"buttonDesc": "Information about the app and its creator",
|
||||
"appstore": "See on the Appstore",
|
||||
"playstore": "See on the Playstore",
|
||||
"changelog": "Changelog",
|
||||
|
|
|
@ -91,7 +91,8 @@
|
|||
"startScreen": "Écran de démarrage",
|
||||
"startScreenSub": "Choisissez l'écran utilisé au démarrage",
|
||||
"proxiwashNotifReminder": "Rappel de machine en cours",
|
||||
"proxiwashNotifReminderSub": "Combien de minutes avant"
|
||||
"proxiwashNotifReminderSub": "Combien de minutes avant",
|
||||
"information": "Informations"
|
||||
},
|
||||
"homeScreen": {
|
||||
"listUpdated": "List mise à jour!",
|
||||
|
@ -110,6 +111,7 @@
|
|||
}
|
||||
},
|
||||
"aboutScreen": {
|
||||
"buttonDesc": "Informations sur l'appli et son créateur",
|
||||
"appstore": "Voir sur l'Appstore",
|
||||
"playstore": "Voir sur le Playstore",
|
||||
"changelog": "Historique des modifications",
|
||||
|
|
Loading…
Reference in a new issue