Browse Source

Added basic april fools functionality

keplyx 4 years ago
parent
commit
9e90c9d8f3
4 changed files with 105 additions and 14 deletions
  1. 3
    0
      screens/PlanningScreen.js
  2. 16
    13
      screens/SelfMenuScreen.js
  3. 56
    0
      utils/AprilFoolsManager.js
  4. 30
    1
      utils/ThemeManager.js

+ 3
- 0
screens/PlanningScreen.js View File

@@ -8,6 +8,7 @@ import WebDataManager from "../utils/WebDataManager";
8 8
 import PlanningEventManager from '../utils/PlanningEventManager';
9 9
 import {Avatar, Divider, List} from 'react-native-paper';
10 10
 import CustomAgenda from "../components/CustomAgenda";
11
+import AprilFoolsManager from "../utils/AprilFoolsManager";
11 12
 
12 13
 LocaleConfig.locales['fr'] = {
13 14
     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> {
209 210
                 this.pushEventInOrder(agendaItems, eventList[i], PlanningEventManager.getEventStartDate(eventList[i]));
210 211
             }
211 212
         }
213
+        if (AprilFoolsManager.getInstance().isAprilFoolsEnabled())
214
+            agendaItems["2020-04-01"].push(AprilFoolsManager.getFakeEvent());
212 215
         this.setState({agendaItems: agendaItems})
213 216
     }
214 217
 

+ 16
- 13
screens/SelfMenuScreen.js View File

@@ -5,7 +5,8 @@ import {View} from 'react-native';
5 5
 import ThemeManager from "../utils/ThemeManager";
6 6
 import i18n from "i18n-js";
7 7
 import WebSectionList from "../components/WebSectionList";
8
-import {Card, Text, Title} from 'react-native-paper';
8
+import {Card, Text} from 'react-native-paper';
9
+import AprilFoolsManager from "../utils/AprilFoolsManager";
9 10
 
10 11
 const DATA_URL = "https://etud.insa-toulouse.fr/~amicale_app/menu/menu_data.json";
11 12
 
@@ -72,6 +73,8 @@ export default class SelfMenuScreen extends React.Component<Props> {
72 73
                 }
73 74
             ];
74 75
         }
76
+        if (AprilFoolsManager.getInstance().isAprilFoolsEnabled() && fetchedData.length > 0)
77
+            fetchedData[0].meal[0].foodcategory = AprilFoolsManager.getFakeMenuItem(fetchedData[0].meal[0].foodcategory);
75 78
         // fetched data is an array here
76 79
         for (let i = 0; i < fetchedData.length; i++) {
77 80
             result.push(
@@ -125,18 +128,18 @@ export default class SelfMenuScreen extends React.Component<Props> {
125 128
                 flex: 0,
126 129
                 margin: 10,
127 130
             }}>
128
-                    <Card.Title
129
-                        title={item.name}
130
-                    />
131
-                    <View style={{
132
-                        width: '80%',
133
-                        marginLeft: 'auto',
134
-                        marginRight: 'auto',
135
-                        borderBottomWidth: 1,
136
-                        borderBottomColor: ThemeManager.getCurrentThemeVariables().primary,
137
-                        marginTop: 10,
138
-                        marginBottom: 5,
139
-                    }}/>
131
+                <Card.Title
132
+                    title={item.name}
133
+                />
134
+                <View style={{
135
+                    width: '80%',
136
+                    marginLeft: 'auto',
137
+                    marginRight: 'auto',
138
+                    borderBottomWidth: 1,
139
+                    borderBottomColor: ThemeManager.getCurrentThemeVariables().primary,
140
+                    marginTop: 10,
141
+                    marginBottom: 5,
142
+                }}/>
140 143
                 <Card.Content>
141 144
                     {item.dishes.map((object) =>
142 145
                         <View>

+ 56
- 0
utils/AprilFoolsManager.js View File

@@ -0,0 +1,56 @@
1
+// @flow
2
+
3
+/**
4
+ * Singleton class used to manage themes
5
+ */
6
+export default class AprilFoolsManager {
7
+
8
+    static instance: AprilFoolsManager | null = null;
9
+
10
+    aprilFoolsEnabled: boolean;
11
+
12
+    constructor() {
13
+        let today = new Date();
14
+        this.aprilFoolsEnabled = (today.getDate() === 1 && today.getMonth() === 3);
15
+    }
16
+
17
+    /**
18
+     * Get this class instance or create one if none is found
19
+     * @returns {ThemeManager}
20
+     */
21
+    static getInstance(): AprilFoolsManager {
22
+        return AprilFoolsManager.instance === null ?
23
+            AprilFoolsManager.instance = new AprilFoolsManager() :
24
+            AprilFoolsManager.instance;
25
+    }
26
+
27
+    static getFakeEvent() {
28
+        return {
29
+            category_id: 1,
30
+            club: "Coucou",
31
+            date_begin: "2020-04-01 20:30:00",
32
+            date_end: "2020-04-01 23:59:00",
33
+            description: "Trop génial",
34
+            id: "-1",
35
+            logo: null,
36
+            title: "Super event trop whoaou",
37
+            url: null
38
+        };
39
+    }
40
+
41
+    static getFakeMenuItem(menu: Object) {
42
+        if (menu[1]["dishes"].length >= 3) {
43
+            menu[1]["dishes"].splice(0, 0, {name: "Truc à la con"});
44
+            menu[1]["dishes"].splice(2, 0, {name: "Autre truc à la con"});
45
+        } else {
46
+            menu[1]["dishes"].push({name: "Truc à la con"});
47
+            menu[1]["dishes"].push({name: "Autre truc à la con"});
48
+        }
49
+        return menu;
50
+    }
51
+
52
+    isAprilFoolsEnabled() {
53
+        return this.aprilFoolsEnabled;
54
+    }
55
+
56
+};

+ 30
- 1
utils/ThemeManager.js View File

@@ -1,8 +1,9 @@
1 1
 // @flow
2 2
 
3 3
 import AsyncStorageManager from "./AsyncStorageManager";
4
-// import {DarkTheme as NavDarkTheme, DefaultTheme as NavDefaultTheme} from '@react-navigation/native';
5 4
 import {DarkTheme, DefaultTheme} from 'react-native-paper';
5
+import AprilFoolsManager from "./AprilFoolsManager";
6
+
6 7
 /**
7 8
  * Singleton class used to manage themes
8 9
  */
@@ -92,6 +93,27 @@ export default class ThemeManager {
92 93
         };
93 94
     }
94 95
 
96
+    static getAprilFoolsTheme() {
97
+        return {
98
+            ...ThemeManager.getBaseTheme(),
99
+            colors: {
100
+                ...ThemeManager.getBaseTheme().colors,
101
+                primary: '#bebe03',
102
+                accent: '#bebe03',
103
+                background: '#5b3e02',
104
+                tabBackground: "#5b3e02",
105
+                card: "#5b3e02",
106
+                surface: "#5b3e02",
107
+                dividerBackground: '#362201',
108
+                textDisabled: '#b9b9b9',
109
+
110
+                // Calendar/Agenda
111
+                agendaBackgroundColor: '#5b3e02',
112
+                agendaDayTextColor: '#6d6d6d',
113
+            },
114
+        };
115
+    }
116
+
95 117
     /**
96 118
      * Get this class instance or create one if none is found
97 119
      * @returns {ThemeManager}
@@ -114,6 +136,13 @@ export default class ThemeManager {
114 136
      * @returns {Object}
115 137
      */
116 138
     static getCurrentTheme(): Object {
139
+        if (AprilFoolsManager.getInstance().isAprilFoolsEnabled())
140
+            return ThemeManager.getAprilFoolsTheme();
141
+         else
142
+            ThemeManager.getBaseTheme()
143
+    }
144
+
145
+    static getBaseTheme() {
117 146
         if (ThemeManager.getNightMode())
118 147
             return ThemeManager.getDarkTheme();
119 148
         else

Loading…
Cancel
Save