angular fullcalendar v4 загружать события из локального хранилища во время загрузки источника
Я получаю события fullcalendar из облачной функции Firebase в приложении Angular (7), например:
eventSources: [
{
events: (info, successCallback, failureCallback) => {
this.http
.get(
BACKEND_URI + '?start=' + info.start + '&end=' + info.end
)
.subscribe((events: CalendarEvent[]) => {
localStorage.setItem('CalendarEventStore', JSON.stringify(events));
successCallback(events);
}, error => {
console.error(error);
failureCallback(error);
});
}
}
],
(Я использую свою собственную функцию get в основном для добавления заголовков авторизации через перехватчик).
Как видите, я сохраняю полученные события в localStorage, чтобы сделать их доступными для следующего запроса календаря. Это в основном для случаев, когда нет подключения к Интернету, поскольку предполагается, что его можно использовать как PWA, но облачные функции Firebase работают очень медленно, поэтому было бы неплохо показывать события из хранилища при загрузке новых. Проблема возникает с загрузкой сохраненных событий. Я попытался добавить их в качестве второго источника событий, например так:
eventSources: [
{
// code above..
},
{
events: JSON.parse(localStorage.getItem('CalendarEventStore')) || {}
},
],
Идея состояла в том, чтобы удалить второй eventSource, как только первый перезвонит, чтобы не было дубликатов. Но второй eventSource будет показан только после того, как первый будет завершен, когда будут выполнены все successCallbacks, поэтому время здесь не сохраняется.
Поскольку это кажется очень простой проблемой, с которой может столкнуться множество людей: есть ли у кого-нибудь идея / решение о том, как это реализовать?