Commit Graph

1241 Commits

Author SHA1 Message Date
Allen Rabinovich 2d0b9e2aa2 Make right side chevrons visible, lighten usernames, adjust stream list scrolling speed
(imported from commit 8068bdf1ae7fd817fda36d7e32ea94e850ab5675)
2014-03-01 15:11:45 -07:00
acrefoot 7a97d01719 Fix broken viewport.message_viewport_info() calculations
`#tab_bar_underpadding` overlaps some with `.message_header`,
so adding `#tab_bar_underpadding.bottom + .message_header.height`
gave us a nonsense message viewport top.

Doing the calculation this way is more robust, as long as:
1) `$(".floating_recipient").offset().top` continues to give us a sensical number
   and is the last element just before the top of the viewport.
2)  nothing appears between the composebox and viewport.

In this commit I also removed the other couple of places where the #tab_bar_underpadding
was being used as a viewport reference, that no longer makes sense.

(imported from commit c7f35e41309900c581d5e2329c1becf161d501d3)
2014-03-01 11:52:46 -05:00
Leo Franchi de9d26126a Only cycle through stream elements when cycling through streams
(imported from commit 244d72e88e18cc49f32ecfada791f032140390f2)
2014-02-28 16:48:45 -05:00
Allen Rabinovich ba0d3605ae Fix stream list scrollbar visibility
(imported from commit ef1f860ecd7f3ae908a69ac7c35a45d959505966)
2014-02-28 16:27:13 -05:00
Steve Howell 0983809e6f Fix URLs for stream/topic narrowing links in recipient bar.
(imported from commit 4e104cde912521dc360df1a32ce149a5082f9a67)
2014-02-28 16:27:13 -05:00
Steve Howell 6b200b3088 Fix broken link for "Link to this conversation".
(imported from commit bb07a1fe729c532cdc48eee63188b7b812fe07ff)
2014-02-28 16:27:12 -05:00
Leo Franchi 5807a44aee Activity ping handling during a reload should not error out
(imported from commit 63c9f935985cdd4f3d795191aae5aa8ab8bad02b)
2014-02-28 16:27:12 -05:00
Leo Franchi dda8bf6d8a Don't error out if we somehow have a top message group but can't find a recipient row
(imported from commit 3b51f6a5e6e7998c33bf994316d5ba16e5cc0378)
2014-02-28 16:27:12 -05:00
Allen Rabinovich 99036efa06 Disable keyboard scrolling in sidebar
(imported from commit eca509a90df175d21d85eb409c0db9c8fbb931ea)
2014-02-27 20:25:41 -05:00
Allen Rabinovich 1eae686443 Add slim scrollbar to stream list
(imported from commit 58b64081db68fe9b1d2addcaece10167332d1a1b)
2014-02-27 20:25:41 -05:00
Jason Michalski 1788f5c576 Revert "Revert "Change out the gemoji emoji for android version""
This reverts commit 4d32b4ccf9a5134819a4d942699b4d97e2c0fd55.

(imported from commit 6aefec41f294ee83d19aebbfd9a99b2657e0ff83)
2014-02-27 20:25:39 -05:00
Luke Faraone 0ac73e4d73 Use a dict in presence_info rather than strings
This allows us to extend it to contain more details, as we will shortly.

(imported from commit 59b14592609810c5ac634a8237928ce029f33a83)
2014-02-27 20:25:38 -05:00
Leo Franchi f605a7df22 Return an empty list instead of undefined when no groups are visible
(imported from commit 5a02b6b94acb20948c9959e9620df7fa5f945625)
2014-02-27 20:25:34 -05:00
Leo Franchi 63bcf98e71 Fade properly via groups when toggling fade on compose
(imported from commit 865c9daf8a267cfa65f7daceddff55a816b9c22c)
2014-02-27 20:25:34 -05:00
Leo Franchi 9275901277 Refactor viewport.visible_messages and add a viewport.visible_groups
(imported from commit 2cd29c41c1fb7ffc4c88673e81e638bbaad91f5f)
2014-02-27 20:25:34 -05:00
Leo Franchi 840ba90512 Show on-hover topic edits in message list
(imported from commit c2cd996c5e17b801e4e10b0a28451c0fb51c5e21)
2014-02-27 20:25:34 -05:00
Leo Franchi b51ea69db0 Handle topic edits and rerender view if topics have changed
(imported from commit b59f6b532138d660e0acfb949b2eb223b5c5ed0e)
2014-02-27 20:25:33 -05:00
Zev Benjamin a547043831 Fix search highlighting for message content and topics
Previously topics weren't being highlighted at all and messages had their
highlighting persist across different narrows (because we were only checking
whether the message object had a match_content property, not whether it should
currently be used).

(imported from commit 44c91c6d5799dcdf765e19e1a17bd727ce80c918)
2014-02-27 20:25:33 -05:00
Zev Benjamin 865c57fa72 Allow our template partials to take additional named arguments
(imported from commit 20e7dae7b5d27ee34936d400394357fc31c8e628)
2014-02-27 20:25:32 -05:00
Leo Franchi 5aef8b8fad Maintain scroll position when removing selected message
(imported from commit 1021eac527e677fbcac46d0a7d44dd3244bb903e)
2014-02-27 20:25:32 -05:00
Jason Michalski 4a58241b17 Revert "Change out the gemoji emoji for android version"
This reverts commit 05a7245f7b52edf4f55e40d1467022d9f06d5792.

(imported from commit e2bb0346fc2913046e977d539326510fdcab73a5)
2014-02-27 20:25:32 -05:00
Leo Franchi 240050093b Preserve scroll when rerendering due to out-of-order messages
(imported from commit 9c339cbe8d5bbd75bbdf24a8f14da4f1556cc407)
2014-02-27 20:25:31 -05:00
Leo Franchi f93ccd4df1 Enable local echo for all
(imported from commit 8c2e66009303b6937c7e0f1743293623e7404c3b)
2014-02-27 20:25:31 -05:00
Zev Benjamin 5dfd6eee2d Enable negated search for randomfish.org
(imported from commit 0a999aa18b47e1f021d7dc56f4ef5d4b0a8c8001)
2014-02-27 20:25:30 -05:00
Allen Rabinovich ccfaee8412 Add left side color bar
(imported from commit cdba90d3a4e693838338b0a93cae38a741aa28c4)
2014-02-27 20:25:30 -05:00
Allen Rabinovich efe8fe4650 Fix right sidebar offset to prevent it from overlapping the chevron
(imported from commit f5b979c30fa813ab5ac93382a68828415d7e0040)
2014-02-27 20:25:30 -05:00
acrefoot 7ebb3ec05d Fix message for PM outside current narrow
This resolve Trac #2270

(imported from commit ab814e8e50f48a53054c28f07579f65040edceb8)
2014-02-27 20:25:29 -05:00
Leo Franchi 7fe74a9d2e Add a background color property to each message
(imported from commit add776a0814353650903258894e0db6fc8ec67b6)
2014-02-27 20:25:29 -05:00
Steve Howell 15f5884247 Focus textbox when editing PMs.
(imported from commit 152cb829779f808bf6ec65daa2cdc35da66e7e25)
2014-02-27 20:25:29 -05:00
Leo Franchi dbb3bf6a4d Fade by groups when rerendering
(imported from commit 31f472bb87eaa03bf38dddcc696e843d93e68e08)
2014-02-27 20:25:28 -05:00
Leo Franchi 0e55e54bec Remove `last_message` class when manually splicing in new last message
(imported from commit d828cd56e797f3174c0a52240d673b708d894c33)
2014-02-27 20:25:28 -05:00
Leo Franchi ffdfa203e8 Don't error out scrolling when there's nothing there
(imported from commit e2af794dafb93e3509c6fa5f28314ac8e21849b0)
2014-02-27 20:25:28 -05:00
Leo Franchi 1d601134ed Don't error out if we get an edit for a message that's out of view
(imported from commit 042cadc8657d048d0fd3a410af5adbbaeac7d92d)
2014-02-27 20:25:27 -05:00
Leo Franchi 5d013b78eb Show EDITED message on rerendered edited message
(imported from commit e06a951222597561a3e4dab7740fff00d95b2dd4)
2014-02-27 20:25:27 -05:00
Leo Franchi cd16eb952c Keep selected message selected when re-rendering single message
(imported from commit 8f034dfe9037cb513506714fd9c369e22af7f83f)
2014-02-27 20:25:27 -05:00
Leo Franchi 54e8bb872c Use the dark color classes for recipient rows when needed
(imported from commit a77409964a185e6a8856e0577cc95bc78aa96e6d)
2014-02-27 20:25:27 -05:00
Jessica McKellar f9d5a02710 Fix bug that hid digest email settings box for customers.
(imported from commit 6c1e3f53998eca0232fbfe66c62ab87b009bccd8)
2014-02-27 20:25:26 -05:00
Jason Michalski 5ad256fee7 Fix navigating away from the page in Firefox
When navigating away get_events will fail after we delete the event
queue before leaving the page. In that case we try to reload the page to
correct the problem. This happens before the page navigation is
complete, and then we reload zulip keeping the user captive. This was
only observed on on Firefox.

(imported from commit e001172e87a9f2ab7cf07a477e46b9d87752ac04)
2014-02-27 20:25:26 -05:00
Leo Franchi fe826cdf2b Grab the message id from the FRB when narrowing
(imported from commit 5b33a1ef09b70bf4f244fe0305a3da3f1d027391)
2014-02-27 20:25:26 -05:00
Leo Franchi 0dbcdb94af Set the zid of the FRB parent to be a valid row id
(imported from commit 31c559270a1f848e11b45f5ebeea68eaf7385ce4)
2014-02-27 20:25:25 -05:00
Leo Franchi d9bfef4848 message_list.view is a member not a function, do not try to call it
(imported from commit b1d609b5633a9ab42da7123a2d31a63d7627aeec)
2014-02-27 20:25:25 -05:00
Allen Rabinovich 1686d27633 Tweaks and changes to adjust for new message block markup
(imported from commit 78210c2b98976243ee1b516bd9400a3071dd8cd9)
2014-02-27 20:25:25 -05:00
Leo Franchi f22885223f Remove message id list from group divs
(imported from commit 620a219b5e11db79bfea971fe40deb09173deb10)
2014-02-27 20:25:24 -05:00
Leo Franchi 305cf30c50 Render just one message when editing and updating
(imported from commit 5b28e96e9d410faf9b33a5b0a1b4423191e8de58)
2014-02-27 20:25:24 -05:00
Leo Franchi 568c33f294 Render messages as groups of divs instead of individual rows
Now that we no longer use tables for our message list, we can
more logically group messages together.

(imported from commit 9923a092f91a45fe3ef06f2f00e23e4e3fb62a37)
2014-02-27 20:25:23 -05:00
Leo Franchi 748e5b6da6 Remove disabled summarization code
This experiment has been disabled for everyone for a while: if we
bring something like this back, it is not likely to be exactly the same,
and will be different enough to require a different implementation.

As it is, the summarization code was making a few code paths (rendering
especially) more complex, and is worth removing for simplicity's sake.

(imported from commit 6ac8cdc9f7077a5a1da01ab4268aba3db0bc43f8)
2014-02-27 20:25:23 -05:00
Leo Franchi f128ff6d53 Remove firefox-specific table hack, as we're no longer using tables for messages
(imported from commit 0d4e171c11e77e4000a8bfe7cbb8fc13e827d54d)
2014-02-27 20:25:23 -05:00
Leo Franchi 174a62eb7c Remove requirement of no selected id to hide empty feed message
(imported from commit 10f4882a5f2def7e5b8567942758bb33007601d0)
2014-02-27 20:25:23 -05:00
Jason Michalski 22e6ab4028 Change out the gemoji emoji for android version
(imported from commit 6810746b991e597a668fca443189a16da93aa83c)
2014-02-27 20:25:22 -05:00
Luke Faraone 8075c6e5a8 Allow cycling between streams with shift+{A,D}
Closes trac #2273.

(imported from commit 858ffd47aa6dbb372d426fe94b860dfe1c1cce34)
2014-02-20 13:27:43 -05:00
Steve Howell 187796c3d4 Remove transitional defensive code in filter.js
(imported from commit b28877e8b187e3b019635b7b52a7d0a157466ce0)
2014-02-20 11:38:50 -05:00
Steve Howell 5631e7e624 Remove transitional defensive code in hashchange.js
(imported from commit b02de9a51426339f3fdbe74fb61b89f5dd4ce8d4)
2014-02-19 16:20:29 -05:00
Steve Howell 2dd3776bc1 Consider .user-list-filter in right sidebar calculations.
(imported from commit f94100ba78d5756f20729ab6d752bc48af68ea3c)
2014-02-19 15:16:37 -05:00
Leo Franchi 07140e7f11 Don't overwrite already reified people
(imported from commit ab82e5b6b8bedfbd39e7c36892c0b401796a5fdb)
2014-02-19 12:49:39 -05:00
Steve Howell 2ce57fa5b9 Make sure Group PMs show in right sidebar.
If you have a lot more individual users in your realm than group
PMs in your recent history, we were squeezing out the Group PMS.
We now max out the ratio for any sub-section in the right sidebar,
as well as bumping up the min.

(imported from commit f7c44367f2a518d27406993cb6358cc96d1aae92)
2014-02-19 12:45:49 -05:00
Steve Howell 8ce5404777 Describe negated search terms correctly.
This changes Filter.describe and Filter.operator_to_prefix
to handle negated terms correctly.

(imported from commit 673c0d3a5a77784e95772c14e12534ad2daecda2)
2014-02-19 11:05:31 -05:00
Steve Howell 8611cc3977 Extract 'verb' variable in Filter functions.
Extract 'verb' in Filter.operator_to_prefix() and
Filter.describe().  This doesn't change any functionality;
it is designed to make a subsequent change have a less
noisy diff.

(imported from commit e9c4b6edc498d88ec1783ccdba079d980def9438)
2014-02-19 11:05:31 -05:00
Steve Howell 44564274a1 Move methods from search_suggestion to filter.
The methods describe() and operator_to_prefix() are
now in filter.js.  They seem like they eventually
may be useful outside the scope of search suggestions,
and they seem to go hand in hand with other Filter
responsibilities.

(imported from commit 55f14c3ee848febb2e7c8c6a27afd690569b4e08)
2014-02-19 11:05:30 -05:00
Jason Michalski 0244b50f0b Split bot deactivation from user deactivation
(imported from commit 153a870b244e040e3b5976f639866dbace5563f6)
2014-02-18 15:09:22 -05:00
Jason Michalski d177f49a96 Change the create bot API to use rest_dispatch
(imported from commit 0fac290be2ed04178c4df866f5bc958441b2d320)
2014-02-18 15:09:20 -05:00
Jason Michalski 9d973ff106 Change get_bots API to use rest_dispatch
(imported from commit 921895dd636ba118a0f57e60a7bcb9dca1c7c605)
2014-02-18 15:09:19 -05:00
Allen Rabinovich 7822be5cd9 Fix failing stream sidebar node test
(imported from commit 3187a8f34389bf1f0b37e80edec9fb56f7281306)
2014-02-18 12:50:32 -07:00
Allen Rabinovich d0572f50fb Miscellaneous style fixes for narrow window mode
(imported from commit f0a33be1640b2cb8810a0e7af52f453421cf0fe4)
2014-02-18 12:50:32 -07:00
Allen Rabinovich 56f1c023ab Redesign elements in left sidebar
(imported from commit 37ae516325a4bd4db7a9e45e7862af6fee3af46e)
2014-02-18 12:50:32 -07:00
Allen Rabinovich 01a04c3169 Add offsets to fixed elements based on the width of the browser scrollbar.
(imported from commit 2026725165dead381d0b99181ef84a67a5bd6626)
2014-02-18 12:50:31 -07:00
acrefoot 8af170a3c3 update old messages' stream-color text class
(imported from commit 998611bd5b4e25985be73c9262a5c1e772f87ce1)
2014-02-18 12:50:31 -07:00
Allen Rabinovich 48476fcbc5 Code cleanup: remove commented code and console logs
(imported from commit 20058b87775653f2d526c2d3249549402bc36807)
2014-02-18 12:50:30 -07:00
Allen Rabinovich 235baf5187 Fix showing the private message floating recipient bar
(imported from commit 1ee76153dfe72627cbe43ea07b746407e5461da7)
2014-02-18 12:50:30 -07:00
Allen Rabinovich 9dd8779a3a Fix stream color change logic
(imported from commit 45dbc57bf28d6b4536fe7683b4a9ce1331d3d072)
2014-02-18 12:50:30 -07:00
Allen Rabinovich 78a3da7fbe Fix issues with message editing and status message layouts
(imported from commit 3ec5c6ccf6c20a6c102075887b6ff36afc613bdd)
2014-02-18 12:50:30 -07:00
Allen Rabinovich ee3cb60e3c Redesign styles for message pane
(imported from commit 394249d58f1cc3b976b432bbc421b99510e7fff9)
2014-02-18 12:50:29 -07:00
Allen Rabinovich dbdc0a9721 Switch message pane headers to new design
(imported from commit f640641553779450f9d9d15e5586ef38e068367b)
2014-02-18 12:50:29 -07:00
Allen Rabinovich e7e2f3a79c Modify crumbbar style to look like an arrowbar
Also:
  * Change fixed element positioning and fix bugs
  * Move settings dropdown back to the right and add left padding to left sidebar

(imported from commit fcf903b59617687f94618a01ce7544b69f408130)
2014-02-18 12:50:29 -07:00
Allen Rabinovich 29250a6692 Move crumbbar to header and change visual appearance
(imported from commit 435e3b46b615f6c496be10b7d170ed3e4201787d)
2014-02-18 12:50:29 -07:00
Steve Howell bbfd33185c Remove narrowing options from message chevron menu.
Remove the options to narrow by topic/person from the menu,
because there are better ways to do this in the UI, and
remove the time travel option, because the "Link to this
conversation" achieves mostly the same effect.

(imported from commit b7e0cfe64c0760e5a7bf7a8c9c05ed1a5b747300)
2014-02-18 13:19:39 -05:00
Steve Howell 2c6d7e8e18 Support q hotkey to Search people.
(imported from commit eafaf5900461e2df52de9ddbdc49823bf6d9e403)
2014-02-18 13:04:36 -05:00
Steve Howell 2d09036466 Have ESC blur Search people if it is empty.
(imported from commit d816c8b24cabfbea964fec9cb043f8a00c05f205)
2014-02-18 13:04:35 -05:00
Luke Faraone c33eeeee23 Open a PM from the peoplesearch list on <enter>
Closes trac #2274

(imported from commit 3238abe37b82a994769eebacbd5fced37fca9609)
2014-02-14 09:55:10 -05:00
Luke Faraone 4ebc4a4ef1 Expand characters allowed after an alertword.
We now support .';[ before a word and ';]! after.

Closes trac #2283.

(imported from commit b3e3cb3d8d49a8e74d0b6a108c5ec73e9d9b5f32)
2014-02-13 17:14:53 -05:00
Tim Abbott d7e4429bb7 Revert "Add adjustments for browsers with fixed scrollbar"
This reverts commit 462a3eb5e6b83f9d8091b83e3f8dc458236938ed.

We're reverting this to see if it is the cause of our recent CSS
performance issues.

(imported from commit 6a0b041cfcb6770bbfda0d354444bad2d64459ab)
2014-02-13 16:41:03 -05:00
Tim Abbott 36e2929ee2 Revert "Add radix arguments to parseInt calls"
This reverts commit fd77a988f1aa5bbdf430fbbb710dc9774fa85aaa.

(imported from commit 3865250797dd2ae8ebc9d26f491b0decf1786e21)
2014-02-13 16:41:02 -05:00
Leo Franchi acec697fe7 Report unnarrow times as well as narrow times
(imported from commit b3a889aa11dc112508c5a1d213f68e5223a879fc)
2014-02-13 14:45:22 -05:00
Steve Howell aa90e265c2 Handle negated terms in operands/has_operand/has_operator.
For the Filter helper functions above, we generally want to
ignore negated search terms, since their existence should
really only impact filter predicates and nothing else on the
JS side.  The exception is search, where even the existence
of a negated search needs to be noted to know that we can't
apply a filter locally.

(imported from commit 8bbb410a85fefed549d359e4c779a134ad830c11)
2014-02-13 14:14:25 -05:00
Steve Howell 76ff3a526c Set negated flag explicity to false in JS code.
For negated search terms, we weren't explicitly setting
"negated" to false when callers left it undefined, which was
mostly fine, since undefined is falsey, but it is better to
define it explicitly for debugging/testing purposes.

(imported from commit 68a2790b510d17caed8ca11c38188545d1dcc347)
2014-02-13 14:14:24 -05:00
Steve Howell 2fb7c0059d Support negated searches on staging.
Behind a feature flag you can now do searches like this:

    -pm-with:othello@example.com is:private

The "-" in front of "pm-with" tells us to exclude messages
with Othello from our search.  We support "-" in front of
all operators, although the behavior for "-search:" and
and "-near:" doesn't really change in this commit.

Note that the filtering out of "negated" predicates only
happens on the client side in this commit.  On the server
side we ignore negated predicates and send back a superset
of the results.

(imported from commit 6cdeaf32f2d493fbbb838630f0da3da880b1ca18)
2014-02-13 14:14:24 -05:00
Waseem Daher 98737a012e Properly prepopulate realm name on admin page.
Also, don't call it that.

(imported from commit baacd95be5b01373aa9423071ca72d917480e341)
2014-02-13 13:18:18 -05:00
Jason Michalski 044e3ced4f Fix how the hash URL is build for IE support
IE sometimes returns the pathname without a leading slash. Also
location.origin is not supported and must be build manually.

(imported from commit fb64478aeaac0f17d31021b7c370ff56781b48d1)
2014-02-13 12:39:24 -05:00
Steve Howell f4db89c7e9 Supported negated terms in filter predicates (JS).
(imported from commit b50527620b5b451b4d6e0dc073de4036fe2b7e1f)
2014-02-12 16:58:08 -05:00
Jason Michalski dd345bdece Make sure the hash we change to always starts with a #
(imported from commit b27d4a3b9b89b2576d4b1339d55d54ba338a576d)
2014-02-12 16:30:07 -05:00
Jessica McKellar 3a6df13360 Don't fade messages on different topics but the same stream.
(imported from commit 1bc2d49b346619609e73794d237faf2352b974b3)
2014-02-12 16:26:57 -05:00
Tim Abbott 19dcc3f385 Disable centering narrows around first unread message on server.
(imported from commit 11b17c2874370d63528e2c9e978eb605da8005e4)
2014-02-12 15:34:33 -05:00
Jason Michalski bd9cccffce Use pushState where supported to change the URL hash
This this removed one forced relayout of the page on unnarrow. This
saves about 100ms for me.

(imported from commit 0755f425abbe3d99b8a99765549a5bbf3c620b9a)
2014-02-12 15:19:10 -05:00
Tim Abbott fcb8c106b1 Fix saving of pointer on server-initiated reload when narrowed.
Previously, we saved the current_msg_list selected id and then
restored it as the home_msg_list selected id, which could result in
the home view loading to the wrong place.

This takes some already bad code and makes it even more in need of
refactoring, but it does fix a pressing bug.  We should definitely
refactor both:

* the top of narrow.js
* the save/restore code in reload.js

after this, though.

(imported from commit bb2040219e4f545ba90bb04a696996cec2831484)
2014-02-12 14:40:38 -05:00
Tim Abbott f4c514fbf3 hashchange: Fix indentation on main switch statement.
(imported from commit 1420cc2513e1bf6b80c8e52a6c0d3d66e82a5a1d)
2014-02-12 14:40:38 -05:00
Allen Rabinovich 15da5628a9 Add radix arguments to parseInt calls
(imported from commit fd77a988f1aa5bbdf430fbbb710dc9774fa85aaa)
2014-02-12 11:24:27 -07:00
Leo Franchi 502852541b Enable local echo for customer15.invalid redux
(imported from commit 88f13b58cfc8b68dc439138cc62aea3ff72868f1)
2014-02-12 11:53:50 -05:00
Allen Rabinovich addfcbfc30 Add adjustments for browsers with fixed scrollbar
(imported from commit 462a3eb5e6b83f9d8091b83e3f8dc458236938ed)
2014-02-12 10:47:54 -05:00
Leo Franchi c63f881518 Fix inverted boolean check for local messages in topic propagation
(imported from commit 2daf7c0c8729a785c3a1105803cbaed31f32128e)
2014-02-12 10:08:19 -05:00
Steve Howell bf08e33648 Revert "Ensure server still gets narrow operators as tuples."
This reverts commit 64aced74012101f3bdbd3a4e6066b46ad8e1f4ea,
which was always intended as temporary code until we upgraded
the back end to support dictionary-style narrow operators.

(imported from commit b8d3a19f3aad3d9d6a26b9dcc07f502c55b18edd)
2014-02-11 13:56:23 -05:00
Steve Howell afe893b324 Remove filter_term() shim function.
The filter_term() function was supporting the transition
from using tuples for search terms to using dictionaries,
but now all of the JS code should be dictionary-compatible.
(We had already abandoned the tuples safety net on staging,
and a couple days of use have given me confidence we can
pull the shim code.)

The one side effect this change has is that search terms will be
initialized to {} instead of [].  This distinction matters
when it comes to calling JSON.stringify on the search terms.

(imported from commit 1fbe11011d8953dbea28c0657cbf88384d343e00)
2014-02-11 13:52:17 -05:00
Steve Howell c87b77e52e Report errors due to legacy tuples in hashchange.operators_to_hash.
(imported from commit f639ba52f85bf103afdd26dc4f279e1f03570119)
2014-02-11 11:45:44 -05:00
Zev Benjamin 92b249a0a1 Replace curly quotes with regular quotes on the front-end before performing a search
(imported from commit 1be7384cea8808f9fceec889ecee6434e9bad6c2)
2014-02-11 11:45:44 -05:00
Jason Michalski 3de8bb7f80 Add a detailed description to event loop errors
(imported from commit b842b59912929d08f3d46dafaf49276d311f4ed2)
2014-02-10 17:08:11 -05:00
Tim Abbott 37dffa0f2d channel: Improve handling of non-JSON format 403 responses.
(imported from commit 942a830155c84741e67605672c837b431cca8af7)
2014-02-10 17:05:34 -05:00
Jason Michalski c028dbe6b9 Put the reload GC changes behind a feature_flag
(imported from commit b009c2f4e5d76573902f335fb1a3b74622af6191)
2014-02-10 15:41:32 -05:00
Jason Michalski 47ca6b2800 Add ajax request tracking and aborting to channel
The channel module now keeps track pending ajax requests and has an
abort_all function to angle all pending requests.

(imported from commit 4e78ab24d2295bd67de5633e3a200dfa489825b1)
2014-02-10 15:41:32 -05:00
Steve Howell 6b93315cc3 Prevent browser errors for stream: searches.
When we typed "stream:" into the search bar, the empty operand
triggered an error in the Dict class for an undefined key, because
we were using opts[0] as a "defensive" workaround to opts.operand,
but opts.operand of '' is more correct than opts[0] being undefined.

Now we only fall back to opts[0] whe opts.operand is undefined, and
we emit a blueslip error when that happens.

(imported from commit 88a196d3bc3d67689c36bc036f378da744c652f9)
2014-02-10 15:11:43 -05:00
Steve Howell 10b24f77b6 Fix misc. uses of search tuples.
(imported from commit c7dc47c1396eb0d9f6821cafcb3dc90d283b4764)
2014-02-10 15:11:43 -05:00
Leo Franchi 74b86c88b8 Enable local echo for customer15.invalid
(imported from commit 737d1efedd37d7c2138b3575fddef694d69378f0)
2014-02-10 13:23:28 -05:00
Leo Franchi 9a2bf4f359 Remove blueslip debug for localecho
(imported from commit 88682c42ed398dfe7afecd7260db2aefa7d474ba)
2014-02-10 13:23:28 -05:00
Steve Howell 72ee636571 Use stream_id as key for subscription removals.
Have the server send down the stream's id for removal
events, and have the client use that id to look up the
stream in its internal data structures.  This sets the
stage for eventually just sending the stream id (and not
the stream name) down to clients, once all our clients
are ready to use the stream id.

(imported from commit 922516c98fb79ffad8ae7da0396646663ca54fd0)
2014-02-10 13:23:27 -05:00
Steve Howell 194464f596 Extract subs.mark_sub_unsubscribed().
Splitting out subs.mark_sub_unsubscribed gives the calling
code flexibility to track down the "sub" as it sees fit.

(imported from commit 4052f5a2a0f6fd58a2177f2b5961ce72f052cf94)
2014-02-10 13:23:27 -05:00
Steve Howell bb0608b55a Use real stream ids in our stream-related UI widgets.
Before this change, we were using sequentially generated ids
on the client side to identify streams.  Now we just use
the ids from the server.  The goal here is to reduce the
confusion of having two different ids attached to a stream.
Also, not that it matters a ton, but this also means that
the browser basically has an immutable id for each stream
that is future-proof to reloads, multiple create_sub calls, etc.
It also a bit easier to grep for ".stream_id" than ".id".

(imported from commit 057f9e50dfee127edfe3facd52da93108241666a)
2014-02-10 13:23:27 -05:00
Steve Howell 2fb70eb38c Remove tuples safety net for narrow filters on staging.
We have shim code that makes our internal narrow operators
support both a tuple interface and an object interface.  We
are removing the shim on staging to help expose any dark
corners of the code that still rely on operators being
represented as tuples.

(imported from commit f9d101dbb7f49a4abec14806734b9c86bd93c4e1)
2014-02-10 13:23:27 -05:00
Steve Howell 5c2a41f8b7 Ensure server still gets narrow operators as tuples.
(imported from commit 64aced74012101f3bdbd3a4e6066b46ad8e1f4ea)
2014-02-10 13:23:27 -05:00
Steve Howell 8d81ea33da Have pick_empty_narrow_banner() use operator/operand.
This is part of phasing out the internal tuple representation.

(imported from commit aa8788efbdc0f8d08d99bae154f68a3b60272c65)
2014-02-10 13:23:26 -05:00
Leo Franchi 1c332f5d6a Standardize on 'subscription' as event type name for subscription changes
Our overall guideline is the type names for events are singular, and the list of
events of that type are plural. 'subscriptions' was not following this guideline
and (potentially as a result) had a bug where it was impossible for clients to explicitly
subscribe to subscription change events properly.

(imported from commit 7b3162141fd673746e0489199966c29ea32ee876)
2014-02-06 17:07:38 -05:00
Jason Michalski f1e110c177 Empty large collections and remove event listeners before reload
Chrome was showing a memory leak after many auto-reloads. Emptying the
the collections and removing the event listeners reduces the severity.
Before this change 40 reloads would would grow to about 140MB, now it
stays around 50MB.

(imported from commit 55fbeff9bdd0363bb95929f2981a2de238ff35d8)
2014-02-06 16:42:38 -05:00
Steve Howell fc78a2cc66 Stop using tuples in search_suggestions.js and Filter.unparse().
This is yet another change related to phasing out the
[operator, operand] tuple data structure for representing
terms in a narrow.

(imported from commit 508e58fc4eebae8a24a8ae59919ba5d94fc66850)
2014-02-06 16:42:38 -05:00
Steve Howell 90f6eb0661 Keep track of subs by stream_id inside of stream_data.js.
The JS code can now call stream_data.get_sub_by_id() to get
a sub from a stream_id.  Subs have stream_id due to a prior commit,
and we keep track of the mapping in stream_data's subs_by_stream_id
variable.

(imported from commit 409e13d6d2e79d909441a66c85ee651529d15cd2)
2014-02-06 12:09:52 -05:00
Steve Howell 3a96686cbc Add stream_id to page_params.{subscriptions,unsubscribed}
This isn't used by the client yet, but it should be harmless.

(imported from commit e09ac65ca802f5cf16375b8a93d34e0dfbcb76b4)
2014-02-06 12:09:52 -05:00
Steve Howell 07e337ff8a Simplify calling mark_(un)subscribed in server_events.js
(imported from commit a5faae42642c5d2c2410021bb33917827577d9a2)
2014-02-06 12:09:52 -05:00
Steve Howell 583dae72a3 Change how the tutorial overrides the default stream color.
The tutorial introduces "engineering" messages that might not
be in the user's normal subscription, and they would get a gray
border if we did not override the stream color.  Before this change,
we accomplished this by overriding the core data structure in
stream_data.js.  Now we are a bit more future-proof; we only
override stream_color.default_color.

(imported from commit 0d0845b72f766912679f5aa7641ae9a60fdbb4ce)
2014-02-06 12:09:51 -05:00
Steve Howell dbcc406272 Fix blueslip warning for stream email_address updates.
(imported from commit 6cc105113072eadff3781bdbf9e08e43974ade4c)
2014-02-06 12:09:51 -05:00
Tim Abbott 02d69f18ac Clean up codepath for selecting a message on unnarrowing.
This does have a small functional change of using use_closest even for
the current_msg_list.last().id case, but that's harmless; and it does
reduce a lot of code duplication and confusing logic here.

(imported from commit 7c4ecaa197120cc6d5c05ce4887f33c7d94a9c59)
2014-02-06 10:25:35 -05:00
Tim Abbott 1bd9e5809c Restore the browser's scroll position on server-initiated reload.
(imported from commit 934659c0f1a2c014cfd2811fe49ea31abad262b2)
2014-02-06 10:25:35 -05:00
Leo Franchi d961829355 Tell the desktop app the source of a desktop notification
(imported from commit ed697d50e35589a61746ad66bff5ae50becead77)
2014-02-05 12:02:27 -05:00
Jason Michalski 515e64175f Add extra logging when the selected row can not be found in the cache
The leading theories this will test are:

1) MessageList._items becomes unsorted and the binary search starts
returning the wrong index from selected_idx.

2) MessageListView.render is not rendering the message or it is not
being inserted into the cache.

(imported from commit 926b7d7bf9df338320a8cba6241038176ce4b47d)
2014-02-05 10:27:33 -05:00
Jason Michalski 0dd61e9222 Blueslip has a warn not warning function
(imported from commit 1f18331cac451c62a089f042b316278030c41965)
2014-02-04 23:08:19 -05:00
Jessica McKellar a32b326ff2 Make tutorial respond to window resize events.
(imported from commit 4d7af1df04db8e2ef344e4c8e572d1a702309f73)
2014-02-04 15:51:53 -05:00
Steve Howell 9c48ba43fb Do not return terms as tuples in hashchange.parse_narrow.
(imported from commit ffc4acacdd220de57e0179c9dc8272e6b5c33457)
2014-02-04 13:16:34 -05:00
Steve Howell 7fb7950f70 Support non-tuple operators in hashchange.operators_to_hash().
(imported from commit e002293c586d4ef754612feee2b7f33215cf305f)
2014-02-04 13:16:28 -05:00
Steve Howell 89ea079dce Allow Filter to accept non-tuple-based terms.
We make this happen inside of canonicalize_term.

(imported from commit 0571f6cac8ffdc806af56423cc98134c7493139e)
2014-02-04 13:16:25 -05:00
Steve Howell 112bc5ceda Rename canonicalize_tuple to canonicalize_term.
(imported from commit 07e0c4a6802b0d4b4fbb8ffd3965cab6457d4aeb)
2014-02-04 13:16:25 -05:00
Steve Howell 889adfa0e0 Have filter_term accept an object, not a tuple.
This is more phasing out of tuples for narrowing.

(imported from commit 7c8b801e807053f60bee5086df6acb70b852a79c)
2014-02-04 13:16:24 -05:00
Steve Howell eea8c0d1d5 Allow admins to change the realm's name in the UI.
(imported from commit 2873f872069a41c91beb87728f64fa526dd8a326)
2014-02-04 11:33:19 -05:00
Steve Howell 8266ac3cf9 Extract notifications.redraw_title().
This sets us up to redraw the window title without having to
pass in the unread count, which will be useful for realm name
changes.  The redraw_title() function is only responsible for
rendering stuff, whereas update_title_count() handles
the details of caching the count.

(imported from commit 67cfb7a273e2a61720ce2bd8d91d73fe1089c813)
2014-02-04 11:33:18 -05:00
Leo Franchi 9f8e57a1cd Catch exceptions when saving to local storage, as disk may be full or quota may be up
(imported from commit 5707228b89badd766527a4fdf77d4b7a7552447b)
2014-02-03 17:50:30 -05:00
Leo Franchi e8d4723d44 Enable local echo for hacker school realms
(imported from commit cd34b326f94be5fdf5ec93a0e5302b880f16e78c)
2014-02-03 16:57:36 -05:00
Jason Michalski 0e1909f489 Prevent errors in get_updates_success from stopping the event loop
Add try/catch blocks to get_updates_success and send a blueslip error on
errors we catch. This will let get_updates_success return successfully
so that the next call to get_updates will start immediately.

(imported from commit 44d8b85d9d8e930a5552a5fbf4af1d0e5e8c07e8)
2014-02-03 15:28:27 -05:00
Jason Michalski a4ff866571 Add support to blueslip.error to report an existing stack
(imported from commit 864b6b066a7870d2a435f50c6154f4bf3e3c5a12)
2014-02-02 00:47:50 -05:00
Tim Abbott 84e2c2b9da Use stored.messages[id] rather than exports.get inside message_store module.
(imported from commit 83ae3f364083da4d5d26f26a941440c1925d4b62)
2014-02-03 13:32:02 -05:00
Tim Abbott 9107c67d88 Rename msg_metadata_cache to stored_messages.
(imported from commit 3b32fb8b4f46eb6f09232e8b251feb2874a0e01e)
2014-02-03 13:32:02 -05:00
Tim Abbott 8c733fde8f Use message_store rather than all_msg_list to get messages by id.
There are 2 uses of all_msg_list previous to this commit:

(1) The contiguous block of messages to be used for constructing the
initial state of narrows.

(2) A way to look up an arbitrary message by ID that may or may not be
in the home view to check if we have it locally.

We eliminate all applications of use case (2), replacing them with
queries on message_store, since they are in fact wrong -- any messages
that are outside the contiguous time period of all_msg_list would not
appear in all_msg_list and thus would incorrectly not be returned.

(imported from commit e2e2efe919242331bbc44abc6c50b16e3ab1336e)
2014-02-03 13:32:02 -05:00
Tim Abbott 30056197a6 Move report_as_received to compose.js.
(imported from commit 29a309aa0597f17d82277901bcf5d38c680c9b94)
2014-02-03 13:32:02 -05:00
Tim Abbott 7e6bb801e2 Move message_range to a function on the message list.
(imported from commit c78710a3ccddb15352086b450fb6986e1251f364)
2014-02-03 13:32:02 -05:00
Tim Abbott 0b12681558 Export message_store.get() for getting message objects.
(imported from commit d7d20bf3aab62a1b407709b1c0bf947b3ad8bee8)
2014-02-03 13:32:02 -05:00
Tim Abbott f26af47fb6 Center on-page-load narrows on first unread message.
This implementation is somewhat hackish in large part because I think
we're going to be wanting to redo the get_old_messages API somewhat
soon, and this may naturally become a lot cleaner as a result, but
this isn't a lot of code and fixes #2235 part (A) and substantially
mitigates #1510.

(imported from commit 47a2160a44befa9d83190c5cc95b90e92cc5b4cc)
2014-02-03 13:32:02 -05:00
Leo Franchi be115a2914 [localecho] Properly account for an empty message list and empty db
(imported from commit faac1644cb81bc53f43de8c6f830a0145c8c7ca5)
2014-02-03 13:15:42 -05:00
Leo Franchi 0a9f54369a Disable desktop-app emoji handler. It breaks copying of formatted text
(imported from commit 14c9ee7ba61d4913da2d2e8c677739b573252525)
2014-02-03 13:07:43 -05:00
Leo Franchi f8a9f36dfa Don't use our copy handler when editing a message
(imported from commit 49e7001d8aa9af4f482b62332da03faad784074f)
2014-02-03 13:07:42 -05:00
Leo Franchi bb21400732 [localecho] Properly escape HTML in code blocks
(imported from commit 11f7e4f440cdd3a2ef6debb10c3d5a07f4fd1a1a)
2014-02-03 12:57:54 -05:00
Leo Franchi c8f134370b Provide a valid local id when a fresh database with no messages is used
(imported from commit dafff9d4800a643693b57e92b7a02171c466333b)
2014-02-03 10:35:25 -05:00
Jason Michalski bb0784d9aa Remove tags from selectors to conform to the style guide
(imported from commit 14233e3ec8ca72cae6baa5fcb4e4068bd1524823)
2014-02-01 20:29:15 -05:00
Jason Michalski 80d2ecdd1e Enable custom copy handler when selection starts on a stream header
When users select messages starting with stream header we should format
the text as using the custom copy handler.

(imported from commit 4f9851939484d046619c3e53c71c47ad64797670)
2014-02-01 20:29:15 -05:00
Steve Howell 20cfb9fe84 Remove unused in_realm var in people.add()
(imported from commit af827e29b03492c671c1f05df9bb3280fde0ad4e)
2014-02-03 10:16:17 -05:00
Tim Abbott 4b30afbb27 Fix display of unread counts.
I apparently screwed up when backing up the process_loaded_for_unread
move in a way that just lost the function.

(imported from commit 91dfcf1abc85d439274cb8b0be380e9230942ebb)
2014-01-31 17:53:11 -05:00
Jessica McKellar 1c5110dbad Send you a registration email if you try to sign up for an existing realm.
(imported from commit 9104096b424f31a22ee7c8b72378f05309bb978b)
2014-01-31 16:40:19 -05:00
Tim Abbott 88fbd5d16a Split out new module message_store.js.
(imported from commit 57cf3f2b8e74d7c56e3baf75859d5b3646282225)
2014-01-31 15:57:28 -05:00
Tim Abbott f5d3a6ddc7 Move suppress_unread_counts to unread.js.
(imported from commit fb64edc27b661d036c9f24715aeb3b4dbdf9463a)
2014-01-31 15:57:28 -05:00
Tim Abbott 004fd0eab8 Move unread-related functions from zulip.js to unread.js.
(imported from commit efc0dd84c2cd30b0203b906af6991475d8a63985)
2014-01-31 14:59:03 -05:00
Tim Abbott c8d57fcafb Split out message_flags.js.
(imported from commit 52afa76fa71141630e325e558cb9c6955d8c03d5)
2014-01-31 14:59:03 -05:00
Tim Abbott 55a88f049c Remove unused within_viewport.
(imported from commit d528e022a0d088052bb0bac5c29864688dae59ca)
2014-01-31 14:59:03 -05:00
Jessica McKellar ec88b3abaf Give admins the ability to unsubscribe people from streams.
(imported from commit 7ec130a233a2976ad0be6f8a7b59c33ce0e0cf3f)
2014-01-31 11:23:14 -05:00
Jessica McKellar c4c5ac210e Convert stream member list to a handlebars template.
We had been concatenating strings.

(imported from commit 2d50d3f750a450029d39553ea9cd99ef824a149b)
2014-01-31 11:23:13 -05:00
Tim Abbott 6e5e5596fd Remove deferred installation of scroll handler.
This is no longer required, now that we're no longer scrolling the
main body of the page.

(imported from commit c2aa0d403c8fd0679b3110fe8e7684d46a7557fa)
2014-01-31 11:15:14 -05:00
Leo Franchi 2fac412119 Get next local id correctly when all message list is empty
(imported from commit 07208222ea682251927ef13c684e9e89277233bf)
2014-01-30 18:08:48 -05:00
Leo Franchi 01e948ac97 Allow unnarrowing to an empty message list in unread-messages-read case
(imported from commit f377dbce61fe2fc2051bc286f7215e8112f92736)
2014-01-30 18:08:48 -05:00
Leo Franchi 1056078415 Truncate local ids when loading older messages if messages could be local only
(imported from commit b32ae8f3554632aa84ed2dd039a612bb0fa644e2)
2014-01-30 18:08:48 -05:00
Tim Abbott e505583f52 Split out new module people.js for tracking people.
(imported from commit fb9b769819ade25d1d3d6e452e68c7ee8651cfdd)
2014-01-30 17:32:58 -05:00
Tim Abbott d0ae8795c3 Clean up obsolete fields in get_events_params.
Both pointer and last are fields that were removed when we changed the
protocol to use events like a year ago.

This conveniently allows us to stop exporting get_updates_params to
other modules.

(imported from commit 13651ee240ce6e1bafb241b185e5ef653c348cdf)
2014-01-30 17:23:53 -05:00
Tim Abbott 2fb9baafb4 Start running get_events immediately on page load.
Previously, we waited until we'd fully loaded the home view to start
calling get_events, which:
(A) didn't make sense non-message related events
(B) resulted in our throwing "get_updates not started" errors when
users sent a message before the home view was fully loaded.

This commit only fixes problem (B); to fix problem (A) we will need to
change the event capture code to only capture some events.

(imported from commit 2aacd6bdfd1e7d7707e3a724f1fde7da4a556538)
2014-01-30 17:23:53 -05:00
Tim Abbott f27edcd50a Move initial call to get_events to server_events.home_view_loaded.
Note that this makes the event fire after the home view has messages
loaded all the way to current; previously it only waited for the first
batch of messages to load.

(imported from commit a5c408ea0136c761f4cc77e8be4977b13acc6d77)
2014-01-30 17:23:52 -05:00
Tim Abbott 1eb294ed11 Rename get_updates to get_events in the frontend.
We did this rename on the backend ages ago.

(imported from commit 11bdf6aa08d932fe2586de282f6174e3dba7267a)
2014-01-30 17:23:52 -05:00
Steve Howell e60f148a3e Clean up double negatives in message_matches_search_term
(imported from commit 677bb3a76d3404f9899498777e7f1169947422c7)
2014-01-30 17:19:50 -05:00
Steve Howell 189743e813 Extract message_matches_search_term in filter.js.
This diff really just moves code; it's a trivial function extraction.

(imported from commit 8ff82b089e49645a6c6034152a9fc9cd83da0737)
2014-01-30 16:46:51 -05:00
Steve Howell 3a412b35e1 Use _.all() in Filter._build_predicate.
By using _.all() instead of a for loop, we avoid a tiny bit of
confusing between "break" being for a switch statement and being for
the loop.

(imported from commit cd6e7ff788b50f4dadce93e7f0efcb381bc59270)
2014-01-30 16:45:47 -05:00
Steve Howell 15b0f9dcc7 Use operator/operand in narrow.collect_single().
(This is part of converting away from tuples.)

(imported from commit ba3083f8b3242fee1d532d7666aee68af89d8ddc)
2014-01-30 16:15:16 -05:00
Steve Howell 796ebfd007 Do not return raw operators from narrow.operators().
Even in the case where we are running embedded narrows,
we want narrow.operators() to return new-style operators
that you get with Filter objects, so that callees do
not need to support the legacy tuple format.

(imported from commit a6649881a926a2304e9f7cc8ca53b406e2c8828e)
2014-01-30 16:15:14 -05:00
Steve Howell de7708ed6e Handle id:<msg id> searches with multiple terms.
If you do a search like id:5 topic:foo and message #5
does not have the topic "foo", we now return zero results.

(imported from commit 8121fac1dbd79024c51af1f310d831dab9242e36)
2014-01-30 15:57:32 -05:00
Zev Benjamin a2d989b318 Fix typo
(imported from commit dc7ef302a70291063c3ef339f72b6a91e8129dc1)
2014-01-30 15:57:32 -05:00
Zev Benjamin 50e1cb7ab3 socket: Specify reasons everywhere we close the SockJS object
(imported from commit 7314fa975b9408caba2c5f1374c8259d67784ad0)
2014-01-30 15:57:32 -05:00
Zev Benjamin 3df1097c95 socket: Wrap module in an anonymous function call
This is so we can have some class variables.

(imported from commit 6311444bb2739daebc6c5da2b7ea7eabdd88689d)
2014-01-30 15:57:31 -05:00
Zev Benjamin 9020f37141 socket: Add comment about the close() call in _try_to_reconnect()
(imported from commit 87e32adcb9eeb066b6f3ecd85550d00263e0a4e9)
2014-01-30 15:57:30 -05:00
Zev Benjamin b8444daddd socket: Pass wait_time as an option to _try_to_reconnect
(imported from commit 15a88c6da084f4834258868bc08b2cd983899820)
2014-01-30 15:57:29 -05:00
Zev Benjamin 1ed176b5ef socket: Log the reason the SockJS connection was lost
(imported from commit 069067f9f979e7255f97f4943d6513076b2706bd)
2014-01-30 15:57:29 -05:00
Steve Howell b3a551f402 Stop using raw operators in narrow.activate().
Have narrow.activate() user filter.operators() to produce
operators that have operand/operator fields, so that its callees
don't need to be backward compatible with the tuple format.

(imported from commit e408e33074d1be2d112bb3cdc081ec3616c908ee)
2014-01-30 15:57:28 -05:00
Tim Abbott a7b1b29bf0 Move get_updates into a module.
(imported from commit 9a6c0ab1e76dd96abad8626bc5b1fdbd234b2645)
2014-01-30 15:57:28 -05:00
Tim Abbott 33690d1dc6 Clean up argument to get_updates_success.
(imported from commit 2583c79f83e1e3e540a00ba8afae5a07dff70845)
2014-01-30 15:57:28 -05:00
Jason Michalski 90995889fc Fix scroll when muting and unmuting streams
(imported from commit 9bd22cd12dfa50cf8fd9d87eb659a4543c5c78c4)
2014-01-30 01:48:15 -05:00
Jason Michalski bf57839e85 Remove scrollTop workaround for hash changes
Now that we are not scrolling the document we can remove the workaround
to prevent browsers from scrolling on hash changes.

(imported from commit 67fdaa4980d4d54d80ca9c259bbee567b8eeb917)
2014-01-30 01:48:15 -05:00
Jason Michalski 21c2aea755 Fix scroll position on narrow and unnarrow
Change the offset to hold of the selected message as an offset from the
top of the screen. Then use the current offset and scrollTop to compute
the new scrollTop.

(imported from commit 718e95d3435c0f84cbb7663a9bb2bc2789314203)
2014-01-30 01:48:15 -05:00
Jason Michalski b0c5e2dbd0 Fix scroll on opening subscriptions details
Move the animated scroll from body to the app div.

(imported from commit 2d2062d7a917616a60f414a633dd2f827ae840a0)
2014-01-30 01:48:15 -05:00
Jason Michalski 9cc1dc242c Move the mouse handlers from window to app
(imported from commit 0331496a578c47f73b6c9e81d8a79e26e8d7a9a3)
2014-01-30 01:48:15 -05:00
Jason Michalski 198648447f Change viewport to use the app div not the document for size
Now that we are scrolling the app we should have viewport respect this
CSS change.

(imported from commit dec5450563a6f5ac23499819ec382030e3a910dc)
2014-01-30 01:48:15 -05:00
Steve Howell 967d3c9c65 Use .operator to get operator for mixpanel.
(imported from commit 7c70a592b2efd769acab9b178c08a345785b889b)
2014-01-30 13:24:43 -05:00
Steve Howell 53027b71a4 Use operator/operand inside the Filter instance methods.
Avoid tuples in the methods inside Filter.prototype.

(imported from commit beed799e767d9645735a2bd4eefb5d431c04f17f)
2014-01-30 12:53:08 -05:00
Steve Howell b18307b667 Start using operator/operands internally in Filter class.
By having Filter.canonicalize_tuple() call filter_term(),
we make it so that Filter objects get operator/operand
fields in their terms when we initialize this.

This mostly caused test breakage for tests that were doing
assert.deepEqual; now we just check to make sure that the
field we need are there.

(imported from commit 63b2516dc72edeb11e76a1fa4442570b9c605baa)
2014-01-30 12:53:08 -05:00
Steve Howell 12626ead66 Populate terms with named fields in filter_term().
Consumers of Filter.parse() can now reference
search term parts like so: term.operand, term.operator

(Legacy code can still use term[0] and term[1].)

(imported from commit 06d0da65f13f1eb7e3ba8eac0e69448aab2735ab)
2014-01-30 12:53:08 -05:00
Steve Howell fdd57f5abe Extract filter_term() in filter.js
(imported from commit 142464bb02817108726f9c118459c38e55b96bbf)
2014-01-30 12:53:07 -05:00
Tim Abbott abbe0f781f Don't wait 1 second before syncing updates manually controlled flags.
(imported from commit 8526f5d77aee078b5bc282da093009e19f016a44)
2014-01-30 12:48:36 -05:00
Tim Abbott 20457d695d Fix starring/unstarring of messages.
This got broken in the local echo refactoring -- we accidentally
switched the update_starred function to be a toggle, which meant that
the message would be marked as starred and then unmarked as starred
moments later, due to the two update_starred calls for the initiating
browser (one from when the click happens, the second from when the
event returns from the server).

(imported from commit 8f83729fe5477cf052124c1c56ed9189b85b885c)
2014-01-30 12:48:36 -05:00
Jessica McKellar 7085dca1ce Fix the Admin page not working for newly-knighted users.
Previously, while you'd get the event saying you'd been knighted,
which would make the Administration tab visible, clicking on the tab
would error out because the admin page HTML was never sent over on
page load (since you weren't an admin at that point).

(imported from commit 90ad351533515bebece630d67baf4b142d320754)
2014-01-29 12:41:22 -05:00
Jessica McKellar 20f2baa614 admin: Show a lock icon next to private streams.
(imported from commit 26829016cf219b55aef0ef45187667b0a9bd86fd)
2014-01-29 12:41:21 -05:00
Leo Franchi e716a75d22 Properly render at-all and at-everyone mentions locally
(imported from commit 9533b83dba6a61f6c09da755fca54e8a24ad61e6)
2014-01-28 17:37:10 -05:00
Leo Franchi 1666403850 Find message objects in any lists when updating, as update might come from server
(imported from commit fa70180c9a228bff39efd846d465d0f1fa9bb4e7)
2014-01-28 17:31:02 -05:00
Jason Michalski c573efd437 Ignore stream description update events for unknown streams
Clients can receive description updates for streams which are not in
stream_data. We should ignore the updates and warn that this has
occurred.

(imported from commit 3cd5a98a133012ae27ea0f43b03cc9d8e459e49c)
2014-01-28 17:12:15 -05:00
Leo Franchi 91fb4f6b8c Fix clicking on link to message when sending outside this narrow
(imported from commit 6eeeb3b4c06021be21f48c8c5f2869904cd13b09)
2014-01-28 16:03:11 -05:00
Leo Franchi ffb816391c Use our own fenced code preprocessor, fixing output mismatches
(imported from commit 3d4abb1043349e30adf265342ee7c946a99b3ce2)
2014-01-28 15:35:32 -05:00
Leo Franchi daecc7993a Add a fenced code parser in javascript
(imported from commit 42b1dc18ca34cbbdf3cda6e833adde631a9d88f5)
2014-01-28 15:35:32 -05:00
Leo Franchi dd7d31c7a6 Allow an empty home view when unnarrowing
(imported from commit 69f1a84b23ae8942db58851a1a1c6723c26df560)
2014-01-28 15:35:31 -05:00
Leo Franchi dc3c6f34fc Convert python-regex inline flag style to JS regex flags
(imported from commit 16c58fa54c0b87931d873290b175461ceb176d62)
2014-01-27 12:30:42 -05:00
Leo Franchi b83be2cd32 Properly avoid realm filter work in non-local-echo case
(imported from commit 9c01109e6900509690841306fb4a23464321de61)
2014-01-27 12:30:42 -05:00
Leo Franchi 1fdb586c13 Make sure then_select_id is a number to call .toFixed()
(imported from commit 58635110c737ccb38e74cce8b4feb5d93dfbf5cc)
2014-01-27 12:30:42 -05:00
Leo Franchi a82bc689e8 Render /me message on the frontend
(imported from commit ce4a44624b7084464d5c6ce8e04eef03ee23c9e3)
2014-01-27 12:30:42 -05:00
Leo Franchi 883157893c Use a UserMessage flag to indicate /me messages
(imported from commit ea503b0d3eb6e90230c0859be96ede60faf5c2bd)
2014-01-27 12:07:48 -05:00
Leo Franchi 5441409044 Consolidate emoji tests and test on frontend as well
(imported from commit 3244a93209b56b655b80633713a3f58ae46d06ff)
2014-01-27 12:07:48 -05:00
Leo Franchi 78f0cc1c4d Don't set realm filters unless we have local echo
(imported from commit bbb7d87a869d6f1bd99a45581f8f557a97f30cce)
2014-01-27 11:56:25 -05:00
Leo Franchi 6d9edcf06f Re-enable local echo for staging
(imported from commit e8b579e2289271732d3998cbe16854e39e55d5d6)
2014-01-24 16:09:44 -05:00
Leo Franchi 3b07c164fb Fix realm filters with multiple groups
(imported from commit 9652cf8acbe51e25bcf053980b6caa9565b57e45)
2014-01-24 16:09:44 -05:00
Leo Franchi 97fb3e74af Support subject links in local echo
(imported from commit 916fecccc834053ea0354936119c6591af273938)
2014-01-24 16:09:44 -05:00
Jason Michalski 62435e167f Add frontend stream description event handling
Update the stream page when receiving stream description change events.

(imported from commit 84f6f3846a3197f14a24611cdc06350fae90f9dd)
2014-01-24 14:47:44 -05:00
Jason Michalski 1f98c4f4ce Add support for updating the stream description
The stream description can now be updated, but the UI is not yet updated
on success.

(imported from commit f45e0a9d5138d828ae98d6d49645ab3ddc966704)
2014-01-24 14:47:44 -05:00
Jason Michalski 4104f00229 [schema] Add description to streams and display it
A description was added to the streams and it is now displayed on the
subscriptions page. It can not be set in the UI yet.

(imported from commit 81d08b65eee42dba87cd99dd5bd30106c4eb6c6a)
2014-01-24 14:47:44 -05:00
Leo Franchi ea04d027cf Don't allow editing of local-only messages
(imported from commit 4fcac6b4b7a5f917944934d06eae757d7cca8170)
2014-01-24 14:01:19 -05:00
Leo Franchi 9ec5cde8b0 Disable local echo for staging temporarily
(imported from commit dd4dcf1382f8511f49fc223223fa3dbba1634ef8)
2014-01-24 14:01:18 -05:00
Leo Franchi f528ac659d Only attempt to reorder a message if we had it in the message list originally
(imported from commit 0b2802c1f1b6b17cd9f52dd9cecdf84f6f1cf5b0)
2014-01-24 14:01:18 -05:00
Leo Franchi b1ac754448 Don't local echo messages that we can't apply locally to the narrow filter
(imported from commit 372063352f17caa4990195ace4757bb68c53523a)
2014-01-24 14:01:18 -05:00
Leo Franchi 063484a917 Only clear the compose box if a message was locally echoed
(imported from commit a90a566f61e939e34eab9666743848e47c122400)
2014-01-24 14:01:18 -05:00
Steve Howell e63d9d32e2 Remove an unneeded call to build_stream_list().
We were calling build_stream_list() twice in succession for
no good reason.  The call to build_stream_list() inside
populate_subscriptions was pulled out to happen right after
its two callers.

(imported from commit 816ae2fd34224d8baf4e4bcccdb670143795bb42)
2014-01-24 12:23:41 -05:00
Steve Howell 4015189094 Release page_params.{un,}subbed_info during initialization.
(imported from commit 410eeb7978281ae9b9e2a28fe26dcae10a65518d)
2014-01-24 12:23:41 -05:00
Steve Howell b82ed52e7b Rename page_params.stream_list to page_params.subbed_info.
This matches page_params.unsubbed_info, plus it sets up to
add something like page_params.stream_dict without being confusing.

(imported from commit 2d40deb779e5c7a488d6952560b4119094bbc0d8)
2014-01-24 12:23:41 -05:00
Jessica McKellar ee7a1f0953 tutorial: add helpful in-app links and be consistent with realm welcome message.
(imported from commit 2057dbe2606d32721192021ed2046ed9f412d8a7)
2014-01-23 17:06:29 -05:00
Jessica McKellar 993a20bdee tutorial: be flexible about the work-focused warm-up message recipient.
(imported from commit 190f0cb27dda8cb89c2682affe1daee4248fe846)
2014-01-23 17:06:28 -05:00
Jessica McKellar 117c98796e Send some messages to warm up the first user in a realm.
(imported from commit b4d92d474b27c9a0eabf99576a0f441a7d919106)
2014-01-23 17:06:28 -05:00
Jessica McKellar fcd89d5861 tutorial: show content as if in a stream narrow.
(imported from commit 716640dd5d0abeafdd8fd2f1b033a6203486a405)
2014-01-23 17:06:27 -05:00
Jessica McKellar ebd6408ec7 Make the tutorial shorter, and visually highlight important concepts.
(imported from commit 543d0ff838edbc2148df4b8d08331c793c7af4f6)
2014-01-23 17:06:27 -05:00
Jessica McKellar a677db4672 Start users in a narrow to the notifications stream after the tutorial.
They'll see the welcome messages they need without being overwhelmed
by the home view.

(imported from commit 195cb4defa1dc0aa5ba8870226036e4dfd111c0f)
2014-01-23 17:06:27 -05:00
Jessica McKellar 7702461700 Unconditionally subscribe new users to the notification stream if it is public.
(imported from commit 7d7f14eb6fee43ca6f18adddda741665ce22d24a)
2014-01-23 17:06:26 -05:00
Jessica McKellar e5a24c2d21 tutorial: tweak Desktop app banner language.
(imported from commit 727dd269314092a28b39e43300ee322416e3e18e)
2014-01-23 17:06:26 -05:00
Leo Franchi 1c9a59fd3f Add newlines outside code blocks in marked.js to match bugdown
(imported from commit 7618260dbfa11209b3cc45d007407476897c2a20)
2014-01-23 16:50:29 -05:00
Leo Franchi 07dae5fcb9 Locally echo messages that are loaded from storage and resent
(imported from commit 474a0994d82bdbff9c98b453d3e1e4dc7732f5bd)
2014-01-23 16:28:59 -05:00
Leo Franchi 4ac59a71bd [socket] Persist queued requests across restarts in localStorage
(imported from commit a3a7b0c8292c53807d179b343d371eebc11ef10b)
2014-01-23 16:28:59 -05:00
Leo Franchi fd4b68aa72 [socket] Save pending and queued requests together
(imported from commit aecf59b26938c831da03a6a31545f2522387e67f)
2014-01-23 16:28:59 -05:00
Leo Franchi 56d9446c41 [socket] Use socket req ids that contain queue ids
(imported from commit 781eafe60bf117d79ce3a30deea02ec1e875060a)
2014-01-23 16:28:58 -05:00
Leo Franchi 24cb5fb079 Add a localstorage.js module
(imported from commit 9f3ab248ce84ce296bb1fb918de3b2dd8cde1ded)
2014-01-23 16:28:58 -05:00
Leo Franchi e24dcb3952 Report proper displayed/receive time and local echo data
(imported from commit 63aba6ef05b1a55d61e975831ebbaa074f8ea74f)
2014-01-23 16:28:58 -05:00
Leo Franchi 439633fd03 More markdown compatibility fixes
* Escape " as &quot;
* Enable GFM newlines
* Output a linebreak after <br> in the generated markup

(imported from commit c007ec422054f9fc66a810b66aac70f70a2a1952)
2014-01-23 16:28:58 -05:00
Leo Franchi c1442f386f Local echo messages that mention the sender should be highlighted
(imported from commit 58184f00e63fd50ed4a68d12afe0779ae3745749)
2014-01-23 16:28:57 -05:00
Leo Franchi 86cb451dcb Render <a> with title and target attributes
(imported from commit 0e195db0a3ff1ebe3d567a1ab6408c4a1bfe1e2d)
2014-01-23 16:28:57 -05:00