-
Notifications
You must be signed in to change notification settings - Fork 1
/
greetings_toast.js
306 lines (282 loc) · 14 KB
/
greetings_toast.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
// ==SE_module==
// name: greetings_toast
// displayName: Greetings Toast
// description: A Script that shows a greetings toast on the startup of Snapchat. Enter your username and birthday in the format: username dd/mm/yyyy Note: Avoid including your full name as the toast will not work properly. Eg: Suryadip 20/01/1900.
// version: 3.0
// author: Suryadip Sarkar
// credits: Gabriel Modz & Jacob Thomas & Jimothy
// ==/SE_module==
var networking = require("networking");
var messaging = require("messaging");
var config = require("config");
var im = require("interface-manager");
var ipc = require("ipc");
var javaInterfaces = require("java-interfaces");
var hooker = require("hooker");
var events = require("events");
var settingsContext = {
events: [],
};
var greetingPresets = {
morning: {
Formal: [
"Good morning, {username}. I hope your day is productive.",
"Wishing you a successful morning, {username}.",
"Good morning, {username}. May your day be filled with accomplishments.",
"A formal good morning to you, {username}.",
"Greetings, {username}. I trust your morning is going well.",
"Good morning, {username}. I hope this day brings you success.",
"Wishing you a professional and productive morning, {username}.",
"Good morning, {username}. May your day be efficient and prosperous.",
"A cordial good morning to you, {username}.",
"Greetings and good morning, {username}. May your day be filled with achievement."
],
Informal: [
"Morning, {username}! Hope you slept well!",
"Hey {username}, good morning!",
"Rise and shine, {username}!",
"Good morning, {username}! Ready for a great day?",
"Morning, {username}! Let's make today awesome!",
"Hey there, {username}! Good morning to you!",
"Wakey wakey, {username}! It's a brand new day!",
"Morning, sunshine! Hope you're ready for the day, {username}!",
"Hey {username}, hope your morning's off to a good start!",
"Good morning, {username}! Let's rock this day!"
],
Humorous: [
"Good morning, {username}! Did you remember to put your face on?",
"Rise and shine, {username}! Or just rise, no pressure.",
"Morning, {username}! I hope your coffee is as strong as your will to live today.",
"Good morning, {username}! Remember, today is a gift. That's why they call it the present. Ba dum tss!",
"Wakey wakey, eggs and bakey, {username}! Unless you're vegan, then it's... tofu and... no-fu?",
"Good morning, {username}! Time to adult again. My condolences.",
"Rise and grind, {username}! Or hit snooze and whine. Your choice!",
"Morning, {username}! Just remember, your bed will always be there for you at the end of the day.",
"Good morning, {username}! May your coffee be strong and your Monday be short.",
"Wakey wakey, {username}! It's time to make the donuts... or eat them. Preferably eat them."
]
},
afternoon: {
Formal: [
"Good afternoon, {username}. I hope your day is progressing well.",
"Wishing you a productive afternoon, {username}.",
"Good afternoon, {username}. May the rest of your day be successful.",
"A formal good afternoon to you, {username}.",
"Greetings, {username}. I trust your afternoon is going smoothly.",
"Good afternoon, {username}. I hope this afternoon brings you continued success.",
"Wishing you a professional and efficient afternoon, {username}.",
"Good afternoon, {username}. May your afternoon be productive and prosperous.",
"A cordial good afternoon to you, {username}.",
"Greetings and good afternoon, {username}. May your afternoon be filled with accomplishment."
],
Informal: [
"Hey {username}, good afternoon!",
"Afternoon, {username}! How's your day going?",
"Hi there, {username}! Hope you're having a good afternoon!",
"Good afternoon, {username}! Keep up the good work!",
"Afternoon, {username}! Time for a coffee break?",
"Hey {username}, hope your afternoon's going well!",
"Good afternoon, {username}! Halfway through the day already!",
"Afternoon, {username}! Don't forget to stretch and hydrate!",
"Hi {username}, hope you're having a productive afternoon!",
"Good afternoon, {username}! Keep that energy up!"
],
Humorous: [
"Good afternoon, {username}! Is it too early for happy hour?",
"Afternoon, {username}! Time to pretend to look busy!",
"Hey {username}, good afternoon! Remember, naps are just time travel to dinner.",
"Good afternoon, {username}! Did you survive the morning?",
"Afternoon, {username}! If you're reading this, your coffee has worn off.",
"Hey {username}, it's officially 'why am I so tired?' o'clock!",
"Good afternoon, {username}! Time to start thinking about what's for dinner.",
"Afternoon, {username}! Remember, it's all downhill from here... until tomorrow morning.",
"Hey {username}, good afternoon! May your coffee be strong and your patience stronger.",
"Good afternoon, {username}! Time to start planning your excuse for leaving early."
]
},
evening: {
Formal: [
"Good evening, {username}. I hope you had a productive day.",
"Wishing you a pleasant evening, {username}.",
"Good evening, {username}. May your evening be relaxing and enjoyable.",
"A formal good evening to you, {username}.",
"Greetings, {username}. I trust your evening is going well.",
"Good evening, {username}. I hope this evening brings you relaxation.",
"Wishing you a peaceful and restful evening, {username}.",
"Good evening, {username}. May your evening be calm and satisfying.",
"A cordial good evening to you, {username}.",
"Greetings and good evening, {username}. May your evening be filled with tranquility."
],
Informal: [
"Evening, {username}! How was your day?",
"Hey {username}, good evening!",
"Hi there, {username}! Hope you're having a nice evening!",
"Good evening, {username}! Time to relax and unwind!",
"Evening, {username}! What's on the agenda tonight?",
"Hey {username}, hope you're enjoying your evening!",
"Good evening, {username}! Ready to call it a day?",
"Evening, {username}! Time for some me-time!",
"Hi {username}, hope you're winding down nicely!",
"Good evening, {username}! Let's end this day on a high note!"
],
Humorous: [
"Good evening, {username}! Time to trade your day pants for stretchy pants!",
"Evening, {username}! Let the Netflix binge begin!",
"Hey {username}, good evening! Remember, sleep is just a time machine to breakfast.",
"Good evening, {username}! Did you remember to adult today?",
"Evening, {username}! Time to start regretting that 3 PM coffee.",
"Hey {username}, it's officially 'why did I make plans?' o'clock!",
"Good evening, {username}! Time to start your night shift as a professional couch potato.",
"Evening, {username}! Remember, tomorrow is another day to pretend you're a functioning adult.",
"Hey {username}, good evening! May your evening be filled with wine... I mean, relaxation.",
"Good evening, {username}! Time to start planning your elaborate excuse for tomorrow's lateness."
]
},
birthday: [
"Happy Birthday, {username}! Wishing you all the best!",
"Happy Birthday, {username}! Hope your day is filled with joy!",
"Happy Birthday, {username}! Enjoy your special day!",
"Happy Birthday, {username}! Have a fantastic day!",
"Happy Birthday, {username}! Wishing you a year full of happiness!",
"Happy Birthday, {username}! Hope all your dreams come true!",
"Happy Birthday, {username}! Enjoy every moment!",
"Happy Birthday, {username}! Wishing you a wonderful year ahead!",
"Happy Birthday, {username}! Have a great celebration!",
"Happy Birthday, {username}! May your day be as amazing as you are!",
"Happy Birthday, {username}! Wishing you lots of love and happiness!",
"Happy Birthday, {username}! Hope you have a blast!",
"Happy Birthday, {username}! Enjoy your special day to the fullest!",
"Happy Birthday, {username}! Wishing you a fantastic year ahead!",
"Happy Birthday, {username}! Hope your day is as wonderful as you!",
"Happy Birthday, {username}! Celebrate and enjoy your day!",
"Happy Birthday, {username}! Wishing you all the best on your special day!",
"Happy Birthday, {username}! Hope your birthday is amazing!",
"Happy Birthday, {username}! Have an awesome day!",
"Happy Birthday, {username}! Wishing you a day filled with joy!",
"Happy Birthday, {username}! Enjoy your special moment!",
"Happy Birthday, {username}! Have a fabulous day!",
"Happy Birthday, {username}! Wishing you a lifetime of happiness!",
"Happy Birthday, {username}! Hope your day is spectacular!",
"Happy Birthday, {username}! Celebrate your special day!",
"Happy Birthday, {username}! Have a great birthday!",
"Happy Birthday, {username}! Wishing you a joyful day!",
"Happy Birthday, {username}! Enjoy every minute of your special day!",
"Happy Birthday, {username}! Hope your birthday is unforgettable!",
"Happy Birthday, {username}! Have a wonderful celebration!"
]
};
function createManagerToolBoxUI() {
settingsContext.events.push({
start: function (builder) {
builder.row(function (builder) {
builder.textInput("Enter your username and birthday (username dd/mm/yyyy)", config.get("userInput", ""), function (value) {
config.set("userInput", value, true);
}).maxLines(1)
.singleLine(true);
});
var tones = ["Formal", "Informal", "Humorous"];
var currentTone = config.get("tone", "Informal");
builder.row(function (builder) {
var text = builder.text("Tone: " + currentTone);
builder.slider(0, tones.length - 1, 1, tones.indexOf(currentTone), function (value) {
var tone = tones[value];
text.label("Tone: " + tone);
config.set("tone", tone, true);
});
});
builder.row(function (builder) {
builder.button("Test Greetings Toast", function () {
testGreetingsToast();
});
});
},
});
}
function getCurrentDateTime() {
var now = new Date();
var day = String(now.getDate()).padStart(2, '0');
var month = String(now.getMonth() + 1).padStart(2, '0');
var year = now.getFullYear();
var hours = now.getHours();
return { day, month, year, hours };
}
function getAge(birthday) {
var today = new Date();
var birthDate = new Date(birthday.split('/').reverse().join('-'));
var age = today.getFullYear() - birthDate.getFullYear();
var monthDifference = today.getMonth() - birthDate.getMonth();
if (monthDifference < 0 || (monthDifference === 0 && today.getDate() < birthDate.getDate())) {
age--;
}
return age;
}
function isValidDateFormat(dateString) {
var dateRegex = /^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/\d{4}$/;
if (!dateRegex.test(dateString)) {
return false;
}
var parts = dateString.split('/');
var day = parseInt(parts[0], 10);
var month = parseInt(parts[1], 10) - 1;
var year = parseInt(parts[2], 10);
var date = new Date(year, month, day);
return date.getDate() === day && date.getMonth() === month && date.getFullYear() === year;
}
function getRandomElement(array) {
return array[Math.floor(Math.random() * array.length)];
}
function testGreetingsToast() {
const userInput = String(config.get("userInput"));
if (!userInput) {
longToast("Please enter your username and birthday first.");
return;
}
var [username, userBirthday] = userInput.split(' ');
if (!username || !userBirthday) {
longToast("Invalid input format. Please use 'username dd/mm/yyyy'.");
return;
}
if (!isValidDateFormat(userBirthday)) {
longToast("Invalid date format. Please use dd/mm/yyyy.");
return;
}
displayToast();
}
function displayToast() {
const userInput = String(config.get("userInput"));
const { day, month, hours } = getCurrentDateTime();
const tone = config.get("tone", "Informal");
var [username, userBirthday] = userInput.split(' ');
var [bDay, bMonth] = userBirthday.split('/');
var predefinedPrompt;
if (day === bDay && month === bMonth) {
var age = getAge(userBirthday);
predefinedPrompt = getRandomElement(greetingPresets.birthday).replace('{username}', username) + ` You are ${age} years old today!`;
} else {
var timeOfDay;
if (hours < 12) {
timeOfDay = "morning";
} else if (hours < 18) {
timeOfDay = "afternoon";
} else {
timeOfDay = "evening";
}
predefinedPrompt = getRandomElement(greetingPresets[timeOfDay][tone]).replace('{username}', username);
}
longToast(predefinedPrompt);
}
module.onSnapMainActivityCreate = activity => {
testGreetingsToast();
};
function createInterface() {
createManagerToolBoxUI();
}
function start(_) {
createInterface();
}
start();
im.create("settings" /* EnumUI.SETTINGS */, function (builder, args) {
settingsContext.events.forEach(function (event) {
event.start(builder, args);
});
});