Skip to content

Commit 9e4b230

Browse files
committed
Merge branch 'repeat' of github.com:rohanb10/snooze into repeat
2 parents 1624080 + 1adb34c commit 9e4b230

File tree

5 files changed

+34
-62
lines changed

5 files changed

+34
-62
lines changed

scripts/background.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,8 @@ function sendToLogs([which, p1]) {
200200

201201
async function init() {
202202
var allTabs = await getSnoozedTabs();
203-
if (allTabs && allTabs.length && allTabs.some(t => t.startUp && !t.opened)) {
204-
allTabs.filter(t => t.startUp && !t.opened).forEach(t => t.wakeUpTime = dayjs().subtract(10, 's').valueOf());
203+
if (allTabs && allTabs.length && allTabs.some(t => (t.startUp || (t.repeat && t.repeat.type === 'startup')) && !t.opened)) {
204+
allTabs.filter(t => (t.startUp || (t.repeat && t.repeat.type === 'startup')) && !t.opened).forEach(t => t.wakeUpTime = dayjs().subtract(10, 's').valueOf());
205205
await saveTabs(allTabs);
206206
}
207207
await wakeUpTask();

scripts/common.js

Lines changed: 9 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ async function getChoices(which) {
371371
},
372372
'today-morning': {
373373
label: 'This Morning',
374-
repeatLabel: '-',
374+
repeatLabel: '',
375375
time: NOW.startOf('d').add(config.morning[0], 'h').add(config.morning[1], 'm'),
376376
timeString: 'Today',
377377
repeatTime: '',
@@ -382,7 +382,7 @@ async function getChoices(which) {
382382
},
383383
'today-evening': {
384384
label: `Today ${getEveningLabel(config.evening[0])}`,
385-
repeatLabel: `Everyday`,
385+
repeatLabel: `Everyday, Now`,
386386
time: NOW.startOf('d').add(config.evening[0], 'h').add(config.evening[1], 'm'),
387387
timeString: 'Today',
388388
repeatTime: NOW.format(getHourFormat(true)),
@@ -460,7 +460,9 @@ async function getChoices(which) {
460460

461461
async function calculateNextSnoozeTime(data) {
462462
var NOW = dayjs(), TYPE = data.type, [HOUR, MINUTE] = data.time;
463-
if (TYPE === 'hourly') {
463+
if (TYPE === 'startup') {
464+
return NOW.add(20, 'y');
465+
} else if (TYPE === 'hourly') {
464466
var isNextHour = NOW.minute() >= MINUTE ? 1 : 0;
465467
return NOW.startOf('h').add(isNextHour, 'h').minute(MINUTE).valueOf();
466468
} else if (TYPE === 'daily') {
@@ -489,51 +491,6 @@ async function calculateNextSnoozeTime(data) {
489491
return false;
490492
}
491493

492-
// async function calculateNextSnoozeTime(repeat, start, data) {
493-
// var NOW = dayjs(), start = dayjs(start);
494-
// if (repeat === 'custom' && data) {
495-
// var days = [];
496-
// if (data.weekly) {
497-
// var thisWeek = data.weekly, nextWeek = data.weekly.map(day => day + 7);
498-
// days = nextWeek.concat(thisWeek).map(day => dayjs().startOf('w').add(day, 'd').add(start.hour(), 'h').add(start.minute(), 'm'));
499-
// } else if (data.monthly) {
500-
// var thisMonth = data.monthly.filter(d => d <= dayjs().daysInMonth()).map(d => dayjs().startOf('M').date(d).add(start.hour(), 'h').add(start.minute(), 'm'));
501-
// var nextMonth = data.monthly.filter(d => d <= dayjs().add(1, 'M').daysInMonth()).map(d => dayjs().startOf('M').add(1, 'M').date(d).add(start.hour(), 'h').add(start.minute(), 'm'));
502-
// days = nextMonth.concat(thisMonth);
503-
// }
504-
// return days.filter(d => d > NOW).pop();
505-
// } else if (repeat === 'startup') {
506-
// return NOW.add(20, 'y');
507-
// } else if (repeat === 'hourly') {
508-
// var isThisHour = NOW.minute() < start.minute();
509-
// return NOW.startOf('h').add(isThisHour ? 0 : 1, 'h').minute(start.minute());
510-
// } else if (repeat === 'daily') {
511-
// return dayjs().startOf('d').add(1, 'd').hour(NOW.hour()).minute(NOW.minute());
512-
// } else if (repeat === 'daily_morning') {
513-
// var morning = await getOptions('morning');
514-
// var isToday = NOW.hour() < morning[0] || (NOW.hour() === morning[0] && NOW.minute() < morning[1]);
515-
// return NOW.startOf('d').add(isToday ? 0 : 1, 'd').hour(morning[0]).minute(morning[1]);
516-
// } else if (repeat === 'daily_evening') {
517-
// var evening = await getOptions('evening');
518-
// var isToday = NOW.hour() < evening[0] || (NOW.hour() === evening[0] && NOW.minute() < evening[1]);
519-
// return NOW.startOf('d').add(isToday ? 0 : 1, 'd').hour(evening[0]).minute(evening[1]);
520-
// } else if (repeat === 'weekends') {
521-
// var isThisWeek = NOW.day() < 6 || (NOW.day() === 6 && (NOW.hour() < start.hour() || (NOW.hour() === start.hour() && NOW.minute() < start.minute())));
522-
// return NOW.startOf('w').add(isThisWeek ? 0 : 1, 'w').day(6).hour(start.hour()).minute(start.minute());
523-
// } else if (repeat === 'mondays') {
524-
// var isThisWeek = NOW.day() < 1 || (NOW.day() === 1 && (NOW.hour() < start.hour() || (NOW.hour() === start.hour() && NOW.minute() < start.minute())));
525-
// return NOW.startOf('w').add(isThisWeek ? 0 : 1, 'w').day(1).hour(start.hour()).minute(start.minute());
526-
// } else if (repeat === 'weekly') {
527-
// var isThisWeek = NOW.day() < start.day() || (NOW.day() === start.day() && (NOW.hour() < start.hour() || (NOW.hour() === start.hour() && NOW.minute() < start.minute())));
528-
// return NOW.startOf('w').add(isThisWeek ? 0 : 1, 'w').day(start.day()).hour(start.hour()).minute(start.minute());
529-
// } else if (repeat === 'monthly') {
530-
// var isThisMonth = NOW.date() < start.date() || (NOW.date() === start.date() && (NOW.hour() < start.hour() ||( NOW.hour() === start.hour() && NOW.minute() < start.minute()))) ? 0 : 1;
531-
// var isMonthValid = start.date() <= NOW.daysInMonth(isThisMonth, 'M') ? 0 : 1;
532-
// return NOW.startOf('M').add(isThisMonth + isMonthValid, 'M').date(start.date()).hour(start.hour()).minute(start.minute());
533-
// }
534-
// return false;
535-
// }
536-
537494
/* END ASYNC FUNCTIONS */
538495

539496
// var getFaviconUrl = url => `https://icons.duckduckgo.com/ip3/${getHostname(url)}.ico`
@@ -570,10 +527,10 @@ var sleeping = tabs => tabs.filter(t => !t.opened);
570527
var today = tabs => tabs.filter(t => t.wakeUpTime && dayjs(t.wakeUpTime).dayOfYear() === dayjs().dayOfYear() && dayjs(t.wakeUpTime).year() === dayjs().year())
571528

572529
var isDefault = tabs => tabs.title && ['nap room | snoozz', 'settings | snoozz', 'rise and shine | snoozz', 'New Tab', 'Start Page'].includes(tabs.title);
573-
// var isDefault = tabs => false;
574530

575531
var isValid = tabs => tabs.url && ['http', 'https', 'ftp', 'chrome-extension', 'web-extension', 'moz-extension', 'extension'].includes(tabs.url.substring(0, tabs.url.indexOf(':')));
576-
// var isValid = tabs => true;
532+
533+
var isSameYear = (a, b) => dayjs(a).year() === dayjs(b).year();
577534

578535
var capitalize = s => s.charAt(0).toUpperCase() + s.slice(1);
579536

@@ -605,12 +562,13 @@ var clipboard = text => {
605562
}
606563

607564
var formatSnoozedUntil = t => {
608-
if (t.startUp) return `Next ${capitalize(getBrowser())} Launch`;
565+
if (t.startUp || (t.repeat && t.repeat.type === 'startup')) return `Next ${capitalize(getBrowser())} Launch`;
609566
var ts = t.wakeUpTime;
610567
var date = dayjs(ts);
611568
if (date.dayOfYear() === dayjs().dayOfYear()) return (date.hour() > 17 ? 'Tonight' : 'Today') + date.format(` [@] ${getHourFormat(date.minute() !== 0)}`);
612569
if (date.dayOfYear() === dayjs().add(1,'d').dayOfYear()) return 'Tomorrow' + date.format(` [@] ${getHourFormat(date.minute() !== 0)}`);
613570
if (date.week() === dayjs().week()) return date.format(`dddd [@] ${getHourFormat(date.minute() !== 0)}`);
571+
if (date.year() !== dayjs().year()) return date.format(`ddd, MMM D, YYYY`);
614572
return date.format(`ddd, MMM D [@] ${getHourFormat(date.minute() !== 0)}`);
615573
}
616574

scripts/nap_room.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -342,13 +342,13 @@ function getTimeGroup(tab, timeType = 'wakeUpTime', searchQuery = false) {
342342
var group = [];
343343
if (!tab.opened && !tab[timeType]) return group;
344344
var now = dayjs(), time = searchQuery && tab.opened ? dayjs(tab.opened) : dayjs(tab[timeType]);
345-
if (time.week() === now.subtract(1, 'week').week()) group.push('last_week');
346-
if (time.dayOfYear() === now.subtract(1, 'd').dayOfYear()) group.push('yesterday');
347-
if (time.dayOfYear() === now.dayOfYear() && time.year() == now.year()) group.push('today');
348-
if (time.dayOfYear() === now.add(1, 'd').dayOfYear()) group.push('tomorrow');
349-
if (time.week() === now.week()) group.push('this_week');
350-
if (time.week() === now.add(1, 'week').week()) group.push('next_week');
351-
if (time.valueOf() > now.add(1, 'week').valueOf()) group.push('later');
345+
if (time.week() === now.subtract(1, 'week').week() && isSameYear(now, time)) group.push('last_week');
346+
if (time.dayOfYear() === now.subtract(1, 'd').dayOfYear() && isSameYear(now, time)) group.push('yesterday');
347+
if (time.dayOfYear() === now.dayOfYear() && time.year() == now.year() && isSameYear(now, time)) group.push('today');
348+
if (time.dayOfYear() === now.add(1, 'd').dayOfYear() && isSameYear(now, time)) group.push('tomorrow');
349+
if (time.week() === now.week() && isSameYear(now, time)) group.push('this_week');
350+
if (time.week() === now.add(1, 'week').week() && isSameYear(now, time)) group.push('next_week');
351+
if (time.valueOf() > now.add(1, 'week').valueOf()) group.push('later');
352352
return searchQuery ? group : group[0];
353353
}
354354

scripts/popup.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,8 @@ async function snooze(time, choice) {
484484
if (!['tab', 'window', 'selection', 'group'].includes(target.id)) return;
485485

486486
if (document.getElementById('repeat').checked) {
487-
var t, data = {type: choice.getAttribute('data-repeat-id'), time: [time.hour(), time.minute()]};
487+
var t, data = {type: choice.getAttribute('data-repeat-id')}
488+
data.time = data.type === 'startup' ? [0, 0] : [time.hour(), time.minute()];
488489
if (data.type === 'daily') data.time = [dayjs().hour(), dayjs().minute()];
489490
if (data.type === 'weekends') data.weekly = [6];
490491
if (data.type === 'mondays') data.weekly = [1];
@@ -505,7 +506,7 @@ async function snooze(time, choice) {
505506
if (parent && parent.deleteTabFromDiv) parent.deleteTabFromDiv(getUrlParam('tabId'));
506507
response = await editRecurringSnoozed(getUrlParam('tabId'), data, isInDupeMode);
507508
if (!response.edited && !response.duped) return;
508-
await displayPreviewAnimation(choice, time.format ? time.format('.HHmm') : '', response.duped ? 'Welcome to the clone zone' : 'Going back to sleep');
509+
await displayPreviewAnimation(choice, time.format ? time.format('.HHmm') : '', response.duped ? 'Duplicating...' : 'Going back to sleep');
509510
if (parent && parent.closePopupModal) setTimeout(_ => parent.closePopupModal(), closeDelay);
510511
} else {
511512
response = await snoozeRecurring(target.id, data);

styles/popup.css

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,19 @@ body.dark .day-choice span:before {
306306
height: 4em;
307307
justify-content: space-between;
308308
cursor: pointer !important;
309+
position: relative;
310+
}
311+
.choice.last:after, .custom-choice.last:after {
312+
content: 'PREV';
313+
position: absolute;
314+
bottom: .5em;
315+
left: 1.25em;
316+
width: 100%;
317+
display: block;
318+
opacity: 0.5;
319+
font-size: .7em;
320+
font-weight: 600;
321+
color: var(--color);
309322
}
310323

311324
.choice.disabled, .choice.always-disabled, .custom-choice.disabled, h3.disabled, div[data-preview].disabled .preview, .repeat-choice.disabled {

0 commit comments

Comments
 (0)