Get Started. It's Free
or sign up with your email address
iOS Offline by Mind Map: iOS Offline

1. Background syncing

1.1. Reevaluation Queue Storage

1.1.1. High-level Design

1.1.2. Form

1.1.2.1. Original Form

1.1.2.2. Latest Form

1.1.2.3. Turn datatypes cache off

1.1.3. Reeval Request

1.1.3.1. Data representation

1.1.3.2. Serialization

1.1.4. Life Cycle Events

1.1.4.1. Support for "submit" event

1.1.4.2. Support for "cancel" event

1.1.4.3. Support for "back" event

1.2. Required Fields Support

1.2.1. Look at "required" attribute and simulate existing behavior

1.2.2. Only do it while offline

1.3. File Upload

1.3.1. Refactoring to allow framework to capture the fileupload intent

1.3.1.1. Decorator pattern

1.3.1.2. File Upload value setter decorates existing value setter

1.3.2. Data representation

1.3.3. Serialization

2. Offline Awareness

2.1. Low-level offline API (networking error codes + Apple reachability API)

2.1.1. Only this reads error codes

2.1.2. All business logic related to what offline means MUST be placed here

2.1.3. Submission & Conflict Resolution

2.1.3.1. Outbox

2.1.3.1.1. List Items stored in the Forms table

2.1.3.2. Programatically setting values to Form Elements (ValueSetters). No look up, No traversal.

2.1.3.3. Form Editing

2.1.3.3.1. Grid: support for finding component inside grid

2.1.3.3.2. Populate form based on reevaluation queue containing all user interactions performed while offline. Lookup + traversal.

2.1.3.3.3. Drop last queued "submit" action

2.1.3.3.4. Drop all queued requests made after last "cancel" action

2.1.3.4. Heuristically map fields to new form

2.1.3.5. Toggling Old and New Forms

2.1.3.6. File Upload Temporary Folder Cleanup (Server Configuration)

2.2. Suppress block alerts

2.2.1. Do not read error codes explicitly

2.2.2. Annotate non-networking errors

2.3. Banner

3. Caching layer

3.1. Base Infrastructure

3.1.1. Atom Feed

3.1.2. Avatars

3.1.3. JSON Form Data

3.1.4. Records

3.1.5. Reports

3.1.6. ...

3.2. Cache Regions

3.2.1. Eviction Strategy Infrastructure

4. Background Polling

4.1. Turn datatype cache off

5. Encryption

5.1. Per account folder

5.1.1. HTTP Cache

5.1.2. File uploads

5.1.3. File downloads

5.1.4. Find other cases (possibly none)

5.2. User account info

6. Backend

6.1. Web APIs Changes

6.1.1. Include offline flag in list of actions

6.1.1.1. Build locale-aware cache of offline actions

6.1.2. Server-side diff of offline form and newest form

6.1.2.1. New endpoint similar to existing GET request but takes an existing rendered form as body

6.1.2.2. Return 204 (No Content) OR 304 (Not modified) if forms match

6.1.2.3. Return new form if forms don't match

6.2. Interface Designer Changes

6.2.1. Add "offline" attribute to Rule (Content) metadata

6.3. Admin Console

6.3.1. Global Offline Switch