import React, { ChangeEvent, useContext, useRef, useState } from 'react'; import './PartyPage.css'; import { APIEndPoint, PartyContext, PartyStatus } from './PartyContext'; // import MatrixBackground from './MatrixBackground'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faAngleDown, faCalendarDays, faLocationDot } from '@fortawesome/free-solid-svg-icons'; import { modifySelfRequest, parseURI } from './partyApi'; const myDear = { "m": "lieber", "f": "liebe", "d": "liebes", }; // eslint-disable-next-line @typescript-eslint/no-unused-vars function getComingString(party: PartyStatus): string { if (party.maybe_coming === 0) { // exact number if (party.definitely_coming === 0) { return "Bisher hat noch niemand zugesagt." } else if (party.definitely_coming === 1) { return "Bisher hat ein Gast zugesagt." } else { return `Es haben schon ${party.definitely_coming} Gäste zugesagt.` } } else { // inexact if (party.definitely_coming === 0 && party.maybe_coming === 1) { return "Bisher hat ein Gast vorläufig zugesagt." } else if (party.definitely_coming === 0) { return `Bisher haben ${party.maybe_coming} Gäste vorläufig zugesagt.` } else { return `Nach den bisherigen Zusagen kommen ${party.definitely_coming} bis ${party.definitely_coming + party.maybe_coming} Gäste.` } } } export const PartyPage: React.FC = () => { const partyContext = useContext(PartyContext); const dear = myDear[partyContext.self.grammatical_gender]; const name = partyContext.self.name; const wannUndWoRef = useRef(null) const executeScroll = () => { wannUndWoRef.current!.scrollIntoView({ behavior: 'smooth' }) } const [comingState, setComingState] = useState(partyContext.self.coming); // SAFETY: If this is undefined, the contextProvider already fails const endpoint = parseURI(window.location.href) as APIEndPoint; const handleSelect = async (e: ChangeEvent) => { const value = (e.target as HTMLInputElement).value; if (value !== "yes" && value !== "no" && value !== "maybe") { throw new Error("received invalid value?"); } const status = await modifySelfRequest(endpoint, { coming: value }); setComingState(status.coming); } return

Hallo {dear} {name},

am 16. Dezember wird die Heizung der Universität das letzte Mal angeschaltet... Diesen letzten warmen Tag vor Weihnachten wollen wir gerne nutzen.

Daher veranstalten wir ab 18:00 eine Weihnachtsparty!

Wir würden uns sehr freuen, wenn auch du, {dear} {name}, dabei wärst :)

Mehr Infos

Wann und Wo?

16. Dezember, ab 18:00. Bitte komme nach Möglichkeit pünktlich.

Gebäude E1 1, Raum 407

Was ist geplant?

Wir (Sebastian & Simon) wollen uns mit euch auf Weihnachten einstimmen. Wir planen ein weihnachtliches Programm, mit Geschichten, Liedern, Essen, und der einen oder anderen Überraschung.

Neben dem Programm bleibt natürlich genügend Zeit, sich gemütlich bei einem Heißgetränk zu unterhalten...

Was gibt es zu Essen?

Wir planen ein Potluck-Event. Getränke, insbesondere Glühwein, Kinderpunsch und ähnliches wird von uns organisiert.

Was soll ich mitbringen?

Es wäre super, wenn du zum Potluck ein Gericht mitbringen kannst. Bitte informiere uns kurz, was du gerne mitbringen würdest, damit wir besser kalkulieren können.

Ansonsten darfst du sehr gerne Plätzchen, Weihnachtsdeko oder Ähnliches mitbringen.

};