Commit Graph

4178 Commits

Author SHA1 Message Date
YJDave
c06028159e org setting: Clean code of realm domain modal.
Remove extra lines for reporting alert messages on modal
and add predefined ui_report functions instead.
2017-12-28 15:54:57 -05:00
Cynthia Lin
5df9011ae5 user docs: Apply highlights to documentation indexes. 2017-12-27 15:15:05 -05:00
Cynthia Lin
fa92a35f17 user docs: Highlight currently selected user docs article.
Fixes #7053.
2017-12-27 15:15:05 -05:00
Steve Howell
5dfd7f030a refactor: Clean up add_subscription_marker().
This change has a few cleanups:

    * We early-return on last_msg_container === undefined
      to make the function flatter.
    * We avoid comparing two boolean values for equality,
      which can be a landmine if one of the values is
      `undefined`, which is falsy but not actually `false`.
    * We extract some local variables for readability.
    * We make the conditions for subscribe/unsubscribe
      more explicit.
2017-12-26 09:01:21 -05:00
Steve Howell
f6c41a54b9 Avoid overwriting message.unread for message edits.
This fixes a bug where this used to happen:

    * Alice has not read a message
    * Bob edits the message
    * Alice immediately reads the message
    * Bob's edit arrives to Alice and sets her
      message status back to unread

Essentially, the root cause of the bug is that we update
message.unread for edits, possibly from stale data, even
though Alice has more current info about reading the message.

This is the final fix to that scenario.  There were some
aggravating factors that widened the race window which were
fixed in earlier commits.

Fixes #6248
2017-12-26 09:01:21 -05:00
Steve Howell
58ec5f9695 Use throttle, not debounce, to "read" messages.
We were queuing up individual messages to be flagged as
read on the server before this change, and we used debounce
to avoid sending individual POSTs, but this created delays
that were ripe for race conditions.

Now we batch them in the caller and use throttle instead.
This now prevents us from slamming the server with lots of
individual requests, without as many opportunities for races.

(Note that we still have some possibility of race conditions,
but they should be rare now, and other commits will address
some of the other contributors to read/unread glitches.)
2017-12-26 09:01:21 -05:00
Steve Howell
204949396c refactor: Delete deprecated message.flags attribute.
Once we convert message.flags to more specific boolean attributes
like message.mentioned and message.alerted, we should get rid of
the `flags` attribute, as it will only confuse debugging.
2017-12-26 09:01:21 -05:00
Steve Howell
0a3d769911 local echo: Bypass message.flags array.
We no longer set message.flags in the local echo path.

In the markdown parsing step, we just set message.mentioned
directly.

And then we change `insert_new_messages` to no longer
convert flags to booleans, and move that code to only
happen for incoming server message events.
2017-12-26 09:01:21 -05:00
Steve Howell
4d8d17d134 refactor: Upstream calls to set_message_booleans.
We want to call `set_message_booleans` as soon as we
get data from the server, to avoid confusion about whether
`flags` is the authoritative field.

This commit has callers to `add_message_metadata` call
`set_message_booleans`.

This also sets us up to **not** call `set_message_booleans`
in the local echo codepath, where we can just have the
markdown processor set booleans natively.
2017-12-26 09:01:21 -05:00
Steve Howell
e96b3ffc5a refactor: Remove flags parm in set_message_booleans.
In all cases the value of `flags` we were passing in was
actually `message.flags` (although it was slightly obscured in
one place), so now we just pass in `message`.

(We also move a tiny bit of defensive code to set `flags`
into `set_message_booleans`.)
2017-12-26 09:01:21 -05:00
Steve Howell
7165bb1eea minor: Remove duplicate function names in unread.js.
We no longer use the verbose style of naming functions
that are exported.
2017-12-26 09:01:21 -05:00
Steve Howell
199650d5c7 refactor: Stop using flags array for unread counts.
In the JS code, we now use `message.unread` universally as
the indicator of whether a message is unread, rather than
the `message.flags` array that gets passed down to us
from the server.

In particular, we use the unread flag for filtering when
you search.

A lot of this commit is just removing logic to add/remove
"read" from `message.flags` and updating tests.

We also explicitly set `message.unread` to `false` inside of
`unread.mark_as_read()` and no longer have `unread.set_flag()`.

(Some of the callers to `unread.set_flag` were also calling
`unread.mark_as_read`, which was updating the `message`
object, so now we just have `unread.mark_as_read` update
the `message` object.  And then unread_ops.mark_all_as_read()
was already calling unread.declare_bankruptcy().)
2017-12-26 09:01:21 -05:00
Steve Howell
a1b221730b refactor: Add unread.get_unread_message{_ids}().
This adds two similar functions to simplify
our batch processing of unread messages.

    unread.get_unread_messages
    unread.get_unread_message_ids

They are used to simplify two functions that loop
over messages.  Before this change, the functions
would short circuit the loop to ignore messages
that were already read; now they just use the
helpers before the loop.
2017-12-26 09:01:21 -05:00
Steve Howell
a8cd7655d3 refactor: Inline batched_updater into send_read.
The only remaining caller for batched_updater was send_read,
so this commit inlines it and removes code paths that are
no longer relevant.
2017-12-26 09:01:21 -05:00
Steve Howell
7a362861d0 frontend: Simplify saving collapsed/uncollapsed flags.
We now make direct calls to `send_flags_update` for
seting collapsed/uncollapsed, rather than going through
the `batched_updaters` mechanism.

Also the methods in `message_flags` to set
collapsed/uncollapsed now take a single message.
2017-12-26 09:01:21 -05:00
Steve Howell
d52552dcc3 Simplify/unify starring messages from the frontend.
We now do all of the main logic for starring/unstarring
a message in `message_flags.toggle_starred`:

    * mark the message as read (just in case)
    * update the UI (i.e. the green star in the message)
    * update the server

The calling code in both the click handler and the hotkey
handler remains simple--they just handle minor details like
finding the message and clearing popovers.

For updating the server, we now call the new
`send_flag_update` helper.

And we continue to delegate some of the logic to
`ui.update_starred`, but we remove some code there that's
now pushed up to `message_flags.toggle_starred`.

This change should be mostly transparent to users, but it
does remove some inconsistent behaviors between the click
handler and the hotkey handler.  Before this change, the
click handler was more aggressive about updating the UI
and marking the message as read.  For people using the "*"
key to star/unstar, they probably would only have noticed
different behavior on a slow connection or in an edge
case scenario where only half of the message was onscreen.

More importantly, by simplifying how we talk to the server,
this eliminated up to a one-second lag due to the debounce
logic in the batch_updater code.  The complicated debounce
logic is only really needed for batch-updating "read"
messages, and it was overkill and sluggish for starring
messages.

Last but not least, we add defensive code for the local
echo case.  (Users have to wait till the message gets acked
to star it.)
2017-12-26 09:01:21 -05:00
Steve Howell
d5d11ff181 Disable message menu for locally echoed messages.
Wait until the server acks a message before we enable
the message popover menu.  This prevents a whole class
of bugs related to re-drawing the message and changing
the message id, and it also makes room for a little
spinner in the future.

Users with decent internet connections will generally
get server responses before they can click on the
chevron or hit esc/i, anyway.
2017-12-26 09:01:21 -05:00
Steve Howell
94da59ff81 local echo: Don't show collapse/uncollapse items.
Trying to collapse a locally echoed message is a rare
thing to do, and it was buggy before this due to races
between the server acking the original message and the
user flipping the collapsed flag.

We now calculate `should_display_collapse` and
`should_display_uncollapse` in the JS code and simplify
the template by eliminating all the inline if/else
logic.

(Note that we are about to disable the message menu
altogether for locally echoed messages, so this change
is partly future-proofing for when we put the menu
back for more innocuous commands.)
2017-12-26 09:01:21 -05:00
derAnfaenger
f84a49cee6 bot settings: Fetch embedded bots list from page_params. 2017-12-26 08:50:00 -05:00
Abhijeet Kaur
28b0ebd739 Embedded bots: Add UI for adding embedded bots.
Adds type "embedded bot" to bot creation menu. Lets
users select a bot to run from a list of bots.
Currently, this list is hard-coded into the backend.
2017-12-26 08:50:00 -05:00
Vishnu Ks
c2847669b1 reactions: Implement local echo functionality.
Fixes #4291
2017-12-22 15:15:29 -05:00
Aastha Gupta
560425929e compose: Notify when drafts are saved.
Fixes #7539
2017-12-22 10:51:55 -05:00
Marco Burstein
096088969d compose: Re-open the compose editor after restoring a draft.
Fix #5951.
2017-12-22 08:57:39 -05:00
Brock Whittaker
8ea39d2609 input-pill: Wrap "values" in IIFE.
The function should execute initially and return a function, not
be a function that when executed returns another function. This
fixes an existing bug.
2017-12-20 08:53:27 -05:00
Brock Whittaker
511f2f3db4 input-pill: Add "onPillRemove" callback.
This will now allow a callback to be triggered when a pill is
removed from the set.
2017-12-20 08:53:27 -05:00
Marco Burstein
e9d7161418 compose: Warn users when posting to the #announce stream.
Currently, users are warned when mentioning @all and @everyone, but not
when posting on the #announce stream. Confirm with users that they want
to send their message on #announce if over 60 people are going to be
notified.

Fixes #6928.
2017-12-20 07:36:50 -05:00
snlkapil
1589c597d2 settings: Show local time instead of UTC in invitations tab. 2017-12-20 07:08:46 -05:00
Rishi Gupta
cce8d0d721 invite: Update text of success message.
We should move to a design that doesn't require so many success messages,
since each one carries translation risk (e.g. what if the translation is too
long/overflows, or is not a clear translation, etc.). But doing a quick fix
until then.
2017-12-19 17:46:36 -08:00
Utkarsh Patil
c2441e4455 user settings: Clean settings.css and fix bug
Clean up settings.css and fix js bug in attachments_ui.js
2017-12-18 10:12:33 -05:00
Utkarsh Patil
c9596e12be user settings: fix uploaded files UI
Fix UI and date uploaded
2017-12-18 10:12:33 -05:00
Utkarsh Patil
b3d7a87552 user settings: Change file size display format
Display 1MB for 1000KB and display atleast 2 sig digits from 'KB' onwards
2017-12-18 10:12:33 -05:00
Utkarsh Patil
25f742839d user settings: change 'Date uploaded' display format
Display 'Today' or 'Yesterday' and the date for days beyond those
2017-12-18 10:12:33 -05:00
Shreyansh Dwivedi
5b49259722 compose box:Add a reply button. Fixes #5578 2017-12-15 14:23:24 -05:00
YJDave
99e62f80b9 portico: Enhanced password warning 2017-12-14 07:16:56 -05:00
pradeepgangwar
445ece4a3c Fix 'v' hotkey image searching behavior.
Fixes #7621
2017-12-13 15:14:18 -06:00
Utkarsh Patil
10149b75cc stats: Add per-graph loading indicator
This commit ensures that size of each graph is the same before and
after the data is loaded. It also adds a loading indicator to each
graph until the data is loaded.

Fixes https://github.com/zulip/zulip/issues/6490
2017-12-13 14:44:28 -06:00
Aastha Gupta
1df3e04cd7 bot settings: Clear typeahead when renaming a bot
Fixes #7534
When bot is renamed, the old name persists in mention typehead.
This commit clears the typeahead, whenever bot details are modified.
2017-12-13 14:39:53 -06:00
Brock Whittaker
20f3b0f599 popovers: Apply email overflow changes to ".message-info-popover".
This applies the same overflow changes to “.message-info-popover” by
imposing a max width on the popover (so it doesn’t increase in width
when it gets larger) and adding the tooltip on hover.
2017-12-13 14:20:18 -06:00
cPhost
97c3d5fce3 user profiles: add tooltip for too long email. 2017-12-13 14:20:18 -06:00
YJDave
ffe3776b5f create stream: Show current user on top of "People to add" list
Fixes #7475
2017-12-13 14:16:07 -06:00
Weronika Grzybowska
b54f78968f markdown: Add automatic numbering of ordered lists.
Adds a markdown preprocessor that finds ordered lists where all items
use the same number and change them to be in normal increasing order,
starting with that number.

Fixes #5159.
2017-12-12 18:35:38 -06:00
Rhea Parekh
dd1b14378b Streams: Disallow certain markdown characters in stream names. 2017-12-12 10:04:31 -06:00
ryan
08b39672c2 invitations: remove reformatting on error
This removes email input reformatting when invites are not sent.

Fixes #7581.
2017-12-12 09:58:34 -06:00
Utkarsh Patil
1093d88fa0 hotkey.js: Navigate using page up / page down
Using page up / page down, go to the top / bottom of compose textarea

Fixes https://github.com/zulip/zulip/issues/7097
2017-12-12 09:55:50 -06:00
Greg Price
ac7d086085 sidebar: Revert to narrowing to whole stream.
This reverts commit eb2bdb706 "sidebar: Narrow to latest topic if
not in stream."  On a trial deploy, many users were surprised and
preferred the old behavior.
2017-12-11 16:35:12 -08:00
Brock Whittaker
2252d7e5f6 Revert "dark-mode: Add "T" hotkey for dark mode theme."
This reverts commit ce62abce73.

Fixes #7678.
2017-12-11 15:59:02 -06:00
Cynthia Lin
db55fd8e48 Revert "Make dark theme toggle only run in dev mode."
This reverts commit 59870b2203.
2017-12-11 15:59:02 -06:00
Akash Nimare
54affeac02 desktop: Update desktop app to v1.7.0.
Update desktop app to latest stable release.
2017-12-11 11:14:38 -06:00
Steve Howell
36ade63d84 compose: Fix bug in undo operation
This fixes compose.test_video_link_compose_clicked to just
use a stub for compose_ui.insert_syntax_and_focus.

It also adds direct tests for compose_ui.insert_syntax_and_focus.

Fixes #6362
2017-12-10 04:10:18 -08:00
Rohitt Vashishtha
eb2bdb706a sidebar: Narrow to latest topic if not in stream.
We now narrow to the latest topic in stream if we are narrowing from
outside the stream, and show all topics grouped together (previous
default) if we are already narrowed to the stream.

Fixes #7555.
2017-12-08 05:53:49 -08:00