Added basic april fools functionality

This commit is contained in:
keplyx 2020-03-08 12:50:18 +01:00
parent b625ac7255
commit 9e90c9d8f3
4 changed files with 105 additions and 14 deletions

View file

@ -8,6 +8,7 @@ import WebDataManager from "../utils/WebDataManager";
import PlanningEventManager from '../utils/PlanningEventManager'; import PlanningEventManager from '../utils/PlanningEventManager';
import {Avatar, Divider, List} from 'react-native-paper'; import {Avatar, Divider, List} from 'react-native-paper';
import CustomAgenda from "../components/CustomAgenda"; import CustomAgenda from "../components/CustomAgenda";
import AprilFoolsManager from "../utils/AprilFoolsManager";
LocaleConfig.locales['fr'] = { LocaleConfig.locales['fr'] = {
monthNames: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'], monthNames: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
@ -209,6 +210,8 @@ export default class PlanningScreen extends React.Component<Props, State> {
this.pushEventInOrder(agendaItems, eventList[i], PlanningEventManager.getEventStartDate(eventList[i])); this.pushEventInOrder(agendaItems, eventList[i], PlanningEventManager.getEventStartDate(eventList[i]));
} }
} }
if (AprilFoolsManager.getInstance().isAprilFoolsEnabled())
agendaItems["2020-04-01"].push(AprilFoolsManager.getFakeEvent());
this.setState({agendaItems: agendaItems}) this.setState({agendaItems: agendaItems})
} }

View file

@ -5,7 +5,8 @@ import {View} from 'react-native';
import ThemeManager from "../utils/ThemeManager"; import ThemeManager from "../utils/ThemeManager";
import i18n from "i18n-js"; import i18n from "i18n-js";
import WebSectionList from "../components/WebSectionList"; import WebSectionList from "../components/WebSectionList";
import {Card, Text, Title} from 'react-native-paper'; import {Card, Text} from 'react-native-paper';
import AprilFoolsManager from "../utils/AprilFoolsManager";
const DATA_URL = "https://etud.insa-toulouse.fr/~amicale_app/menu/menu_data.json"; const DATA_URL = "https://etud.insa-toulouse.fr/~amicale_app/menu/menu_data.json";
@ -72,6 +73,8 @@ export default class SelfMenuScreen extends React.Component<Props> {
} }
]; ];
} }
if (AprilFoolsManager.getInstance().isAprilFoolsEnabled() && fetchedData.length > 0)
fetchedData[0].meal[0].foodcategory = AprilFoolsManager.getFakeMenuItem(fetchedData[0].meal[0].foodcategory);
// fetched data is an array here // fetched data is an array here
for (let i = 0; i < fetchedData.length; i++) { for (let i = 0; i < fetchedData.length; i++) {
result.push( result.push(
@ -125,18 +128,18 @@ export default class SelfMenuScreen extends React.Component<Props> {
flex: 0, flex: 0,
margin: 10, margin: 10,
}}> }}>
<Card.Title <Card.Title
title={item.name} title={item.name}
/> />
<View style={{ <View style={{
width: '80%', width: '80%',
marginLeft: 'auto', marginLeft: 'auto',
marginRight: 'auto', marginRight: 'auto',
borderBottomWidth: 1, borderBottomWidth: 1,
borderBottomColor: ThemeManager.getCurrentThemeVariables().primary, borderBottomColor: ThemeManager.getCurrentThemeVariables().primary,
marginTop: 10, marginTop: 10,
marginBottom: 5, marginBottom: 5,
}}/> }}/>
<Card.Content> <Card.Content>
{item.dishes.map((object) => {item.dishes.map((object) =>
<View> <View>

View file

@ -0,0 +1,56 @@
// @flow
/**
* Singleton class used to manage themes
*/
export default class AprilFoolsManager {
static instance: AprilFoolsManager | null = null;
aprilFoolsEnabled: boolean;
constructor() {
let today = new Date();
this.aprilFoolsEnabled = (today.getDate() === 1 && today.getMonth() === 3);
}
/**
* Get this class instance or create one if none is found
* @returns {ThemeManager}
*/
static getInstance(): AprilFoolsManager {
return AprilFoolsManager.instance === null ?
AprilFoolsManager.instance = new AprilFoolsManager() :
AprilFoolsManager.instance;
}
static getFakeEvent() {
return {
category_id: 1,
club: "Coucou",
date_begin: "2020-04-01 20:30:00",
date_end: "2020-04-01 23:59:00",
description: "Trop génial",
id: "-1",
logo: null,
title: "Super event trop whoaou",
url: null
};
}
static getFakeMenuItem(menu: Object) {
if (menu[1]["dishes"].length >= 3) {
menu[1]["dishes"].splice(0, 0, {name: "Truc à la con"});
menu[1]["dishes"].splice(2, 0, {name: "Autre truc à la con"});
} else {
menu[1]["dishes"].push({name: "Truc à la con"});
menu[1]["dishes"].push({name: "Autre truc à la con"});
}
return menu;
}
isAprilFoolsEnabled() {
return this.aprilFoolsEnabled;
}
};

View file

@ -1,8 +1,9 @@
// @flow // @flow
import AsyncStorageManager from "./AsyncStorageManager"; import AsyncStorageManager from "./AsyncStorageManager";
// import {DarkTheme as NavDarkTheme, DefaultTheme as NavDefaultTheme} from '@react-navigation/native';
import {DarkTheme, DefaultTheme} from 'react-native-paper'; import {DarkTheme, DefaultTheme} from 'react-native-paper';
import AprilFoolsManager from "./AprilFoolsManager";
/** /**
* Singleton class used to manage themes * Singleton class used to manage themes
*/ */
@ -92,6 +93,27 @@ export default class ThemeManager {
}; };
} }
static getAprilFoolsTheme() {
return {
...ThemeManager.getBaseTheme(),
colors: {
...ThemeManager.getBaseTheme().colors,
primary: '#bebe03',
accent: '#bebe03',
background: '#5b3e02',
tabBackground: "#5b3e02",
card: "#5b3e02",
surface: "#5b3e02",
dividerBackground: '#362201',
textDisabled: '#b9b9b9',
// Calendar/Agenda
agendaBackgroundColor: '#5b3e02',
agendaDayTextColor: '#6d6d6d',
},
};
}
/** /**
* Get this class instance or create one if none is found * Get this class instance or create one if none is found
* @returns {ThemeManager} * @returns {ThemeManager}
@ -114,6 +136,13 @@ export default class ThemeManager {
* @returns {Object} * @returns {Object}
*/ */
static getCurrentTheme(): Object { static getCurrentTheme(): Object {
if (AprilFoolsManager.getInstance().isAprilFoolsEnabled())
return ThemeManager.getAprilFoolsTheme();
else
ThemeManager.getBaseTheme()
}
static getBaseTheme() {
if (ThemeManager.getNightMode()) if (ThemeManager.getNightMode())
return ThemeManager.getDarkTheme(); return ThemeManager.getDarkTheme();
else else