Summary: refactored existing code and rewrite come tests to make the logic simpler
Test Plan: new tests to test final outcome rather than intermediate formats, which i figured was more useful
Reviewers: bengotow
Reviewed By: bengotow
Maniphest Tasks: T3219, T2308
Differential Revision: https://phab.nylas.com/D1876
Summary: Although this code works as desired, I think the code itself could use some work. Also, I didn't know how I should test this. Any ideas? @bengotow
Test Plan: I'm all ears
Reviewers: bengotow
Reviewed By: bengotow
Subscribers: bengotow
Maniphest Tasks: T2430
Differential Revision: https://phab.nylas.com/D1877
Summary: fix(service): Remove redundant tail newline when hiding previous in compose view. Fixes T2467.
Test Plan: Added a test to verify that all tail newlines are removed except one. Added another to verify that non-tail newlines aren't removed. Tweaked an existing test to make it pass.
Reviewers: bengotow
Reviewed By: bengotow
Maniphest Tasks: T2467
Differential Revision: https://phab.nylas.com/D1864
Previously, we were adding 160px of padding to the entire To field. Now the buttons in the top right are floating inside the container and only impact the first line of participants.
I also stripped out a lot of zIndex rules on the participant fields, subject, body that I think were only necessary because "once you've started adding zindexes you need them everywhere".
Also changed the hover state of the buttons to be consistent.
Summary:
Consolidate the smarts from ChangeFolderTask into a generic ChangeMailTask
ChangeMailTask:
- only makes requests for threads / messages that actually changed
- handles incrementing / decrementing locks
- writes changes to the database in a single pass, and only writes modified models
- encapsulates the undo state that was built into ChangeFolderTask
This change means that ChangeLabelsTask enjoys the same "smarts" as ChangeFolderTask. Label changes resulting in no-ops do not create web requests, you can undo label changes and they go back to the correct previous state.
Replace "UpdateThreadsTask" and "UpdateNylasObjectsTask" with subclasses based on the same code used for folder/labels
This means that the naming and parameter sets are consistent for all thread/message changing tasks. It also means that starring/marking as use the same (tested) business logic and starring 999 already-starred threads doesn't create 999 requests.
Go away DraftCountStore - nobody wants you in secondary windows
Add "Debug query plans" option which prints out the steps the database is taking. Look for "SCAN" to now you're having a bad time.
Make "version" field queryable, when we receive deltas/API response, find all versions of existing models in a single query without loading or parsing the objects
Contact: Add index for lookup by email
Label: add index for lookup by name
Message: Add index for message body join table
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1840
Summary:
We now have a `MessageItemContainer` class that handles the logic of
deciding what kind of message to show. We introduce a new `PendingMessage`
(which is just a sublcass of `MessageItem`) that has the spinner and
stuff.
Also tests
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D1833
Summary:
fix(undo-redo): UndoRedoComponent does not take props
fix(category-picker):
- Use Actions.queueTask like the rest of the app so UndoRedoStore can see it. Can change this in the future but it's currently the only place in the app we directly queue tasks.
- Stop subscribing to the FocusedContentStore / FocusedCategoryStore (which are not used in setState?) since we receive threads as props
- Rename categoryDatum to item because it's not a category. (Was super confused that categories were becoming JSON in `_extendCategoryWithDisplayData`) Give item a category property so that tasks can specify items and not IDs (allows for better descriptions like "Moved one thread to Archive"
Add simple shouldComponentUpdate to retina-img
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1832
Summary:
Give UpdateThreadsTask a description method for strings like "Marked as read"
Give ChangeLabelsTask a better description method that returns shorter strings and is specific when possible
Give ChangeFolderTask a more specific description and don't assume folderOrId will always be a folder
Make it so that passive "mark as read" from the message store isn't undoable
Give the base class a description method that names the object
Change UndoRedo component CSS a bit:
- Use "inline-flexbox" with a max-width so that we can define shrinking rules on the label and Undo button (label gets ellipsis, button does not shrink at all)
- Avoid left:39%, since it assumed that the undo-redo element would be 22% of the width of the thread list, which wasn't always true. Instead, make the `undo-redo-manager` container "text-align:center", so the `undo-redo` div is always centered within it.
- Add `cursor:default` so that the user sees the pointer, not the text insertion cursor when hovering over "Undo"
- Add overflow / text-overflow so that if the message is ever too long, the user sees `...` ellipsis properly.
Test Plan: Run a few new tests
Reviewers: evan, ethanb
Reviewed By: ethanb
Differential Revision: https://phab.nylas.com/D1830
Summary:
The TokenizingTextField has several new optional props, including onEdit, which enables
editing of the tokens and tokenIsInvalid, which allows you to make tokens red, while still
accepting them as tokens.
When you go to send a message with invalid recipients it won't let you until you remove/
edit them.
Hotloading
Edit chips, keymappings not through command registry, 7 new tests for editing chips
Test Plan: Run 7 new tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1825
Summary: A notification now appears at the bottom of the window when the user performs an action that can be undone
Test Plan: Tested manually
Reviewers: bengotow
Reviewed By: bengotow
Subscribers: mg
Differential Revision: https://phab.nylas.com/D1820
Summary:
fix misc spec failure by making event store fetch immediately on setup
add specs for displayExtension, displayName
Test Plan: Run new tests
Reviewers: evan
Maniphest Tasks: T2387
Differential Revision: https://phab.nylas.com/D1821
Summary: This is still a work in progress and needs more specs
Test Plan: Run tests
Reviewers: evan
Reviewed By: evan
Differential Revision: https://phab.nylas.com/D1808
Fixes https://phab.nylas.com/T2347. Note that it could still appear indented a bit if a thread has a particularly long timestamp, but should account for all cases.
Summary: RSVP tile now appears for messages with attached events.
Test Plan: Tested manually. Will add unit tests
Reviewers: evan, bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D1797
Summary: Threads are now sorted using the thread's receivedrecentdate instead of recentdate
Test Plan: Tested Manually
Reviewers: bengotow
Reviewed By: bengotow
Subscribers: mg
Differential Revision: https://phab.nylas.com/D1812
Summary:
# Conflicts:
# static/components/tokenizing-text-field.less
Wat no
Test Plan: Tested with ci build
Reviewers: evan
Reviewed By: evan
Maniphest Tasks: T1216
Differential Revision: https://phab.nylas.com/D1804
Summary:
The popover class now will adjust itself until it fits within the window
frame. You don't see the intermediate state in the double render.
Test Plan: edgehill --test
Reviewers: bengotow
Reviewed By: bengotow
Differential Revision: https://phab.nylas.com/D1795