Skip to content

Commit

Permalink
Replace JS features not supported on ATN
Browse files Browse the repository at this point in the history
Sadly, the offical add-on platform currently requires all uploads to
pass a very outdated linter, which does not yet support recent
JavaScript features. This commit thus replaces features that are not
supported on ATN temporarily.

Once ATN is updated to support ES2020 features, these changes should get
reverted for consistency with the official API draft repository.
  • Loading branch information
rsjtdrjgfuzkfg committed Oct 30, 2020
1 parent a9409bd commit 83a0074
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 19 deletions.
10 changes: 5 additions & 5 deletions src/experiments/calendar/ext-calendar-utils.jsm
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,9 @@ function propsToItem(props, baseItem) {
throw new ExtensionError("Invalid item type: " + props.type);
}

if (props.formats?.use == "ical") {
if (props.formats && props.formats.use == "ical") {
item.icalString = props.formats.ical;
} else if (props.formats?.use == "jcal") {
} else if (props.formats && props.formats.use == "jcal") {
item.icalString = ICAL.stringify(props.formats.jcal);
} else {
if (props.id) {
Expand Down Expand Up @@ -165,7 +165,7 @@ function convertItem(item, options, extension) {
let cache = getCachedCalendar(item.calendar);
try {
// TODO This is a sync operation. Not great. Can we optimize this?
props.metadata = JSON.parse(cache.getMetaData(item.hashId)) ?? {};
props.metadata = JSON.parse(cache.getMetaData(item.hashId)) || {};
} catch (e) {
// Ignore json parse errors
}
Expand Down Expand Up @@ -213,8 +213,8 @@ function convertAlarm(item, alarm) {
return {
itemId: item.id,
action: alarm.action.toLowerCase(),
date: alarm.alarmDate?.icalString,
offset: alarm.offset?.icalString,
date: alarm.alarmDate ? alarm.alarmDate.icalString : undefined,
offset: alarm.offset ? alarm.offset.icalString : undefined,
related: ALARM_RELATED_MAP[alarm.related],
};
}
2 changes: 1 addition & 1 deletion src/experiments/calendar/parent/ext-calendar-calendars.js
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ this.calendar_calendars = class extends ExtensionAPI {
fire.sync(converted, { [name]: value });
break;
case "uri":
fire.sync(converted, { url: value?.spec });
fire.sync(converted, { url: value ? value.spec : undefined });
break;
case "disabled":
fire.sync(converted, { enabled: !value });
Expand Down
2 changes: 1 addition & 1 deletion src/experiments/calendar/parent/ext-calendar-items.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ this.calendar_items = class extends ExtensionAPI {
if (!oldItem) {
throw new ExtensionError("Could not find item " + id);
}
let newItem = propsToItem(updateProperties, oldItem?.clone());
let newItem = propsToItem(updateProperties, oldItem ? oldItem.clone() : undefined);
newItem.calendar = calendar.superCalendar;

if (updateProperties.metadata && isOwnCalendar(calendar, context.extension)) {
Expand Down
25 changes: 13 additions & 12 deletions src/experiments/calendar/parent/ext-calendar-provider.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ var { cal } = ChromeUtils.import("resource:///modules/calendar/calUtils.jsm");
var { ExtensionAPI, EventManager } = ExtensionCommon;

class ExtCalendarProvider extends cal.provider.BaseClass {
QueryInterface = ChromeUtils.generateQI(["calICalendar", "calIChangeLog", "calISchedulingSupport"]);

static register(extension) {
let calmgr = cal.getCalendarManager();
let type = "ext-" + extension.id;
Expand All @@ -34,14 +32,17 @@ class ExtCalendarProvider extends cal.provider.BaseClass {

constructor() {
super();
this.QueryInterface = ChromeUtils.generateQI(["calICalendar", "calIChangeLog", "calISchedulingSupport"]);
this.initProviderBase();
}

get providerID() {
return this.extension.id;
}

canRefresh = true;
get canRefresh() {
return true;
}

get id() {
return super.id;
Expand Down Expand Up @@ -83,9 +84,9 @@ class ExtCalendarProvider extends cal.provider.BaseClass {
break;

case "capabilities.timezones.floating.supported":
return !(this.capabilities.timezones?.floating === false);
return !(this.capabilities.timezones && this.capabilities.timezones.floating === false);
case "capabilities.timezones.UTC.supported":
return !(this.capabilities.timezones?.UTC === false);
return !(this.capabilities.timezones && this.capabilities.timezones.UTC === false);
case "capabilities.attachments.supported":
return !(this.capabilities.attachments === false);
case "capabilities.priority.supported":
Expand All @@ -94,18 +95,18 @@ class ExtCalendarProvider extends cal.provider.BaseClass {
return !(this.capabilities.privacy === false);
case "capabilities.privacy.values":
return Array.isArray(this.capabilities.privacy)
? this.capabilities.privacy?.map(val => val.toUpperCase())
? this.capabilities.privacy.map(val => val.toUpperCase())
: ["PUBLIC", "CONFIDENTIAL", "PRIVATE"];
case "capabilities.categories.maxCount":
return Number.isInteger(this.capabilities.categories?.count)
? this.capabilities.categories?.count
return this.capabilities.categories && Number.isInteger(this.capabilities.categories.count)
? this.capabilities.categories.count
: -1;
case "capabilities.alarms.maxCount":
return Number.isInteger(this.capabilities.alarms?.count)
? this.capabilities.alarms?.count
return this.capabilities.alarms && Number.isInteger(this.capabilities.alarms.count)
? this.capabilities.alarms.count
: undefined;
case "capabilities.alarms.actionValues":
return this.capabilities.alarms?.actions?.map(val => val.toUpperCase()) || ["DISPLAY"];
return this.capabilities.alarms && this.capabilities.alarms.actions && this.capabilities.alarms.actions.map(val => val.toUpperCase()) || ["DISPLAY"];
case "capabilities.tasks.supported":
return !(this.capabilities.tasks === false);
case "capabilities.events.supported":
Expand Down Expand Up @@ -283,7 +284,7 @@ this.calendar_provider = class extends ExtensionAPI {
}
let manifest = this.extension.manifest;

if (!manifest.browser_specific_settings?.gecko?.id && !manifest.applications?.gecko?.id) {
if (!(manifest.browser_specific_settings && manifest.browser_specific_settings.gecko && manifest.browser_specific_settings.gecko.id) && !(manifest.applications && manifest.applications.gecko && manifest.applications.gecko.id)) {
console.warn(
"Registering a calendar provider with a temporary id. Calendars created for this provider won't persist restarts"
);
Expand Down

0 comments on commit 83a0074

Please sign in to comment.