Files
habitica/website/server/libs/worldState.js
2024-04-01 18:07:41 -05:00

63 lines
1.7 KiB
JavaScript

import filter from 'lodash/filter';
import moment from 'moment';
import { // eslint-disable-line import/no-cycle
model as Group,
TAVERN_ID as tavernId,
} from '../models/group';
import common from '../../common';
import { REPEATING_EVENTS } from '../../common/script/content/constants';
import { getCurrentGalaEvent } from '../../common/script/content/constants/schedule';
export async function getWorldBoss () {
const tavern = await Group
.findById(tavernId)
.select('quest.progress quest.key quest.active quest.extra')
.exec();
if (tavern && tavern.quest && tavern.quest.active) {
return tavern.quest;
}
return {};
}
export function getCurrentEvent () {
const now = moment();
const currEvtKey = Object.keys(REPEATING_EVENTS).find(evtKey => {
const event = REPEATING_EVENTS[evtKey];
const startDate = event.start.replace('1970', now.year());
const endDate = event.end.replace('1970', now.year());
return now.isBetween(startDate, endDate);
});
if (!currEvtKey) {
return getCurrentGalaEvent()
}
return {
event: currEvtKey,
...REPEATING_EVENTS[currEvtKey],
};
}
export function getCurrentEventList () {
const now = moment();
const currentEventKeys = filter(Object.keys(REPEATING_EVENTS), eventKey => {
const eventData = REPEATING_EVENTS[eventKey];
const startDate = eventData.start.replace('1970', now.year());
const endDate = eventData.end.replace('1970', now.year());
return now.isBetween(startDate, endDate);
});
const currentEventList = [];
currentEventKeys.forEach(key => {
currentEventList.push({
event: key,
...REPEATING_EVENTS[key],
});
});
currentEventList.push(getCurrentGalaEvent());
return currentEventList;
}