|
|
@ -4,7 +4,7 @@ import { EventType, ContactType } from './pim-types';
|
|
|
|
|
|
|
|
|
|
|
|
import * as EteSync from './api/EteSync';
|
|
|
|
import * as EteSync from './api/EteSync';
|
|
|
|
|
|
|
|
|
|
|
|
export function syncEntriesToItemMap(entries: EteSync.SyncEntry[]) {
|
|
|
|
export function syncEntriesToItemMap(collection: EteSync.CollectionInfo, entries: EteSync.SyncEntry[]) {
|
|
|
|
let items: {[key: string]: ContactType} = {};
|
|
|
|
let items: {[key: string]: ContactType} = {};
|
|
|
|
|
|
|
|
|
|
|
|
for (const syncEntry of entries) {
|
|
|
|
for (const syncEntry of entries) {
|
|
|
@ -23,9 +23,32 @@ export function syncEntriesToItemMap(entries: EteSync.SyncEntry[]) {
|
|
|
|
return items;
|
|
|
|
return items;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export function syncEntriesToCalendarItemMap(entries: EteSync.SyncEntry[]) {
|
|
|
|
function colorIntToHtml(color: number) {
|
|
|
|
|
|
|
|
if (color === undefined) {
|
|
|
|
|
|
|
|
return '#8BC34A';
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// tslint:disable:no-bitwise
|
|
|
|
|
|
|
|
const blue = color & 0xFF;
|
|
|
|
|
|
|
|
const green = (color >> 8) & 0xFF;
|
|
|
|
|
|
|
|
const red = (color >> 16) & 0xFF;
|
|
|
|
|
|
|
|
const alpha = (color >> 24) & 0xFF;
|
|
|
|
|
|
|
|
// tslint:enable
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function toHex(num: number) {
|
|
|
|
|
|
|
|
let ret = num.toString(16);
|
|
|
|
|
|
|
|
return (ret.length === 1) ? '0' + ret : ret;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return '#' + toHex(red) + toHex(green) + toHex(blue) +
|
|
|
|
|
|
|
|
((alpha > 0) ? toHex(alpha) : '');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export function syncEntriesToCalendarItemMap(collection: EteSync.CollectionInfo, entries: EteSync.SyncEntry[]) {
|
|
|
|
let items: {[key: string]: EventType} = {};
|
|
|
|
let items: {[key: string]: EventType} = {};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const color = colorIntToHtml(collection.color);
|
|
|
|
|
|
|
|
|
|
|
|
for (const syncEntry of entries) {
|
|
|
|
for (const syncEntry of entries) {
|
|
|
|
let comp = new EventType(new ICAL.Component(ICAL.parse(syncEntry.content)).getFirstSubcomponent('vevent'));
|
|
|
|
let comp = new EventType(new ICAL.Component(ICAL.parse(syncEntry.content)).getFirstSubcomponent('vevent'));
|
|
|
|
|
|
|
|
|
|
|
@ -33,6 +56,8 @@ export function syncEntriesToCalendarItemMap(entries: EteSync.SyncEntry[]) {
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
comp.color = color;
|
|
|
|
|
|
|
|
|
|
|
|
const uid = comp.uid;
|
|
|
|
const uid = comp.uid;
|
|
|
|
|
|
|
|
|
|
|
|
if ((syncEntry.action === EteSync.SyncEntryAction.Add) ||
|
|
|
|
if ((syncEntry.action === EteSync.SyncEntryAction.Add) ||
|
|
|
|