Commit Graph

607 Commits (f372f36005204c8cf6b0d518496f04c75b5f98f0)

Author SHA1 Message Date
Tom Hacohen 563f718597 Fix contact's birthday and anniversary date presentation. 2018-10-05 10:27:33 +01:00
Tom Hacohen e0ec5ee6c8 Encryption password login: add autofocus. 2018-10-05 10:12:11 +01:00
Tom Hacohen f828e3d290 Upgrade material-ui and start migrating to it. 2018-10-04 23:31:17 +01:00
Tom Hacohen ae26e34eb4 Update react, typescript recompose and etc. 2018-10-04 22:45:30 +01:00
Tom Hacohen 01b9921b2a Purge cache in case of an integrity error and show a nicer message. 2018-08-22 20:37:13 +01:00
Tom Hacohen 73897700d9 Automatically create the default journals if there are none. 2018-08-13 11:26:52 +01:00
Tom Hacohen 1e1033fdf1 Actions fetchAll: return a promise rather than undefined. 2018-08-13 10:28:33 +01:00
Tom Hacohen 8e7243964d Automatically create user info when there is none. 2018-08-13 10:19:16 +01:00
Tom Hacohen 811f795304 Add an ugly fragile hack to make the calendar fill the vertical space.
This is very fragile, but at least if it breaks it falls back to the
previous behaviour so it's not the end of the world if it does.

Fixes #16.
2018-08-10 15:33:49 +01:00
Tom Hacohen c25ac2d6c0 Improve error handling. 2018-07-04 19:26:46 +01:00
rugk 6456625716 Add access prohibition for external links 2018-03-23 18:08:32 +00:00
Tom Hacohen 5842b7074a Login form: show a better error message. 2018-03-12 15:29:55 +00:00
Tom Hacohen 94214c9617 Calendar: fix switching back to months view when going back to calendar
Currently we preserve the watched date, so it's preserved when going
back to a calendar page. Now we also preserve the view.

Fixes #10
2018-02-23 10:19:31 +00:00
Tom Hacohen 99ccfaf441 Item creation: fix the cancel button.
It wasn't working because the callback was not connected, but the
onDelete callback was connected instead (which shouldn't have been).
2018-02-22 21:01:03 +00:00
Tom Hacohen 71f7df252a Fix event editing.
It was crashing due to 7917b1fbe1.
2018-02-22 20:58:55 +00:00
Tom Hacohen e2a418a914 Upgrade react-scripts-ts and typescript. 2018-02-22 20:38:45 +00:00
Tom Hacohen 4c441de728 Calendar: Fix navigating of month view (workaround big-calendar bug)
This is a workaround for:
https://github.com/intljusticemission/react-big-calendar/issues/718
2018-02-22 20:26:53 +00:00
Tom Hacohen 56c12012fe Types: update react-big-calendar types. 2018-02-22 20:26:53 +00:00
Tom Hacohen 7917b1fbe1 Calendar: Implement clicking on a time slot to add an event
You can now click (or select) a time slot to create an event that is
automatically populated with the selected times.

Fixes #8
2018-02-22 20:08:56 +00:00
Tom Hacohen d09895c655 Event edit: remove the word Date from the datetime placeholder.
It was confusing users who thought this was only a date picker. This makes
it more generic.
2018-01-17 16:07:32 +00:00
Tom Hacohen ed64bff3da Switch to react-datetime for the date time picker
The reason for that is because not all browsers support input
type=date/time
2018-01-17 12:17:06 +00:00
Tom Hacohen 2187f4cd22 Types ical.js: add to/from json. 2018-01-17 12:16:32 +00:00
Tom Hacohen f0ab21172a Types ical.js: fix fromJSDate. 2018-01-17 11:21:37 +00:00
Tom Hacohen 56a28bf9c8 Fix the type of the DateTimePicker's change callback. 2018-01-13 20:14:31 +00:00
Tom Hacohen 02bb9baea7 Add more properties needed by react-big-calendar. 2018-01-08 14:34:22 +00:00
Tom Hacohen 9c740a4c4d Add support for saving entries to shared journals. 2017-12-30 15:58:46 +00:00
Tom Hacohen 71e20bb65f UserInfo: Fix persistance of user info to cache. 2017-12-30 15:49:56 +00:00
Tom Hacohen e257f427eb Show an error message when userInfo doesn't exist. 2017-12-30 15:46:20 +00:00
Tom Hacohen b0cae39814 Add a widget to present errors nicely. 2017-12-30 15:42:49 +00:00
Tom Hacohen 8367767006 SyncGate: only get asymmetricKey from UserInfo if needed. 2017-12-30 15:34:26 +00:00
Tom Hacohen 719b0516f0 Support shared journals in side menu too.
This code path needs to be merged with SyncGate.
2017-12-30 15:33:25 +00:00
Tom Hacohen cf823f5efe Implement fetching userInfo and opening shared journals. 2017-12-30 15:16:16 +00:00
Tom Hacohen 80e9805d22 AsymmetricCrypto: we actually using pkcs8 not 1. 2017-12-30 15:14:23 +00:00
Tom Hacohen 12b578d44c UserInfo: Fix the HMAC calculation function. 2017-12-30 15:11:32 +00:00
Tom Hacohen 1ee224bd0b Add an action to fetch userInfo. 2017-12-30 14:35:49 +00:00
Tom Hacohen 00045d7cb0 CryptoManager: Add an option to load an already derived key. 2017-12-30 14:15:11 +00:00
Tom Hacohen 9a8f1cd33f Add AsymmetricCryptoManager for asymmetric encryption. 2017-12-30 13:20:25 +00:00
Tom Hacohen 3353b21162 CryptoManager: fix decrypt/encrypt bits type. 2017-12-30 13:06:49 +00:00
Tom Hacohen 1f961fbad1 UserInfo: implement setting and getting the keypair. 2017-12-30 12:32:52 +00:00
Tom Hacohen 45db0c12c5 Crypto manager: add methods to encrypt/decrypt from/to bytes. 2017-12-30 12:13:06 +00:00
Tom Hacohen fb738622fe API: Add API to handle UserInfo. 2017-12-30 11:45:58 +00:00
Tom Hacohen ac31f7093f Add a basic link about signed pages. 2017-12-29 15:47:11 +00:00
Tom Hacohen 78c19fe7c4 Fix one-day long allDay events. 2017-12-29 12:19:28 +00:00
Tom Hacohen 2056c62b80 Use the error boundary component to semi-gracefully catch errors. 2017-12-29 11:46:06 +00:00
Tom Hacohen 5a79fdb6b8 Add an error boundary component to catch errors. 2017-12-29 11:45:26 +00:00
Tom Hacohen e956ef3059 Change the delete confirmation dialog label. 2017-12-28 20:47:20 +00:00
Tom Hacohen 074fc8e6c0 Implement a common interface for pim types. 2017-12-28 17:43:17 +00:00
Tom Hacohen bfa186dc35 Merge duplicate onItemSave code. 2017-12-28 17:43:16 +00:00
Tom Hacohen 78b292f1c4 Implement contact and calendar event deletion. 2017-12-28 17:43:16 +00:00
Tom Hacohen 507c0e3a1a Add a configrmation dialog widget. 2017-12-28 17:43:16 +00:00
Tom Hacohen f760becae8 Add icons to save/cancel buttons on item edit pages. 2017-12-28 17:43:16 +00:00
Tom Hacohen 5e59557335 Add a link to the etesync website from the login page. 2017-12-28 17:43:16 +00:00
Tom Hacohen d869be6bc9 Revert "Only mark journals that have been shared with us as unsupported."
This is not needed, because key is set only if we have a key set for us
which means it was either shared with us, or we have a reason to have a
key (maybe changed the password).

(Kept the fixme that was added in that commit)

This reverts commit 3408e16013.
2017-12-27 10:14:43 +00:00
Tom Hacohen 52f7d4ddd5 Base JSON: serialise should return the template type. 2017-12-26 15:48:40 +00:00
Tom Hacohen 3408e16013 Only mark journals that have been shared with us as unsupported.
Journals that we've shared are supported even if we share them,
so make the check a bit more explicit so we show them.
2017-12-26 11:59:03 +00:00
Tom Hacohen 3d9155e306 EteSync: expose journal owner. 2017-12-26 11:56:56 +00:00
Tom Hacohen 763b5b757f Remove redundant filtering of shared journals.
This is already done in sync gate.
2017-12-26 11:41:14 +00:00
Tom Hacohen 84a0bf2a8e Add a cancel button when editing contacts and events.
Fixes #2.
2017-12-25 12:26:27 +00:00
Tom Hacohen 73ab88d3d2 Sync gate: better position the loading indicator. 2017-12-18 18:50:29 +00:00
Tom Hacohen eafdb02d5c Loading indicator: pass on props. 2017-12-18 18:49:56 +00:00
Tom Hacohen e9f984dee9 SearchableAddressBook: add a search icon. 2017-12-18 17:40:40 +00:00
Tom Hacohen ee34109d14 Addressbook: add a searchable address book that lets us filter the list 2017-12-18 16:18:44 +00:00
Tom Hacohen c6df5c800a Addressbook: support passing a filter function and memoize the sort. 2017-12-18 16:05:05 +00:00
Tom Hacohen 724bc29e4a Merge the duplicate contact/event view/edit/log routes. 2017-12-18 15:14:53 +00:00
Tom Hacohen 7bd3051416 Unify the names of the props of ContactEdit and EventEdit. 2017-12-18 15:05:42 +00:00
Tom Hacohen 40af8a49d7 Make the event and contact itemUid the consistent.
It was different between them and compared to viewing a journal's item.
This was inconsistent and is now fixed.
2017-12-18 14:31:52 +00:00
Tom Hacohen 35b3ce7f95 Add a button to show an item's (contact/event) change history
Fixes #1
2017-12-18 14:27:34 +00:00
Tom Hacohen 30cd979ba8 Journal entries: support filtering by entry uid. 2017-12-18 14:21:57 +00:00
Tom Hacohen ab3ebbff05 Fix the calendar widget on mobile. 2017-12-18 10:39:08 +00:00
Tom Hacohen 0eaaf671e8 Add some margin between the edit button and the header. 2017-12-18 10:05:54 +00:00
Tom Hacohen 0abe801dc7 Disable pull to refresh in PWAs based on chrome. 2017-12-17 22:17:14 +00:00
Tom Hacohen 6687758a3a Add a refresh button and make it spinable.
This also adds a HOC that makes icons spinable.
2017-12-17 22:13:19 +00:00
Tom Hacohen 199cc5771c Fix background colour issue. 2017-12-17 18:15:45 +00:00
Tom Hacohen 4833a98763 Split fetching credentials and key derivation. 2017-12-17 18:15:45 +00:00
Tom Hacohen b769c18021 Show a shorter login form (only enc password) if already logged in.
This is extremely useful for iOS devices where a PWA's session storage
is deleted every time it's minimised, and it's also useful for people
having multiple tabs open.
2017-12-17 17:49:09 +00:00
Tom Hacohen 2608a354ea Add an action to derive the encryption key. 2017-12-17 17:36:37 +00:00
Tom Hacohen 232ea823d0 LoinGate: rename the incorrectly named class name. 2017-12-17 17:17:23 +00:00
Tom Hacohen 8d3a06cdfd Split the login credentials and the encryption key.
We do this so we can persist the login info to local storage, but
still keep the encryption key safe.

This version will fails if you clear the session storage. This will be
fixed in the next commit.
2017-12-17 17:17:23 +00:00
Tom Hacohen c7e508b890 Also disable back when we have no history stack.
This is useful for when we open a page directly in an inner link.
2017-12-17 15:28:36 +00:00
Tom Hacohen 50af0ac0d1 Container: fix marging to be padding so size is correct. 2017-12-17 15:12:12 +00:00
Tom Hacohen a464f019aa Fix the elastic white area on iOS and change bar to translucent. 2017-12-17 15:12:12 +00:00
Tom Hacohen 2d76164666 Fix the back button to work on first load too. 2017-12-17 13:37:22 +00:00
Tom Hacohen 054caaa56f Change the menu button to a back button on the main page. 2017-12-17 13:07:17 +00:00
Tom Hacohen f74ec6f05a Merge JournalAddressbook and JournalCalendar. 2017-12-17 12:21:39 +00:00
Tom Hacohen a32002eabd Replace the a tag with an ExternalLink component.
This lets us handle behaviour more consistently, for example by opening
external links in a new tab.
2017-12-17 02:27:21 +00:00
Tom Hacohen ec8a1d9017 Fix react-router related types. 2017-12-16 23:12:24 +00:00
Tom Hacohen 06887c58c3 Fix event types. 2017-12-16 23:06:18 +00:00
Tom Hacohen e48ebc5137 Fix entries fetching by creating a fetchAll action. 2017-12-16 22:23:50 +00:00
Tom Hacohen e38409203c Remove fetching status from the store.
This was causing constant invalidations and therefore killing our performance.
2017-12-16 22:23:50 +00:00
Tom Hacohen e58ddf8545 Implement shallow compare for the journal reducer.
The reason why we need it is that we don't have a concept of etag for
journal fetching, which means we were setting the store on each fetch
causing everything that depends on the journals to invalidate.

This triggers a bug that causes the entries not to refresh if the
journals haven't changed.
2017-12-16 21:53:12 +00:00
Tom Hacohen 2aa92f15e7 Reducer: don't reset the store when fetching.
There were a couple of bugs there:
1. The store was reset while fetching/error because the payload was
empty/error.
2. The error status wasn't reset after for successful fetches that
follow failed ones.
2017-12-16 21:33:40 +00:00
Tom Hacohen b876a90a5a Fix the calendar component to avoid re-rendering. 2017-12-16 20:59:08 +00:00
Tom Hacohen 8186055537 Syncgate: don't create the router aware components on each render. 2017-12-16 20:55:37 +00:00
Tom Hacohen 4613a65365 Don't recreate the persistant calendar component on each render. 2017-12-16 20:54:25 +00:00
Tom Hacohen 331d85d3a2 history persistor: follow the recommended HOC guidelines. 2017-12-16 20:29:50 +00:00
Tom Hacohen 5a1b3af9b0 Calendar: fix the unnecessary recration of closures. 2017-12-16 20:23:22 +00:00
Tom Hacohen 0d6ecfdbdf Calendar: remove the unneccesary events sort. 2017-12-16 20:21:50 +00:00
Tom Hacohen e085c0c40a Side menu journals: don't trigger recalcs on route changes. 2017-12-16 20:10:23 +00:00
Tom Hacohen a77e9077bf Address book: make a component out of the list item. 2017-12-16 19:46:38 +00:00
Tom Hacohen cec318f41f Api: rename tsx files to ts. 2017-12-16 18:14:22 +00:00
Tom Hacohen 0ee6bbd340 Bring back list margin and remove the explicit contact padding 2017-12-16 18:11:36 +00:00
Tom Hacohen 98686f197a Move all of the side menu items to one place. 2017-12-16 18:08:26 +00:00
Tom Hacohen 1da58da23e Move all of the Pim related files to one dir. 2017-12-16 18:08:26 +00:00
Tom Hacohen 62dbc4b08d Move all of the Journal related files to one dir. 2017-12-16 18:08:26 +00:00
Tom Hacohen 441549f41d Move LoginForm to the component dir. 2017-12-16 17:54:31 +00:00
Tom Hacohen e710e89200 Remove server url awareness from LoginForm making it a cleaner component. 2017-12-16 17:53:08 +00:00
Tom Hacohen 9f5da61dfb Remove the hack we used for React.Fragment. 2017-12-16 17:46:00 +00:00
Tom Hacohen 6a586ac38f Rename the Root to LoginGate because that's all it does. 2017-12-16 16:30:59 +00:00
Tom Hacohen 5ee24d054d Move all of the view-only components to their own directory. 2017-12-16 16:30:59 +00:00
Tom Hacohen 85f5f91f36 Move the constants to their own module. 2017-12-16 16:30:59 +00:00
Tom Hacohen 4722207308 Change the suffix of helpers from .tsx to .ts.
They are not jsx files.
2017-12-16 16:30:59 +00:00
Tom Hacohen d06b7610cd Move the basic widgets to their own directory. 2017-12-16 16:05:21 +00:00
Tom Hacohen 9029d365bc Move types to their own directory. 2017-12-16 15:57:09 +00:00
Tom Hacohen 48cd22b464 Move the store into its own module and split it up. 2017-12-16 15:52:46 +00:00
Tom Hacohen e9db374206 Contact: fix virtual artefact with dividers. 2017-12-16 13:57:54 +00:00
Tom Hacohen b93049f7a0 List: filter some of the props. 2017-12-16 13:57:19 +00:00
Tom Hacohen b76ac00d78 Fix the ListDivider to be a list item. 2017-12-16 12:51:47 +00:00
Tom Hacohen 87e670ac97 Use the new MUI-like List API.
We had to change away from MUI because the list efficiency was abysmal.
Everything is an order of magnitude faster now.
2017-12-16 12:17:29 +00:00
Tom Hacohen fdaef3a9f7 Make our List widget more like the mui one. 2017-12-16 12:15:12 +00:00
Tom Hacohen 3bb6d92be7 Add very basic error handling. 2017-12-16 00:19:20 +00:00
Tom Hacohen 2f96977646 Store fetching: fix the return record to include the error and fetching status. 2017-12-16 00:10:58 +00:00
Tom Hacohen 7b7c96719d Optimise PIM page a bit more. 2017-12-15 18:31:51 +00:00
Tom Hacohen 95c8bff9be Cache the Pim related calculations.
No need to recalc everything if the input is the same.
2017-12-15 18:24:59 +00:00
Tom Hacohen 58eedd1c37 Cache the SyncGate calculations.
This was taking quite a lot of time and caching this significantly
improves performance.

We only need it because of the react-redux-router bug, but good to have
it in the meanwhile.
2017-12-15 18:11:08 +00:00
Tom Hacohen 360a6ad826 Create our own dedicated avatar widget. 2017-12-15 16:57:29 +00:00
Tom Hacohen 1a1bdc77af Add our own list widget.
The material ui one is extremely inefficient and was causing noticeable
delays.
2017-12-15 16:50:51 +00:00
Tom Hacohen 97eaa756fe Add FIXMEs for the withRouter workaround
Because of: https://github.com/ReactTraining/react-router/issues/5795
We have to use withRouter which triggers a lot of extra renderings.
This means that until the bug is fixed we have to use withRouter and
some memoization to make sure we don't recalc everything all the time.
2017-12-15 12:52:22 +00:00
Tom Hacohen 264145eb72 Pim: no longer pass the match object. 2017-12-14 14:35:29 +00:00
Tom Hacohen 9f396173b0 Move etsync decryption logic to sync gate.
This shares more of the code, and also lets us be more efficient because
we now do these calculations less.
2017-12-14 14:31:17 +00:00
Tom Hacohen 6c4f077d0f Add missing new for records. 2017-12-14 12:06:12 +00:00
Tom Hacohen 4f88ff6364 Adjust code to work with es5 as a target. 2017-12-14 11:13:01 +00:00
Tom Hacohen a6ad199023 Make all of the React.Components Pure. 2017-12-14 10:58:25 +00:00
Tom Hacohen c3e686002e Move the store to immutable.js
This significantly helps with reducing the number of copies we do,
because in most cases a refresh will not change a journal.
2017-12-14 10:58:25 +00:00
Tom Hacohen ce71c5422f Pim: cleanup the syncenttry and journals processing.. 2017-12-14 10:58:25 +00:00
Tom Hacohen cabd82b382 Journal: remove accidental ; in content. 2017-12-13 15:56:41 +00:00
Tom Hacohen ce2c89aa50 Login form: disallow connecting to HTTP addresses in production. 2017-12-13 15:48:44 +00:00
Tom Hacohen 3231131e7e Add basic validation for events. 2017-12-13 15:31:04 +00:00
Tom Hacohen f12bc374f4 ContactEdit: remove unset properties. 2017-12-13 15:23:37 +00:00
Tom Hacohen c51804d7fe Event and contact: update last modified. 2017-12-13 15:22:00 +00:00
Tom Hacohen de3f96a10d ContactEdit: add IMPP. 2017-12-13 15:12:25 +00:00
Tom Hacohen 29ffb5a74b Add a few more contact fields. 2017-12-13 15:01:58 +00:00
Tom Hacohen 1524600e4b In iCal, all day events are until the end date not including
Adjust accordingly, and add some basic validation.
2017-12-13 14:40:06 +00:00
Tom Hacohen 29ae3005ea EventEdit: don't discard fields we don't handle and add a note about it. 2017-12-13 14:18:45 +00:00
Tom Hacohen da935c0836 Fix editing events of a journal other than the default. 2017-12-13 14:11:56 +00:00
Tom Hacohen 6d4c9c01e0 Fix saving of contacts. 2017-12-13 14:11:56 +00:00
Tom Hacohen 8c3adcdc94 Don't save empty properties. 2017-12-13 14:11:56 +00:00
Tom Hacohen fec1edf711 Make contact view more ressilient. 2017-12-13 14:11:56 +00:00
Tom Hacohen cf396ff904 Add missing version properties. 2017-12-13 14:11:56 +00:00
Tom Hacohen a7eb74bee1 Cleanup ContactEdit a bit and add address support. 2017-12-13 14:11:56 +00:00
Tom Hacohen 574df977c2 Store: fix test. 2017-12-13 14:11:56 +00:00
Tom Hacohen b7a6e123cd Improve contact edit. 2017-12-13 14:11:56 +00:00
Tom Hacohen 46ecb57af8 Update icaljs definitions. 2017-12-13 14:11:56 +00:00
Tom Hacohen daf27ca517 ContactType: Add a way to clone. 2017-12-13 14:11:56 +00:00
Tom Hacohen 6d76559d08 Initial version of contact editing. 2017-12-13 14:11:48 +00:00
Tom Hacohen 9521e3dae3 Fix the journal action to be change when changing event. 2017-12-12 22:50:12 +00:00
Tom Hacohen 7e271b1542 Event edit: add info text for the journal selector. 2017-12-12 22:50:12 +00:00
Tom Hacohen cfd6db6fb5 Go back on successful save. 2017-12-12 22:50:12 +00:00
Tom Hacohen 0c9dfd7087 Add a way to edit events. 2017-12-12 22:50:12 +00:00
Tom Hacohen 81c3f4d27e Add a way to create new events. 2017-12-12 22:50:12 +00:00
Tom Hacohen e22b520b5a EteSync api: fill in the collection info's uid. 2017-12-12 22:43:45 +00:00
Tom Hacohen 29a608db79 Pim page: add a button for creating contacts and events. 2017-12-12 22:43:45 +00:00
Tom Hacohen 221bdd4716 Use the sjcl random number generator for encryption. 2017-12-12 17:00:35 +00:00
Tom Hacohen 2507dfd5b3 Fix issue with sync entry being set and get differently. 2017-12-12 16:56:24 +00:00
Tom Hacohen 9c8df0a854 Add an action to create entries and add some store tests. 2017-12-12 16:47:31 +00:00
Tom Hacohen 441560dc72 Add a way to get the ical representation to events. 2017-12-12 15:50:18 +00:00
Tom Hacohen df538c368a EventEdit: add uuid to events. 2017-12-12 15:49:03 +00:00
Tom Hacohen 2af9e41404 Fix indentation. 2017-12-12 14:21:18 +00:00
Tom Hacohen 82c5a70eaa Add a simple widget for editing events. 2017-12-12 14:21:18 +00:00
Tom Hacohen 72aad2d24c Add a basic datetime picker widget. 2017-12-12 14:21:18 +00:00
Tom Hacohen f3e82ee7e4 Improve ical definitions. 2017-12-12 14:21:18 +00:00
Tom Hacohen 0fb37c1132 Move the creating event from calendar to one place. 2017-12-11 18:27:33 +00:00
Tom Hacohen 03bbc7af17 Add paths for contact and calendar creation. 2017-12-11 15:06:10 +00:00
Tom Hacohen e124a163a3 Root: use the container component. 2017-12-11 13:15:26 +00:00
Tom Hacohen f84c3b58da Make it possible to pass style to the Container component. 2017-12-11 13:15:15 +00:00
Tom Hacohen a374766ab8 Add a link to the source code from the login page. 2017-12-11 13:02:38 +00:00
Tom Hacohen 0471f2424d Change the contact colour coding to be based on the uid. 2017-12-10 22:25:59 +00:00
Tom Hacohen 76dd2327cd Improve login page. 2017-12-10 15:21:15 +00:00
Tom Hacohen c73aabf0cc Fix agenda header formatting. 2017-12-10 13:26:03 +00:00
Tom Hacohen 86c5a822cb Fix setting calendar's locale. 2017-12-10 13:14:36 +00:00
Tom Hacohen f4d49488a9 Handle loading inside the login form itself. 2017-12-10 12:15:49 +00:00
Tom Hacohen 3794d6c05a Implement last modified for contacts. 2017-12-08 20:47:52 +00:00
Tom Hacohen 6de0534bf9 Also change the background colour in the view event page. 2017-12-08 20:28:22 +00:00
Tom Hacohen 64e13f4ec8 Add colour to events. 2017-12-08 20:25:50 +00:00
Tom Hacohen 802b994a6f Change how multiple calendars are merged together. 2017-12-08 20:19:00 +00:00
Tom Hacohen c945731d8a Stop using Map<>.
It looks like this is more trouble than its worth. Things are missing
and it's in general a pain to work with.
2017-12-08 20:15:13 +00:00
Tom Hacohen 70486e7da2 Improve address book look. 2017-12-08 18:54:47 +00:00
Tom Hacohen 539759dd32 Add anniversary to contact view. 2017-12-08 18:34:39 +00:00
Tom Hacohen b3420bbc24 Improve contact properties conversion. 2017-12-08 18:32:25 +00:00
Tom Hacohen 5f2d499cc1 Add address and birthday. 2017-12-08 18:27:00 +00:00
Tom Hacohen 1dfc60afab Add icon to impp. 2017-12-08 18:20:49 +00:00
Tom Hacohen 1e752ae022 Improve the look of events and contacts. 2017-12-08 18:16:28 +00:00
Tom Hacohen 34445be4b0 Improve container 2017-12-08 17:58:24 +00:00
Tom Hacohen bfd5ba5d27 Split secondary header to its own component. 2017-12-08 17:57:57 +00:00
Tom Hacohen f2dfae6d77 Slightly improve the look of the calendar page. 2017-12-08 17:35:50 +00:00
Tom Hacohen 7067824ccd Improve the look of the contact page. 2017-12-08 17:34:48 +00:00
Tom Hacohen 1987ea126d Use container all around to improve look. 2017-12-08 17:07:27 +00:00
Tom Hacohen 87a2493956 Fix crash on new devices. 2017-12-08 17:06:47 +00:00
Tom Hacohen 63a1b0286b Improve the journal's look. 2017-12-08 16:55:13 +00:00
Tom Hacohen 56947722d3 Add a container component (like bootstrap's).
Just meant to help with sizing.
2017-12-08 16:54:49 +00:00
Tom Hacohen 3cfdb07b6a Persist some component state on route changes. 2017-12-08 16:06:05 +00:00
Tom Hacohen 025bb57b35 Fix name of PimMain. 2017-12-08 13:31:15 +00:00
Tom Hacohen c9cc26cf84 Pim Main keep tabs in state. 2017-12-08 12:34:48 +00:00
Tom Hacohen d8a57b821b Replace the hash router with the normal one.
The reason we need that is because it's lacking compared to the
hash one which is considered legacy.
2017-12-08 12:14:08 +00:00
Tom Hacohen 864dad372f Make special types for events and calendars.
This will simplify extracting values and already removes some
redundancy.
2017-12-08 09:56:24 +00:00
Tom Hacohen eb2075d0ec Remove debug code. 2017-12-08 09:29:16 +00:00
Tom Hacohen bb61ef3935 Improve presentation of events. 2017-12-08 00:23:46 +00:00
Tom Hacohen d51dd7108b Fix app test. 2017-12-07 23:05:04 +00:00
Tom Hacohen 6d83124376 Make the contact component throw an error if contact is undefined. 2017-12-07 22:59:43 +00:00
Tom Hacohen 3883cbad1c Show a very basic event page when an event is clicked. 2017-12-07 22:59:04 +00:00
Tom Hacohen 9b96e37e44 Remove redundant div. 2017-12-07 22:43:46 +00:00
Tom Hacohen 62859c411e Fix naming of the contact component. 2017-12-07 22:40:37 +00:00
Tom Hacohen eaf7de1c47 Remove the react fragment hack. 2017-12-07 22:39:48 +00:00
Tom Hacohen 57d65bec0f Make tel and email linkable in the contact view. 2017-12-07 22:37:17 +00:00
Tom Hacohen 588bec69cc Clean up the sidemenu. 2017-12-07 21:29:07 +00:00
Tom Hacohen 25402639b6 Split off the pim view and implement viewing contacts. 2017-12-07 21:11:24 +00:00
Tom Hacohen 8e2a465120 Rename Main to Pim. 2017-12-07 21:10:40 +00:00
Tom Hacohen c10a4cc924 Move the main page under pim and redirect there. 2017-12-07 20:53:33 +00:00
Tom Hacohen 590e8c61a9 Route resolver: make _base optional. 2017-12-07 20:46:26 +00:00
Tom Hacohen 97dc449953 Remove unused functions. 2017-12-07 20:33:33 +00:00
Tom Hacohen 68377ec0ac Fix viewing journals. 2017-12-07 20:32:58 +00:00
Tom Hacohen e310584e26 Split away the main view from the sync gate. 2017-12-07 20:17:19 +00:00
Tom Hacohen 5dacc4c013 Use the last entry id when fetching entries from server. 2017-12-07 20:06:26 +00:00
Tom Hacohen 4e9317a1ae Remove redundant fetchJournals from sidebar. 2017-12-07 19:26:15 +00:00
Tom Hacohen 058bb6dca9 Persist cache in localforage 2017-12-07 19:15:40 +00:00
Tom Hacohen fc42566486 Cleanup the calendar and render in the main page. 2017-12-07 17:28:48 +00:00
Tom Hacohen 425923aa6a Get rid of the useless HOC. 2017-12-07 17:00:59 +00:00
Tom Hacohen e6778f5ace Make the sync gate render the complete address book. 2017-12-07 16:58:50 +00:00
Tom Hacohen 0a4b065c9c Rename etesynccontext to root. 2017-12-07 16:09:48 +00:00
Tom Hacohen 9f5dd4f5ae Remove journal list. 2017-12-07 15:51:15 +00:00
Tom Hacohen 596d414025 Make a higher order function that translates syncentries to an item map. 2017-12-07 15:49:15 +00:00
Tom Hacohen ca49fc9eb5 Split the addressbook view from the syncentry handling code. 2017-12-07 15:18:26 +00:00
Tom Hacohen cf19e003d1 Rename calendar and address book to have the jorunal prefix.
The reason for that is that they are tied to a journal.
2017-12-07 14:54:58 +00:00
Tom Hacohen 1663460bed Put the journals in the sidemenu. 2017-12-07 11:47:07 +00:00
Tom Hacohen 92b8189190 Add fragment type. 2017-12-07 11:00:26 +00:00
Tom Hacohen cb28259b24 List unsupported journals. 2017-12-07 01:06:35 +00:00
Tom Hacohen e17aaaf79d Simplify entries fetching reducer. 2017-12-07 00:55:58 +00:00
Tom Hacohen e1bd0891fe Rename some components to make more sense. 2017-12-07 00:51:46 +00:00
Tom Hacohen 134539a02b Contact: remove extraneous dividers (in some cases) 2017-12-07 00:43:24 +00:00
Tom Hacohen 4e3ddcb29b Move the location of the username in the appbar. 2017-12-07 00:36:18 +00:00
Tom Hacohen 529d96d026 JournalEntries: use the loading indicator. 2017-12-07 00:26:44 +00:00
Tom Hacohen 95724c08d8 Change JournalFetcher to be a container instead of a gate.
It now not only fetches the journals, but also holds all of the children
and passes them the journals.
2017-12-07 00:24:09 +00:00
Tom Hacohen 278ebacad1 Add a nicer loading indicator. 2017-12-07 00:08:23 +00:00
Tom Hacohen 3bb8b6f101 Split out the login form from the etesync context. 2017-12-06 23:53:53 +00:00
Tom Hacohen cd2a6caf52 JournalList: get rid of the extra div. 2017-12-06 23:53:08 +00:00
Tom Hacohen 123cf589dd Remove debug code. 2017-12-06 23:40:34 +00:00
Tom Hacohen 87d150554c Remove fragment from journal view. 2017-12-06 23:40:34 +00:00
Tom Hacohen afb940d51a Simplify fetchCount using combineActions. 2017-12-06 19:58:05 +00:00
Tom Hacohen 6566bc01df Disable logger middleware in production builds. 2017-12-06 19:41:14 +00:00
Tom Hacohen 22381a1f85 Move to redux-actions. 2017-12-06 19:40:46 +00:00
Tom Hacohen 7e1d1087b1 Move to (our modified) redux-promise to simplify actions. 2017-12-06 17:52:38 +00:00
Tom Hacohen 49b9469284 Remove the redundant EteSyncContextType interface. 2017-12-06 11:18:37 +00:00
Tom Hacohen c67ba9a233 Move actions to the store file and clean up imports. 2017-12-06 11:15:40 +00:00
Tom Hacohen 33b4cc083a Add a component that acts as a gate for journal fetching. 2017-12-05 20:27:06 +00:00
Tom Hacohen 2e4c6b11aa Move entry fetching to redux. 2017-12-05 20:27:06 +00:00
Tom Hacohen f36e099bb9 Change all of our components to export themselves as default. 2017-12-05 20:27:06 +00:00
Tom Hacohen 43127dc53f Put username on the upper right corner. 2017-12-05 20:27:06 +00:00
Tom Hacohen 38cb4170ed Remove redundant class. 2017-12-05 20:27:06 +00:00
Tom Hacohen e75d586c0f Move journal fetching to redux. 2017-12-05 20:27:06 +00:00
Tom Hacohen 57f89e3840 Store: make global fetch count tracking generic. 2017-12-05 20:27:05 +00:00
Tom Hacohen c6ec2bcaf1 Fix wrong type in store. 2017-12-05 20:27:05 +00:00
Tom Hacohen fb660fc54c Make request types generic. 2017-12-05 20:27:05 +00:00
Tom Hacohen 37aaebbbd8 Clear login form username and password on submission. 2017-12-05 20:27:05 +00:00
Tom Hacohen 3c3ffb15d3 Implement logout and workaround an issue with redux-persist not persisting.
For some reason it doesn't persist when credentials === undefined.
2017-12-05 20:27:05 +00:00
Tom Hacohen 94c6916447 Add a basic redux store. 2017-12-05 20:27:05 +00:00
Tom Hacohen 55f595d52a Start using react fragments. 2017-12-05 20:27:05 +00:00
Tom Hacohen 36cf88aaf2 Fix the main navigation link. 2017-12-04 23:23:56 +00:00
Tom Hacohen fe6490a098 Show raw journal items when clicked. 2017-12-04 23:18:06 +00:00
Tom Hacohen 00d8b43cc5 Login: change login form to be a controlled component.
I thought it would be easier to use an uncontrolled component, but
it fails when loading fails. The form just clears.

This fixes it.
2017-12-04 22:45:58 +00:00
Tom Hacohen df4ea83208 Don't change history when switching tabs. 2017-12-04 22:45:58 +00:00
Tom Hacohen b0741978d0 Journal list: improve look. 2017-12-04 22:45:58 +00:00
Tom Hacohen 1bf6314ac3 EteSync: fix the sync entry action constant for Delete. 2017-12-04 22:12:32 +00:00
Tom Hacohen 1a9202521d Add in-app navigation links. 2017-12-04 21:55:47 +00:00
Tom Hacohen 5b8c000d45 Don't recreate views when switching tabs. 2017-12-04 21:41:03 +00:00
Tom Hacohen 635a41d41f Add a calendar view. 2017-12-04 21:36:48 +00:00
Tom Hacohen 154beee6d1 Fix input types for the login page. 2017-12-04 21:36:27 +00:00
Tom Hacohen fddf39244d Add a contact page. 2017-12-04 19:22:39 +00:00
Tom Hacohen 2a6220e6d4 Make it possible to navigate between collection items and journal entries. 2017-12-04 19:22:39 +00:00
Tom Hacohen 6c96d7994f Improve the look of the journals page. 2017-12-04 19:22:39 +00:00
Tom Hacohen 336a07e065 Remove the old welcome to react header. 2017-12-04 19:22:39 +00:00
Tom Hacohen b668e6478a Organise calendars and address books in lists. 2017-12-04 19:22:39 +00:00
Tom Hacohen 3faa7b3ed6 Simplify calls to setState, apparently it already shallow merges. 2017-12-04 16:50:54 +00:00
Tom Hacohen f8ee484c3b Add some login form validation. 2017-12-04 16:00:31 +00:00
Tom Hacohen 516bdd2622 Improve log in look and feel. 2017-12-04 15:41:18 +00:00
Tom Hacohen 622805a5b6 Improve the look and feel of the login form. 2017-12-04 15:05:35 +00:00
Tom Hacohen ef92632885 Change to the production API and allow setting a custom server. 2017-12-04 14:45:01 +00:00
Tom Hacohen 0a05095da2 Home: redirect to the journals view. 2017-12-04 14:45:01 +00:00
Tom Hacohen d7c90ccb0a Move to material-ui. 2017-12-04 14:45:01 +00:00
Tom Hacohen 295867a439 Login form: add a missing prevent default. 2017-12-04 13:28:55 +00:00
Tom Hacohen 07c986b01d Add a very basic login page and cache the keys in session storage. 2017-12-03 23:49:16 +00:00
Tom Hacohen 2947607a45 Update type definitions for ICAL and fix type errors. 2017-12-03 22:30:42 +00:00
Tom Hacohen f5c31a3dbe Add views for actual collection items.
I.e calendar events and address book content.
2017-12-03 20:06:53 +00:00
Tom Hacohen 8c20687a72 Split away the journal list item view from the jorunal view. 2017-12-03 13:44:23 +00:00
Tom Hacohen e92a9c9961 Improve presentation of journal log. 2017-12-03 13:27:32 +00:00
Tom Hacohen 8087f2d3f4 Fix to previous commit: fix redirect to entries page. 2017-12-03 12:59:03 +00:00
Tom Hacohen d4c49c1f55 Load the actual journal from the journal page.
This fixes viewing journals with version != 1.
2017-12-01 18:37:33 +00:00
Tom Hacohen 25bf249d9f Improve journal page. 2017-12-01 18:15:08 +00:00
Tom Hacohen af921e1b28 Move the header back outside of the internal components. 2017-12-01 17:58:27 +00:00
Tom Hacohen 132f63e2a6 Move all of the etesync context to a separate place.
This means that encryption key derivation and token access
are not called as often.
2017-12-01 17:42:57 +00:00
Tom Hacohen 6f9c783159 Cleanup the route resolver a bit. 2017-12-01 16:26:11 +00:00
Tom Hacohen 7dd8248aab Added a hacky journal view.
A lot of code duplication.
2017-12-01 16:18:11 +00:00
Tom Hacohen 557e5ec0b4 Add basic routing. 2017-12-01 15:44:38 +00:00
Tom Hacohen b9798f1b13 Switch to the hash router for security.
This is needed to avoid accidentally leaking urls to the server.
2017-12-01 15:34:07 +00:00
Tom Hacohen bba3282def Add a basic journal list view. 2017-12-01 15:33:30 +00:00
Tom Hacohen 9fd1b31299 Fix journal not having version set.
This commit also cleans up the sharing between the json from the API and
the internal state of the object.
2017-12-01 15:16:36 +00:00
Tom Hacohen 11aa1ffd94 API: first verify, then try to decrypt! 2017-12-01 14:10:58 +00:00
Tom Hacohen e0cc13cfd2 Initial code import of the etesync encryption and service module
This will be a small library in the end, but at the moment it's in this
repo for convenience. It includes the etesync service, crypto and tests
to cover them.

The tests require a running debug etesync server.

To create one, just create a server from:
https://github.com/etesync/server-skeleton/

Set DEBUG to True, and create a test user with the credentials that are
listed in the test files.
2017-12-01 12:05:29 +00:00
Tom Hacohen 3a60a35a99 Initial commit. 2017-11-30 11:06:15 +00:00