forked from cory/tildefriends
All of the changes that have been sitting on tildepi for ages. For posterity.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3530 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
179
packages/cory/invite2/invite2.js
Normal file
179
packages/cory/invite2/invite2.js
Normal file
@ -0,0 +1,179 @@
|
||||
"use strict";
|
||||
|
||||
//! {"require": ["smtp"], "permissions": ["network"]}
|
||||
|
||||
let administrator = core.user.name == core.user.packageOwner;
|
||||
|
||||
function lameHash(value) {
|
||||
let result = 12945;
|
||||
for (let i = 0; i < value.length; i++) {
|
||||
result += value.charCodeAt(i);
|
||||
result *= 31;
|
||||
result &= 0x7fffffff;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
terminal.setEcho(false);
|
||||
if (administrator) {
|
||||
terminal.print({style: "font-size: x-large", value: "Edit", command: "command:" + JSON.stringify("command")});
|
||||
}
|
||||
|
||||
let gInvite = null;
|
||||
|
||||
function display() {
|
||||
return database.get("invite").then(function(data) {
|
||||
if (data) {
|
||||
let invite = JSON.parse(data);
|
||||
let promises = [];
|
||||
for (let i in invite.emails) {
|
||||
promises.push(database.get("rsvp." + lameHash(invite.emails[i])));
|
||||
}
|
||||
return Promise.all(promises).then(function(rsvps) {
|
||||
for (let i in rsvps) {
|
||||
if (rsvps[i]) {
|
||||
rsvps[i] = JSON.parse(rsvps[i]);
|
||||
}
|
||||
}
|
||||
terminal.print({style: "font-size: xx-large", value: invite.title});
|
||||
terminal.print(invite.message);
|
||||
for (let i in invite.food) {
|
||||
let line = [invite.food[i], "?", " ", "+", " ", "-"];
|
||||
// hi
|
||||
terminal.print({style: "font-size: x-large", value: line});
|
||||
}
|
||||
gInvite = invite;
|
||||
});
|
||||
}
|
||||
}).catch(function(error) {
|
||||
terminal.print(error);
|
||||
});
|
||||
}
|
||||
|
||||
core.register("hashChange", function(event) {
|
||||
let hash = event.hash;
|
||||
if (hash && hash.charAt(0) == '#') {
|
||||
hash = hash.substring(1);
|
||||
}
|
||||
if (hash) {
|
||||
let invite = gInvite || {};
|
||||
for (let i in invite.emails) {
|
||||
let email = invite.emails[i];
|
||||
if (lameHash(email).toString() == hash) {
|
||||
terminal.print("hash match!", email);
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
core.register("submit", function(event) {
|
||||
let invite = event.value;
|
||||
invite.emails = invite.emails.split(",");
|
||||
invite.food = invite.food.split(",");
|
||||
for (let i in invite.emails) {
|
||||
let url = "https://www.tildefriends.net/~cory/invite2#" + lameHash(invite.emails[i]).toString();
|
||||
terminal.print({href: url});
|
||||
}
|
||||
database.set("invite", JSON.stringify(invite));
|
||||
});
|
||||
|
||||
display();
|
||||
|
||||
core.register("onInput", function(input) {
|
||||
if (input.substring(0, "command:".length) == "command:") {
|
||||
command = JSON.parse(input.substring("command:".length));
|
||||
if (command == "create") {
|
||||
let invite = gInvite || {};
|
||||
terminal.print("Title:", {input: "text", name: "title", style: "width: 512px", value: invite.title});
|
||||
terminal.print("Message:", {input: "text", name: "message", style: "width: 512px", value: invite.message});
|
||||
terminal.print("Email Addresses:", {input: "text", name: "emails", style: "width: 512px", value: invite.emails.join(",")});
|
||||
terminal.print("Food:", {input: "text", name: "food", style: "width: 512px", value: invite.food.join(",")});
|
||||
terminal.print({input: "submit", name: "Create", value: "Create"});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
require("smtp").sendMail({
|
||||
from: core.user.name + "@unprompted.com",
|
||||
to: "test1@unprompted.com",
|
||||
subject: input,
|
||||
body: input,
|
||||
}).then(function() {
|
||||
terminal.print("sent");
|
||||
}).catch(function(error) {
|
||||
terminal.print("error: ", error);
|
||||
});
|
||||
*/
|
||||
|
||||
let kEmojis = [
|
||||
"🍇 Grapes",
|
||||
"🍈 Melon",
|
||||
"🍉 Watermelon",
|
||||
"🍊 Tangerine",
|
||||
"🍋 Lemon",
|
||||
"🍌 Banana",
|
||||
"🍍 Pineapple",
|
||||
"🍎 Red Apple",
|
||||
"🍏 Green Apple",
|
||||
"🍐 Pear",
|
||||
"🍑 Peach",
|
||||
"🍒 Cherries",
|
||||
"🍓 Strawberry",
|
||||
"🍅 Tomato",
|
||||
"🍆 Aubergine",
|
||||
"🌽 Ear of Maize",
|
||||
"🌶 Hot Pepper",
|
||||
"🍄 Mushroom",
|
||||
"🌰 Chestnut",
|
||||
"🍞 Bread",
|
||||
"🧀 Cheese Wedge",
|
||||
"🍖 Meat on Bone",
|
||||
"🍗 Poultry Leg",
|
||||
"🍔 Hamburger",
|
||||
"🍟 French Fries",
|
||||
"🍕 Slice of Pizza",
|
||||
"🌭 Hot Dog",
|
||||
"🌮 Taco",
|
||||
"🌯 Burrito",
|
||||
"🍳 Cooking",
|
||||
"🍲 Pot of Food",
|
||||
"🍿 Popcorn",
|
||||
"🍱 Bento Box",
|
||||
"🍘 Rice Cracker",
|
||||
"🍙 Rice Ball",
|
||||
"🍚 Cooked Rice",
|
||||
"🍛 Curry and Rice",
|
||||
"🍜 Steaming Bowl",
|
||||
"🍝 Spaghetti",
|
||||
"🍠 Roasted Sweet Potato",
|
||||
"🍢 Oden",
|
||||
"🍣 Sushi",
|
||||
"🍤 Fried Shrimp",
|
||||
"🍥 Fish Cake With Swirl Design",
|
||||
"🍡 Dango",
|
||||
"🍦 Soft Ice Cream",
|
||||
"🍧 Shaved Ice",
|
||||
"🍨 Ice Cream",
|
||||
"🍩 Doughnut",
|
||||
"🍪 Cookie",
|
||||
"🎂 Birthday Cake",
|
||||
"🍰 Shortcake",
|
||||
"🍫 Chocolate Bar",
|
||||
"🍬 Candy",
|
||||
"🍭 Lollipop",
|
||||
"🍮 Custard",
|
||||
"🍯 Honey Pot",
|
||||
"🍼 Baby Bottle",
|
||||
"☕ Hot Beverage",
|
||||
"🍵 Teacup Without Handle",
|
||||
"🍶 Sake Bottle and Cup",
|
||||
"🍾 Bottle With Popping Cork",
|
||||
"🍷 Wine Glass",
|
||||
"🍸 Cocktail Glass",
|
||||
"🍹 Tropical Drink",
|
||||
"🍺 Beer Mug",
|
||||
"🍻 Clinking Beer Mugs",
|
||||
"🍽 Fork and Knife With Plate",
|
||||
"🍴 Fork and Knife",
|
||||
];
|
Reference in New Issue
Block a user