123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- // @flow
-
- import type {ProxiwashMachineType} from '../screens/Proxiwash/ProxiwashScreen';
- import type {CustomThemeType} from './ThemeManager';
- import type {RuFoodCategoryType} from '../screens/Services/SelfMenuScreen';
-
- /**
- * Singleton class used to manage april fools
- */
- export default class AprilFoolsManager {
- static instance: AprilFoolsManager | null = null;
-
- static fakeMachineNumber = [
- '',
- 'cos(ln(1))',
- '0,5⁻¹',
- '567/189',
- '√2×√8',
- '√50×sin(9π/4)',
- '⌈π+e⌉',
- 'div(rot(B))+7',
- '4×cosh(0)+4',
- '8-(-i)²',
- '|5√2+5√2i|',
- '1×10¹+1×10⁰',
- 'Re(√192e^(iπ/6))',
- ];
-
- aprilFoolsEnabled: boolean;
-
- constructor() {
- const 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 {
- if (AprilFoolsManager.instance == null)
- AprilFoolsManager.instance = new AprilFoolsManager();
- return AprilFoolsManager.instance;
- }
-
- /**
- * Adds fake menu entries
- *
- * @param menu
- * @returns {Object}
- */
- static getFakeMenuItem(
- menu: Array<RuFoodCategoryType>,
- ): Array<RuFoodCategoryType> {
- menu[1].dishes.splice(4, 0, {name: 'Coq au vin'});
- menu[1].dishes.splice(2, 0, {name: "Bat'Soupe"});
- menu[1].dishes.splice(1, 0, {name: 'Pave de loup'});
- menu[1].dishes.splice(0, 0, {name: 'Béranger à point'});
- menu[1].dishes.splice(0, 0, {name: "Pieds d'Arnaud"});
- return menu;
- }
-
- /**
- * Changes proxiwash dryers order
- *
- * @param dryers
- */
- static getNewProxiwashDryerOrderedList(
- dryers: Array<ProxiwashMachineType> | null,
- ) {
- if (dryers != null) {
- const second = dryers[1];
- dryers.splice(1, 1);
- dryers.push(second);
- }
- }
-
- /**
- * Changes proxiwash washers order
- *
- * @param washers
- */
- static getNewProxiwashWasherOrderedList(
- washers: Array<ProxiwashMachineType> | null,
- ) {
- if (washers != null) {
- const first = washers[0];
- const second = washers[1];
- const fifth = washers[4];
- const ninth = washers[8];
- washers.splice(8, 1, second);
- washers.splice(4, 1, ninth);
- washers.splice(1, 1, first);
- washers.splice(0, 1, fifth);
- }
- }
-
- /**
- * Gets the new display number for the given machine number
- *
- * @param number
- * @returns {string}
- */
- static getProxiwashMachineDisplayNumber(number: number): string {
- return AprilFoolsManager.fakeMachineNumber[number];
- }
-
- /**
- * Gets the new and ugly april fools theme
- *
- * @param currentTheme
- * @returns {{colors: {textDisabled: string, agendaDayTextColor: string, surface: string, background: string, dividerBackground: string, accent: string, agendaBackgroundColor: string, tabIcon: string, card: string, primary: string}}}
- */
- static getAprilFoolsTheme(currentTheme: CustomThemeType): CustomThemeType {
- 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(): boolean {
- return this.aprilFoolsEnabled;
- }
- }
|