Revert "Remove AF theme and start screen"

This reverts commit 91326689
This commit is contained in:
keplyx 2020-03-11 19:55:48 +01:00
parent 30c1c9c5bf
commit 4948456204
5 changed files with 58 additions and 3 deletions

11
App.js
View file

@ -12,6 +12,7 @@ import {createStackNavigator} from '@react-navigation/stack';
import DrawerNavigator from './navigation/DrawerNavigator'; import DrawerNavigator from './navigation/DrawerNavigator';
import NotificationsManager from "./utils/NotificationsManager"; import NotificationsManager from "./utils/NotificationsManager";
import {Provider as PaperProvider} from 'react-native-paper'; import {Provider as PaperProvider} from 'react-native-paper';
import AprilFoolsManager from "./utils/AprilFoolsManager";
type Props = {}; type Props = {};
@ -19,6 +20,7 @@ type State = {
isLoading: boolean, isLoading: boolean,
showIntro: boolean, showIntro: boolean,
showUpdate: boolean, showUpdate: boolean,
showAprilFools: boolean,
currentTheme: ?Object, currentTheme: ?Object,
}; };
@ -30,6 +32,7 @@ export default class App extends React.Component<Props, State> {
isLoading: true, isLoading: true,
showIntro: true, showIntro: true,
showUpdate: true, showUpdate: true,
showAprilFools: false,
currentTheme: null, currentTheme: null,
}; };
@ -71,9 +74,11 @@ export default class App extends React.Component<Props, State> {
this.setState({ this.setState({
showIntro: false, showIntro: false,
showUpdate: false, showUpdate: false,
showAprilFools: false,
}); });
AsyncStorageManager.getInstance().savePref(AsyncStorageManager.getInstance().preferences.showIntro.key, '0'); AsyncStorageManager.getInstance().savePref(AsyncStorageManager.getInstance().preferences.showIntro.key, '0');
AsyncStorageManager.getInstance().savePref(AsyncStorageManager.getInstance().preferences.showUpdate5.key, '0'); AsyncStorageManager.getInstance().savePref(AsyncStorageManager.getInstance().preferences.showUpdate5.key, '0');
AsyncStorageManager.getInstance().savePref(AsyncStorageManager.getInstance().preferences.showAprilFoolsStart.key, '0');
} }
async componentDidMount() { async componentDidMount() {
@ -84,7 +89,7 @@ export default class App extends React.Component<Props, State> {
// Wait for custom fonts to be loaded before showing the app // Wait for custom fonts to be loaded before showing the app
await AsyncStorageManager.getInstance().loadPreferences(); await AsyncStorageManager.getInstance().loadPreferences();
ThemeManager.getInstance().setUpdateThemeCallback(this.onUpdateTheme); ThemeManager.getInstance().setUpdateThemeCallback(this.onUpdateTheme);
await NotificationsManager.initExpoToken(); // await NotificationsManager.initExpoToken();
this.onLoadFinished(); this.onLoadFinished();
} }
@ -96,6 +101,7 @@ export default class App extends React.Component<Props, State> {
currentTheme: ThemeManager.getCurrentTheme(), currentTheme: ThemeManager.getCurrentTheme(),
showIntro: AsyncStorageManager.getInstance().preferences.showIntro.current === '1', showIntro: AsyncStorageManager.getInstance().preferences.showIntro.current === '1',
showUpdate: AsyncStorageManager.getInstance().preferences.showUpdate5.current === '1', showUpdate: AsyncStorageManager.getInstance().preferences.showUpdate5.current === '1',
showAprilFools: AprilFoolsManager.getInstance().isAprilFoolsEnabled() && AsyncStorageManager.getInstance().preferences.showAprilFoolsStart.current === '1',
}); });
// Status bar goes dark if set too fast // Status bar goes dark if set too fast
setTimeout(this.setupStatusBar, 1000); setTimeout(this.setupStatusBar, 1000);
@ -108,10 +114,11 @@ export default class App extends React.Component<Props, State> {
render() { render() {
if (this.state.isLoading) { if (this.state.isLoading) {
return null; return null;
} else if (this.state.showIntro || this.state.showUpdate) { } else if (this.state.showIntro || this.state.showUpdate || this.state.showAprilFools) {
return <CustomIntroSlider return <CustomIntroSlider
onDone={this.onIntroDone} onDone={this.onIntroDone}
isUpdate={this.state.showUpdate && !this.state.showIntro} isUpdate={this.state.showUpdate && !this.state.showIntro}
isAprilFools={this.state.showAprilFools && !this.state.showIntro}
/>; />;
} else { } else {
return ( return (

View file

@ -40,12 +40,14 @@ const styles = StyleSheet.create({
type Props = { type Props = {
onDone: Function, onDone: Function,
isUpdate: boolean, isUpdate: boolean,
isAprilFools: boolean,
}; };
export default class CustomIntroSlider extends React.Component<Props> { export default class CustomIntroSlider extends React.Component<Props> {
introSlides: Array<Object>; introSlides: Array<Object>;
updateSlides: Array<Object>; updateSlides: Array<Object>;
aprilFoolsSlides: Array<Object>;
constructor() { constructor() {
super(); super();
@ -109,6 +111,15 @@ export default class CustomIntroSlider extends React.Component<Props> {
colors: ['#e01928', '#be1522'], colors: ['#e01928', '#be1522'],
}, },
]; ];
this.aprilFoolsSlides = [
{
key: '1',
title: i18n.t('intro.aprilFoolsSlide.title'),
text: i18n.t('intro.aprilFoolsSlide.text'),
icon: 'fish',
colors: ['#e01928', '#be1522'],
},
];
} }
@ -147,6 +158,8 @@ export default class CustomIntroSlider extends React.Component<Props> {
let slides = this.introSlides; let slides = this.introSlides;
if (this.props.isUpdate) if (this.props.isUpdate)
slides = this.updateSlides; slides = this.updateSlides;
else if (this.props.isAprilFools)
slides = this.aprilFoolsSlides;
return ( return (
<AppIntroSlider <AppIntroSlider
renderItem={CustomIntroSlider.getIntroRenderItem} renderItem={CustomIntroSlider.getIntroRenderItem}

View file

@ -67,6 +67,7 @@ export default class AprilFoolsManager {
washers.splice(4, 1, ninth); washers.splice(4, 1, ninth);
washers.splice(1, 1, first); washers.splice(1, 1, first);
washers.splice(0, 1, fifth); washers.splice(0, 1, fifth);
// washers.push(fifth);
} }
} }
@ -74,6 +75,27 @@ export default class AprilFoolsManager {
return AprilFoolsManager.fakeMachineNumber[number]; return AprilFoolsManager.fakeMachineNumber[number];
} }
static getAprilFoolsTheme(currentTheme: Object) {
return {
...currentTheme,
colors: {
...currentTheme.colors,
primary: '#00be45',
accent: '#00be45',
background: '#d02eee',
tabIcon: "#380d43",
card: "#eed639",
surface: "#eed639",
dividerBackground: '#c72ce4',
textDisabled: '#b9b9b9',
// Calendar/Agenda
agendaBackgroundColor: '#c72ce4',
agendaDayTextColor: '#6d6d6d',
},
};
}
isAprilFoolsEnabled() { isAprilFoolsEnabled() {
return this.aprilFoolsEnabled; return this.aprilFoolsEnabled;
} }

View file

@ -78,7 +78,12 @@ export default class AsyncStorageManager {
key: 'planexShowBanner', key: 'planexShowBanner',
default: '1', default: '1',
current: '', current: '',
} },
showAprilFoolsStart: {
key: 'showAprilFoolsStart',
default: '1',
current: '',
},
}; };
/** /**

View file

@ -2,6 +2,7 @@
import AsyncStorageManager from "./AsyncStorageManager"; import AsyncStorageManager from "./AsyncStorageManager";
import {DarkTheme, DefaultTheme} from 'react-native-paper'; import {DarkTheme, DefaultTheme} from 'react-native-paper';
import AprilFoolsManager from "./AprilFoolsManager";
import {Appearance} from 'react-native-appearance'; import {Appearance} from 'react-native-appearance';
const colorScheme = Appearance.getColorScheme(); const colorScheme = Appearance.getColorScheme();
@ -122,6 +123,13 @@ export default class ThemeManager {
* @returns {Object} * @returns {Object}
*/ */
static getCurrentTheme(): Object { static getCurrentTheme(): Object {
if (AprilFoolsManager.getInstance().isAprilFoolsEnabled())
return AprilFoolsManager.getAprilFoolsTheme(ThemeManager.getWhiteTheme());
else
return ThemeManager.getBaseTheme()
}
static getBaseTheme() {
if (ThemeManager.getNightMode()) if (ThemeManager.getNightMode())
return ThemeManager.getDarkTheme(); return ThemeManager.getDarkTheme();
else else