From 2947607a45b998fcbc4dc4c4e8fa0ffc6aa784c3 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Sun, 3 Dec 2017 22:29:36 +0000 Subject: [PATCH] Update type definitions for ICAL and fix type errors. --- src/JournalViewAddressBook.tsx | 5 ++--- src/JournalViewCalendar.tsx | 11 +++++++---- src/ical.js.d.ts | 21 ++++++++++++++++++--- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/JournalViewAddressBook.tsx b/src/JournalViewAddressBook.tsx index cb8be9e..fd7612c 100644 --- a/src/JournalViewAddressBook.tsx +++ b/src/JournalViewAddressBook.tsx @@ -19,7 +19,7 @@ export class JournalViewAddressBook extends React.Component { return (
Loading
); } - let items: Map = new Map(); + let items: Map = new Map(); for (const syncEntry of this.props.entries) { let comp = new ICAL.Component(ICAL.parse(syncEntry.content)); @@ -34,8 +34,7 @@ export class JournalViewAddressBook extends React.Component { } } - // FIXME: should be ICAL.component - let entries: Array = Array.from(items.values()).sort((_a: any, _b: any) => { + let entries = Array.from(items.values()).sort((_a, _b) => { const a = _a.getFirstPropertyValue('fn'); const b = _b.getFirstPropertyValue('fn'); diff --git a/src/JournalViewCalendar.tsx b/src/JournalViewCalendar.tsx index f4bc790..5a97ff4 100644 --- a/src/JournalViewCalendar.tsx +++ b/src/JournalViewCalendar.tsx @@ -19,11 +19,15 @@ export class JournalViewCalendar extends React.Component { return (
Loading
); } - let items: Map = new Map(); + let items: Map = new Map(); for (const syncEntry of this.props.entries) { let comp = new ICAL.Component(ICAL.parse(syncEntry.content)).getFirstSubcomponent('vevent'); + if (comp === null) { + continue; + } + const uid = comp.getFirstPropertyValue('uid'); if ((syncEntry.action === EteSync.SyncEntryAction.Add) || @@ -34,10 +38,9 @@ export class JournalViewCalendar extends React.Component { } } - // FIXME: should be ICAL.component - let entries: Array = Array.from(items.values()).map((value: string) => ( + let entries = Array.from(items.values()).map((value) => ( new ICAL.Event(value) - )).sort((a: any, b: any) => { + )).sort((a, b) => { if (a.summary < b.summary) { return -1; } else if (a.summary > b.summary) { diff --git a/src/ical.js.d.ts b/src/ical.js.d.ts index ccd4a6c..fc05263 100644 --- a/src/ical.js.d.ts +++ b/src/ical.js.d.ts @@ -1,5 +1,20 @@ -declare var ICAL: any; - declare module 'ical.js' { - export = ICAL; + function parse(input: string): Array; + class Component { + name: string; + + constructor(jCal: Array | string, parent?: Component); + + getFirstSubcomponent(name?: string): Component | null; + + getFirstPropertyValue(name?: string): string; + } + + class Event { + uid: string; + summary: string; + + constructor(component?: Component | null, + options?: {strictExceptions: boolean, exepctions: Array}); + } }