cozy/cozy-mobile

View on GitHub
src/app/replicator/transformer/cozy_to_android_calendar.coffee

Summary

Maintainability
Test Coverage
log = require('../../lib/persistent_log')
    prefix: "CozyToAndroidCalendar"
    date: true

###*
 * CozyToAndroidCalendar transform a cozy calendar to a android calendar and
 * reverse transform an android calendar to a cozy calendar.
 *
 * @class CozyToAndroidCalendar
###
module.exports = class CozyToAndroidCalendar

    ###*
     * @param {Object} cozyCalendar - it's a cozy calendar
     * @param {Object} account - it's android account
     * @param {Object} androidCalendar - it's an android calendar (optional)
    ###
    transform: (cozyCalendar, account, androidCalendar = undefined) ->
        log.debug "transform"

        return {
            _id: if androidCalendar then androidCalendar._id else undefined
            account_name: account.accountName
            account_type: account.accountType
            ownerAccount: account.accountName
            name: cozyCalendar.name.replace /\s/g, ''
            calendar_displayName: cozyCalendar.name
            calendar_color: @_color2Android(cozyCalendar.color)
            # No specific needs (?)
            #calendar_timezone: null

            # http://developer.android.com/reference/android/provider/
            # CalendarContract.CalendarColumns.html#CALENDAR_ACCESS_LEVEL
            calendar_access_level: 700
            sync_events: 1
            # METHOD_ALERT, METHOD_EMAIL
            allowedReminders: "1,2"
            allowedAvailability: "0" # Deactivated.
            allowedAttendeeTypes: "0" # Deactivated.
        }

    reverseTransform: (androidCalendar) ->
        log.debug "reverseTransform"

        new Error "TODO"

    _color2Android: (color) ->
        color = '#2979FF' if color is undefined
        if color[0] is '#'
            return parseInt color.replace(/[^0-9A-Fa-f]/g, ''), 16
        else if color[0] is 'r'
            rgb = color.match /(\d+)/g
            return rgb[0] * 256 * 256 + rgb[1] * 256 + rgb[2] * 1