User:Qll/Calendar Review: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Start. Add Overview, Source Code section and general app review details.)
 
(Add Permissions description to the review.)
Line 14: Line 14:
* [https://github.com/lightsofapollo/notamd NotAmd]: An extensible loader system, used to load the calendar's dependencies
* [https://github.com/lightsofapollo/notamd NotAmd]: An extensible loader system, used to load the calendar's dependencies
* [https://github.com/visionmedia/page.js page.js] ([https://visionmedia.github.io/page.js/ Documentation]): An Express-(Framework)-inspired client-side router
* [https://github.com/visionmedia/page.js page.js] ([https://visionmedia.github.io/page.js/ Documentation]): An Express-(Framework)-inspired client-side router
==== Permissions ====
Requested permissions and their uses:
* systemXHR: Used to fetch CalDAV resources from (arbitrary) remote servers (js/ext/caldav.js)
* settings (readonly): -
* alarms: Used to start the application in intervals to synchronize all calendars and maybe other uses
* browser: Used for an OAuth authentication flow (js/oauth_window.js)
* storage: The calendar app is using an IndexedDB to store appointments, alarms and similar (js/db.js)
* desktop-notification: (Most likely) used to notify the user about upcoming events and failed synchronization attempts (js/notification.js, js/controllers/alarm.js, js/controllers.error.js)
* audio-channel-notification: To tell the audio channel manager to adjust the notification channel if a user presses volumeup/-down in the calendar (js/app.js)

Revision as of 18:24, 19 June 2014

App Review Details

  • App: Calendar
  • Review Date: 2014-05-11-2014-07-07
  • Review Bug: [1]

Overview

Architecture

The app uses a custom Model View Controller (MVC) framework, templating system and storage layer.

Source Code

The source code of the app is hosted at GitHub, as part of the gaia repository. All external libraries are located at js/ext/ (relatively to the root of the app). The following external libraries are used:

  • CalDAV: Loads and parses CalDAV from remote servers
  • jsical: Parses iCalendar data
  • NotAmd: An extensible loader system, used to load the calendar's dependencies
  • page.js (Documentation): An Express-(Framework)-inspired client-side router

Permissions

Requested permissions and their uses:

  • systemXHR: Used to fetch CalDAV resources from (arbitrary) remote servers (js/ext/caldav.js)
  • settings (readonly): -
  • alarms: Used to start the application in intervals to synchronize all calendars and maybe other uses
  • browser: Used for an OAuth authentication flow (js/oauth_window.js)
  • storage: The calendar app is using an IndexedDB to store appointments, alarms and similar (js/db.js)
  • desktop-notification: (Most likely) used to notify the user about upcoming events and failed synchronization attempts (js/notification.js, js/controllers/alarm.js, js/controllers.error.js)
  • audio-channel-notification: To tell the audio channel manager to adjust the notification channel if a user presses volumeup/-down in the calendar (js/app.js)