У меня есть календарь, в котором пользователь должен отмечать дату 4 раза.Предположим, что за каждый день пользователь может пометить и вернуть следующий объект:
{
date: '2018-01-10',
dots: [{
color: 'blue',
key: 'markOne'
},
{
color: 'red',
key: 'markTwo'
},
{
color: 'black',
key: 'markThree'
},
{
color: 'yellow',
key: 'markFour'
}
]
},
{
date: '2018-02-10',
dots: [{
color: 'blue',
key: 'markOne'
},
{
color: 'red',
key: 'markTwo'
},
{
color: 'black',
key: 'markThree'
},
{
color: 'yellow',
key: 'markFour'
}
]
},
{
date: '2018-03-10',
dots: [{
color: 'blue',
key: 'markOne'
},
{
color: 'blue',
key: 'markTwo'
},
{
color: 'black',
key: 'markThree'
},
null
]
},
{...day4},
{...day5 and so on}
Мне нужно показывать локальное уведомление пользователю, только если date
подряд в течение 5 дней и только если dots
не имеет null
объекта.
Итак, давайте предположим, что пользователь начал отмечать (все 4 точки) с 2018-01-10
, когда он отмечает все 4 точки до 2018-05-10
, тогда локальное уведомление должно бытьпоказано (это еще одна логика, которую я уже реализовал).
Если даты последовательные, но в массиве dots
есть хотя бы один null
, тогда он не должен отправлять уведомление.
Даты следует разбивать каждые 5 дней, поэтому каждый 5,10,15,20,25,30
месяца должно отображаться другое уведомление:
const notificationsEveryFiveDays = [
{day5: 'day 5 notification'},
{day10: 'day 10 notification'},
{day15: 'day15 notification'},
{day20: 'day20 notification'},
{day25: 'day25 notification'},
{day30: 'day 30 notification'}
];
Пока мне удалось получить вседаты и манипулировать ключами объекта, чтобы вернуть отсортированный по дате массив.
export const MarkedDates = () => {
MyStorage.getItem('markedDates').then((items) => {
if (items) {
let dates = _.map(items, (val, id) => {
return {...val, date: id};
});
let sortedDates = _.sortBy(dates, 'date');
console.log(sortedDates);
}
});
};
Я пытаюсь использовать moment-range
, но не могу понять, как проверить, все ли dates
последовательны, а dots
нетсодержат null
.Это сложная проблема для решения!