Commit Graph

1147 Commits

Author SHA1 Message Date
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
Steve Howell 259f6123e6 Move "Customize avatar" button below "Save changes" on settings page.
The old layout was misleading, because users would make the perfectly
reasonable assumption that their avatar change wouldn't be made until
they hit the Save button.  Moving the avatar stuff below the Save button
makes the UI clear and also unclutters the form for updating name and
password.

(imported from commit 9154ba69a2d61844701c88c2afdf399532ccddd9)
2014-02-03 13:29:28 -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