FIX: prevents timezone to show duplicated zones in preview

It could happen if you have Etc/UTC in default settings, and timezone="UTC" on date, the equality check is now more strict.
This commit is contained in:
Joffrey JAFFEUX
2019-11-22 17:14:27 +01:00
committed by GitHub
parent 2c335efd1e
commit a40bc1e92b

View File

@ -125,6 +125,10 @@
} }
function _isEqualZones(timezoneA, timezoneB) { function _isEqualZones(timezoneA, timezoneB) {
if (timezoneA.includes(timezoneB) || timezoneB.includes(timezoneA)) {
return true;
}
return ( return (
moment.tz(timezoneA).utcOffset() === moment.tz(timezoneB).utcOffset() moment.tz(timezoneA).utcOffset() === moment.tz(timezoneB).utcOffset()
); );
@ -222,7 +226,9 @@
const previewedTimezones = []; const previewedTimezones = [];
const watchingUserTimezone = moment.tz.guess(); const watchingUserTimezone = moment.tz.guess();
const timezones = options.timezones.filter( const timezones = options.timezones.filter(
timezone => timezone !== watchingUserTimezone timezone =>
!_isEqualZones(timezone, watchingUserTimezone) &&
!_isEqualZones(timezone, options.timezone)
); );
previewedTimezones.push({ previewedTimezones.push({
@ -244,26 +250,24 @@
timezones.unshift(options.timezone); timezones.unshift(options.timezone);
} }
timezones timezones.filter(Boolean).forEach(timezone => {
.filter(z => z) if (_isEqualZones(timezone, displayedTimezone)) {
.forEach(timezone => { return;
if (_isEqualZones(timezone, displayedTimezone)) { }
return;
}
if (_isEqualZones(timezone, watchingUserTimezone)) { if (_isEqualZones(timezone, watchingUserTimezone)) {
timezone = watchingUserTimezone; timezone = watchingUserTimezone;
} }
previewedTimezones.push({ previewedTimezones.push({
timezone, timezone,
dateTime: options.time dateTime: options.time
? moment(dateTime) ? moment(dateTime)
.tz(timezone) .tz(timezone)
.format("LLL") .format("LLL")
: _createDateTimeRange(dateTime, timezone) : _createDateTimeRange(dateTime, timezone)
});
}); });
});
if (!previewedTimezones.length) { if (!previewedTimezones.length) {
previewedTimezones.push({ previewedTimezones.push({