Commit Graph

3279 Commits

Author SHA1 Message Date
Cynthia Lin 1dfac12c4b hotkeys: Add arrow key navigation in streams/subscriptions menu.
Fixes #4198.
2017-03-21 20:32:28 -07:00
Eeshan Garg b8f71c5d24 Document how to set up an Asana integration via Zapier.
Fixes #3948.
2017-03-21 19:56:47 -07:00
Steve Howell bd04ea02d3 Use new JS data layer for typing notifications.
The old code may have had some subtle bugs related to sorting of
ids or stringification or failed Dict lookups.  The new data
layer should be more robust.  We had some tracebacks recently
from the old code, and they should go away now.
2017-03-21 17:24:40 -07:00
Steve Howell 67a2094ed1 Add typing_data.js, which can track users who are typing.
(A subsequent commit will actually integrate this into the app.)
2017-03-21 17:24:40 -07:00
Tim Abbott 8b9e78e486 compose: Extract and test get_focus_area. 2017-03-21 17:24:40 -07:00
Tim Abbott 82ec083066 compose: Fix new topic button behavior in home view. 2017-03-21 17:24:40 -07:00
Yago González 34a9e1ae11 markdown: Add TeX typesetting support.
Co-authored-by: Reid Barton <rwbarton@gmail.com>

Fixes #2056.
2017-03-21 16:40:00 -07:00
Ayush Jain bddcfb1c96 Add realm-level settings to control inline image and url preview.
This gives users more control in case they don't want previews,
especially for the "previews of linked websites" feature.

Fixes: #2640.
2017-03-21 15:46:17 -07:00
Brock Whittaker a27f8f2f30 Fix up YouTube embed issues and styling.
This fixes the styling to stay on the screen of most reasonably sized
monitors along with extending the JavaScript code to allow for the
video to be keyed to in the lightbox.
2017-03-21 14:28:13 -07:00
Brock Whittaker 1b31f9be38 Move lightbox events to lightbox.js from clickhandlers.js.
This consolidates lightbox logic to lightbox.js.
2017-03-21 14:28:13 -07:00
Brock Whittaker 920b082e08 Fix animation speed bug with > going at a different pace than text.
The issue is that stacking the two transitions appears to make the
::after pseudo-element slower for some reason than its parent. This
visually appears to fix it.
2017-03-21 14:10:27 -07:00
Yago González 0c6251e58d docs: Add reference to tilde-fenced code blocks. 2017-03-21 13:58:40 -07:00
Brock Whittaker 5e0a906f84 Fixes for /integrations/ page.
This fixes the hubot text that still stays when you transition to
integration details along with fixing the first animation that is
choppy and previews briefly before fading in.

Fixes #4210.
2017-03-21 13:55:59 -07:00
adnrs96 257187a239 Clean zulip.css to use 4 space indents. 2017-03-21 13:40:05 -07:00
adnrs96 a91012bd70 Move thirdparty-fonts.css from static/styles to static/third. 2017-03-21 13:40:05 -07:00
Steve Howell c87c67c33f js deps: Fix ui.report_success(). 2017-03-21 07:39:30 -07:00
K.Kanakhin 831a467fa3 upload-widget: Correct file input clearing.
Replacing file input doesn't work for value clearing. The best
way is to clean value directly, which excludes accidentally adding
wrong file after upload-widget validation error.
2017-03-21 00:59:17 -07:00
Tim Abbott ee2e6a31b1 reactions: Close popover on escape even with input focused.
This makes it much more convenient to close the emoji reactions
popover after opening it with the hotkeys.

It'd be great if we had a test suite for escape so that we could add
tests for this.

Fixes part of #4197.
2017-03-20 23:51:45 -07:00
Tim Abbott cebaf140c6 subs: Fix stream descriptions rendering on creation.
This is kinda hacky and probably not how we want this to work
long-term, but I think it's a larger refactoring project to make this
part of the model make sense.
2017-03-20 23:25:43 -07:00
Tim Abbott a903d28d78 subs: fix missing ; introduced by rebase error. 2017-03-20 23:19:14 -07:00
Brock Whittaker d89ea13358 portico: Redesign apps page. 2017-03-20 23:08:24 -07:00
Brock Whittaker 4b64ff3752 Change from checking landing page by href to pathname.
Checking by href is a flawed approach due to the fact that hashes
are included in the href and will throw off the results of
returning the last block in a path. The window.location.pathname
property is a much better indicator of the current path.
2017-03-20 23:08:24 -07:00
Raghav Jajodia 2d4ba0fde5 stream_data: Linkify URL in stream description.
If a url is present in stream description, it will be
rendered as a clickable link under /streams page.

Tweaked by tabbott to use the separate rendered_description element to
avoid duplicate rendering and to live-update.

Fixes #1435.
2017-03-20 22:25:03 -07:00
Jeremy Philemon d13901c22b Changed "Choose a user" to "Click on a user to log in".
- Set the width of .login-page-header to 100% to make it responsive on
smaller screens. Previously, the header went off screen for screen
widths <360 px.

Tweaked by tabbott to remove unnecessary translation tags.

Fixes #4106.
2017-03-20 21:55:11 -07:00
Yago González 156b204015 echo: Remove impossible 'quote' 4-space-indented code block type.
Since it's not possible to manually set the language in 4-space-indented
code blocks, there's no point in checking if these blocks' type is
"quote".
2017-03-20 21:49:22 -07:00
Brock Whittaker 6115ef3427 Disable web sockets for mobile devices.
iOS doesn’t seem to play nice with the web socket library we are using
them, so disable use of websockets for sending messages until we can
fix that.

Fixes #2306.
2017-03-20 21:44:23 -07:00
Mahim Goyal 91252b3909 Fix alignment in actions drop-down menu.
Fixes: #3010.
2017-03-20 21:21:53 -07:00
Steve Howell 7bc2df6a91 Put popular emojis in top row of reactions. 2017-03-20 20:23:32 -07:00
Steve Howell 2296bf5859 Clean up rendering code for reaction popovers.
Instead of passing in a hash to template whose keys are a
mixture of records and strings, we now pass in an
array of records.  This also removes a spurious if condition
in the template that was a result of the janky data structure.
2017-03-20 20:23:32 -07:00
tejaskasetty 02bd5bedce Fix duplicate emoji entries in compose emoji picker.
We were incorrectly appending all the emoji into the emoji picker
every time it was opened, rather than just once.

Note by tabbott: Arguably this isn't the right fix, in that it might
be better to just render the emoji picker once at the beginning.  But
this definitely fixes the bug.

Fixes #3952.
2017-03-20 10:46:20 -07:00
Steve Howell 29412cd06b bug fix: Fix missing return statement in get_filter_li().
This was regressed in 89e17e1aee.

At least one of the symptoms was that we weren't updating the
activity list properly.  This could also cause tracebacks in
compose fade logic.
2017-03-20 09:49:19 -07:00
Tim Abbott b701062d16 Update + hotkey to use the keypress mechanism.
This fixes in issue where the new + hotkey only worked if you hit
shift+=, not if you pressed an actual "+" key on the keyboard.

Fixes #4182.
2017-03-20 09:46:26 -07:00
Jeremy Philemon 2d0ee8a83f Information modals are now responsive on smaller screens.
- Added a media query for `max-width: 768px` where the changes in the
css will take place.
- This fix also makes the navigation menu responsive.

Tweaked by tabbott to better contain the CSS to this module.

Fixes #4022.
2017-03-19 23:00:40 -07:00
Brock Whittaker 2775707a67 hotkeys: Add lightbox image feed with controls.
This adds an image feed that you can scroll through with hotkeys
in the lightbox.

The left and right arrow keys along with the left and right arrows
will go to the prev/next image, and clicking on an image will also
take a user to that image.
2017-03-19 22:11:38 -07:00
Brock Whittaker fa5a093738 hotkeys: Add keyboard shortcut for opening the gear menu.
This adds the shortcut “g” for opening the gear menu.
2017-03-19 22:08:21 -07:00
Brock Whittaker 2c28e519d8 Fix un-tab-able links in gear menu.
This fixes some un-tab-able links in the gear menu to have a tabindex
so that they can be tabbed over with shortcuts.
2017-03-19 22:06:27 -07:00
Steve Howell fd856d728c Extract message_util.js 2017-03-19 21:03:45 -07:00
Steve Howell 8d3d70984d Extract message_events.js. 2017-03-19 21:03:45 -07:00
Steve Howell 1114c8bf62 Extract message_fetch.js. 2017-03-19 21:03:45 -07:00
wangjames e0813c7288 collapse: Fix new messages not being collapsed consistently.
This fixes a bug where newly received very-long messages would only
sometimes be collapsed properly until a second message arrived
(whether it did the right thing dependened on whether the new message
had the same recipient or a different recipient from other arriving
messages).

Apparently, we correctly called condense.condense_and_collapse in all
but one of the codepaths of `render` that add new messages.  This
adds a call on the missing codepath.

Fixes #3978.
2017-03-19 20:39:21 -07:00
Joshua Pan 5ec21e2230 hotkey.js: Add opening reactions hotkey.
Add frontend tests for ":" hotkey.

Fixes #3911.
2017-03-19 14:37:05 -07:00
Joshua Pan b600e4d594 Pressing enter in reactions search picks first reaction. 2017-03-19 14:36:34 -07:00
Joshua Pan 9c3d63a80b Add '+' hotkey to add thumbs up reaction.
Fixes #3910.
2017-03-19 14:36:33 -07:00
Joshua Pan c8f2da3f3e reactions.js: Refactor reaction_popover_reaction_on_click. 2017-03-19 14:25:10 -07:00
wangjames 12eeb27442 js dependencies: Extract ui_state.js.
The function home_tab_obscured used to be in the ui_state
namespace via a shim, but now we have an actual module for
it.
2017-03-19 14:11:50 -07:00
Sarah Stringer aa880b0419 Add organization description field to realm settings.
This adds an organization description field to the Realm model, as well as
an input field to the organization settings template. Added three tests.
Set the max length of the field to 100 characters.

Fixes #3962.
2017-03-19 14:05:01 -07:00
Daw-Ran Liou 81f9de7cc8 Add "*" hotkey to toggle starred flag on the selected message. 2017-03-19 13:42:11 -07:00
Brock Whittaker 24e2f31d3d Remove second background from #lighbox_overlay.
The child ".image-preview" has a background which is ordinarily
invisible (as it is the same color as the #lightbox_overlay bg,
however when fading in it is noticeable.
2017-03-19 12:43:10 -07:00
Joshua Pan c053f786f7 Add ctrl+[ hotkey.
Fixes #4016.
2017-03-19 12:17:28 -07:00
Joshua Pan fcbc2e0cb9 Add ctrl key functionality to hotkeys. 2017-03-19 12:17:28 -07:00
Daw-Ran Liou f67751d1f0 Add hotkey "l" for opening image in lightbox.
Open the lightbox in the current selected message. Only the first image
shows in the lightbox.
2017-03-19 11:43:21 -07:00
Tim Abbott e9f1531fc7 hotkey: Remap v hotkey -> P. 2017-03-19 11:41:02 -07:00
Steve Howell eda046409c Move paging methods into navigate.js. 2017-03-19 11:05:46 -07:00
Steve Howell d026344b37 Extract js/ui_util.js. 2017-03-19 11:05:45 -07:00
Steve Howell 099f401b9b Move mark_subscribed/mark_unsubscribed to stream_events.js. 2017-03-19 11:05:45 -07:00
Steve Howell b98cd55ddb Add ui_report shim. 2017-03-19 11:05:44 -07:00
Steve Howell c67aebf633 Move keep_pointer_in_view() to message_viewport.js. 2017-03-19 10:56:09 -07:00
Steve Howell 1d7d6869c9 Extract stream_events.js 2017-03-19 10:56:09 -07:00
Steve Howell cfd1e8cbc3 Extract stream_muting.js. 2017-03-19 10:56:09 -07:00
Steve Howell 5b2407bb22 Add ui_state.home_tab_obscured() shim. 2017-03-19 10:56:09 -07:00
Steve Howell ab34b5ee9f Extract ui_init.js. 2017-03-19 10:56:09 -07:00
Steve Howell 203ced0ee6 minor: Rename var in filter_emojis(). 2017-03-19 06:25:10 -07:00
Cynthia Lin 8241f7b40b user docs: Update *Format your message using markdown* with Pygments.
Fixes #4081
2017-03-18 20:48:01 -07:00
Rishi Gupta 19d8d16126 js dependencies: Split hash_util.js from hashchange.js. 2017-03-18 20:40:34 -07:00
Jonathan Pan ceffe2128d activity: Clear search box after clicking a user in right sidebar.
Fixes #4105.
2017-03-18 16:15:14 -07:00
Steve Howell 16a37754cf Add recipient() and composing() shims. 2017-03-18 15:52:50 -07:00
Steve Howell 27f37e6378 Add hash_util.encodeHashComponent() shim. 2017-03-18 15:52:50 -07:00
Steve Howell d75efa19db Add compose_state.has_message_content() shim. 2017-03-18 15:52:50 -07:00
Steve Howell 59fd9e4d48 Add compose_actions.cancel() shim. 2017-03-18 15:52:50 -07:00
Steve Howell faa9446e64 Add compose_actions.start() shim. 2017-03-18 15:52:50 -07:00
Steve Howell 35d38d62f3 Add shim.js w/narrow_state global. 2017-03-18 15:52:50 -07:00
Luke W Faraone 68e7a8a824 Show stream properties on subscription in Zephyr.
On realms with ``should_list_all_streams() == False``, previously, we
would subscribe a user to a stream, but also incorrectly show the stream
creation dialog.

Instead, we act as if the stream was newly created.
2017-03-18 15:51:27 -07:00
Jeremy Philemon 9e47ec2270 Made the development environment login page nicer.
- The buttons now have a flat look (dropped the border-radius) with a
white background color.
- The font colors now match the darker green shade of the navbar.
- The border-colors match the lighter green shade of the navbar.
- Green is used for all the normal user buttons, while the admin
buttons are a nice blue.
- I’ve `git grep`d to confirm that changes in .btn-direct only affect
the buttons on login.html

Fixes part of #4106.
2017-03-18 14:31:19 -07:00
Tim Abbott f67e9a7e5e CSS: Rename #overlay to #lightbox_overlay. 2017-03-18 13:54:11 -07:00
Tim Abbott ed90879602 js: Extract lightbox.js from ui.js. 2017-03-18 13:54:11 -07:00
Steve Howell a51caceea5 refactor: Extract unread_ops.js
This module mostly contains the mark_* functions that
update the server with info about unread counts.
2017-03-18 10:35:52 -07:00
Steve Howell 0c6fefba71 Move get_cleaned_pm_recipients() to helper module.
This break's typeahead_helper's dependency on
composebox_typeahead.
2017-03-18 10:35:52 -07:00
Steve Howell 7f43c0504b refactor: Rename fields for split_by_subscribers().
The old name 'subs' was confusing our tooling, since we have
a module called subs.js.
2017-03-18 10:35:52 -07:00
Steve Howell 7b1bfd6703 Break typeahead_helper's dependency on compose.js.
We now have typeahead_helper's callers pass in compose.stream()
when it's needed for sorting purposes.
2017-03-18 10:35:52 -07:00
Steve Howell 166f149ef9 refactor: Add current_stream parameter to functions.
This change makes our dependency on compose.stream_name() happen
in sort_recipients, so we compute it only once, and we can
more easily break the circular dependency.
2017-03-18 10:35:52 -07:00
Jeremy Philemon f6d01c8232 CSS: Make registration form responsive on <495px screen width. 2017-03-18 08:15:28 -07:00
adnrs96 d172ea66c6 Clean pygments.css to use 4 space indents. 2017-03-18 08:06:19 -07:00
adnrs96 99616221db Clean portico.css to use 4 space indents. 2017-03-18 07:58:10 -07:00
adnrs96 134e8971aa Clean settings.css to use 4 space indents. 2017-03-18 07:58:10 -07:00
adnrs96 d78495a328 Clean left-sidebar.css to use 4 space indents. 2017-03-18 07:56:08 -07:00
Raghav Jajodia 668d9cc6ca server_events: update admin bots on deactivate under settings tab.
Deactivating a bot in the /#settings/your-bots page update
the /#administration version to show a reactivate button.
2017-03-17 21:11:42 -07:00
Raghav Jajodia 89a83f6a5d admin.js: Refactor code to change view on bot deactivate/reactivate.
This also fixes the error associated with view on toggle deactivation.
Now, on deactivating a bot, the bot-name and bot-email should strike-out.
And on reactivating a bot, the bot-name and bot-email should remove strike-out.
Toggle edit button on bot activation/deactivation.
Fixes #3413.
2017-03-17 21:11:42 -07:00
Arpith Siromoney e073220e21 Add typing notifications front end.
Send typing notification events when user types in the compose box.
Listen for these events and display a notification.

Sending notifications: Notifications are throttled, so that start
notifications are sent every 10 seconds of active typing, and stop
notifications are sent 5 seconds after active typing stops or when the
compose box is closed.

Displaying notifications:
When a typing notification is received, if the current narrow is private
messages or is: pm-with and the user is not the sender,
"Othello is typing..." is displayed underneath the last message. This notification is
removed after 15 seconds. If another notification is received during this period, the
expiration is extended. When a stop notification is received the notification is removed.

Internally, a list of users currently typing is maintained for each
conversation (in a dict). When an event is received the list (for the appropriate
conversation) is updated and the notifications template is re-rendered
based on the narrow information. This template is also re-rendered when
the narrow changes.

Significantly modified by tabbott for clarity.

Fixes #150.
2017-03-17 20:45:07 -07:00
Tim Abbott 8efe4d530d js: check_stream_existence to subs.js.
We want to remove this, but in the meantime, this is a more coherent
place for htis to live than compose.js.
2017-03-17 15:16:11 -07:00
Tim Abbott af5852a55b subs: Eliminate confusing use of settings local.
The name was never good, and was suggestive of the settings module.
2017-03-17 15:07:49 -07:00
Amala Deshmukh e1624fae0b settings: Explain that users can spell their name how they like.
Fixes #2944.
2017-03-17 14:53:20 -07:00
Tim Abbott 871adc01e3 signup: Fix broken password strength checking.
We don't support using the i18n libraries in our portico.

This was broken in 7a6d001592.
2017-03-17 14:11:44 -07:00
Yago González 5516c97a02 frontend: Fix translation string. 2017-03-17 13:42:10 -07:00
Akash Kothawale 9e45f32275 gogs: Add webhook integration.
- Add push, create and pull request event.
- Handle 'opened', 'closed' and 'merged' in 'pull request' event.
- Include tests for all the above events including 'push' with commits
  more than limits.
2017-03-17 12:22:06 -07:00
Steve Howell acef337c28 bug fix: Fix update-one-user regression in compose fading.
We now correctly pass the list item for a user to the function
compose_fade.update_one_row().

This regression started happening in the recent commit of
eece725073.  Before that commit,
compose-fade was broken in a different way.

Testing this fix requires creating a stream and opening the compose
box in one window.  Then, in the other window, have a user not
subscribed to the stream log on for the first time.  Be careful
to make sure you flip back to the other browser tab quickly, and
you should see the new user grayed out.  (You can get a false
positive if you wait too long, because the periodic update was
correctly fading before this fix.)
2017-03-17 12:16:48 -07:00
Steve Howell 89e17e1aee refactor: Extract activity.get_user_list_item(). 2017-03-17 12:16:48 -07:00
adnrs96 ae200cbaba Clean subscriptions.css to use 4 space indents. 2017-03-17 11:00:44 -07:00
adnrs96 be405200d0 Clean right-sidebar.css to use 4 space indents. 2017-03-17 11:00:44 -07:00
adnrs96 c67eb54d05 Clean media.css to use 4 space indents. 2017-03-17 11:00:44 -07:00
adnrs96 a53114a49a Clean compose.css to use 4 space indents. 2017-03-17 17:07:55 +05:30
Brock Whittaker d17a3531b3 Fix ui.home_tab_obscured call to not block scroll events.
This fixes the a call being made in ui.js that prevents all scroll
events from occurring while a modal is displayed.

This used to be necessary back in 2012 as modals didn't require
scrolling and would affect background scrolling, however it isn't
required anymore.
2017-03-16 14:23:34 -07:00
Steve Howell eece725073 compose fade: Limit user-fade to .user-sidebar-entry.
Our JS/CSS now only uses the user-fade class for elements
that have the user-sidebar-entry class.  This should prevent
bugs related to having doubly opaque elements.
2017-03-16 14:06:40 -07:00
Steve Howell 19729b83f4 compose fade: Introduce message-fade/user-fade CSS classes.
We now have specific HTML/CSS classes for message fading and
user fading.  They currently both have the same effect, changing
opacity, but we can now more easily treat them differently.

This change also removes "faded" attributes in compose-fade,
which avoids some confusion related to landing pages having
a "faded" class as well.
2017-03-16 14:06:40 -07:00
Steve Howell cfba72e59c compose fade: Remove obsolete "unfaded" class.
We don't have any CSS for "unfaded," so setting the class in JS
just slows down the app.
2017-03-16 14:06:40 -07:00
Steve Howell 11e52f5e91 compose fade: Simplify selector for unfading.
We don't set "faded" for ".message_row", so there is no need
to remove the HTML class.
2017-03-16 14:06:40 -07:00
Philip Skomorokhov 8c52a94692 edit: Remove More/Collapse when in message edit/view source mode.
This entails displaying it when the editing mode ends.

Fixes #3871.
2017-03-16 11:30:49 -07:00
zerocod3r 81989b965e Add titles to various message actions elements.
Fixes #4038.
2017-03-16 10:45:05 -07:00
Brock Whittaker 966e161fb2 Fix ui.home_tab_obscured to detect modals open.
All open modals now should have the selector ".overlay.show",
so checking if a modal is open is as simple as checking the length
of the selection ".overlay.show".

Fixes #3655.
2017-03-15 15:45:10 -07:00
Tim Abbott 04195e0be6 modals: Add blueslip error reporting for invalid modal.
This should help if we screw up adding an additional modal in the future.
2017-03-15 12:35:23 -07:00
Brock Whittaker 3bc2ed6dc9 Switch "invite users" to new component overlay.
Fixes #4036.
2017-03-15 12:29:09 -07:00
Brock Whittaker 6ddf3abe40 Fix pointer events in #settings overlay form sidebar.
The pointer events for the sidebar were incorrect in the way they
were set such that when the sidebar was off to the right and
hidden it would still attract pointer events.
2017-03-15 12:28:49 -07:00
Brock Whittaker b0e5aeb313 Consolidate JavaScript modal closing in modals.js.
This consolidates all actions to close modals into modals.js and
triggers the correct cleaning/collapsing function dependent on what the
data-overlay attribute is labeled as.

It also ensures these all have an e.stopPropagation().

Fixes #4029.
2017-03-15 12:27:44 -07:00
Brock Whittaker 8ef20a0ed2 Remove meta.focusing boolean.
This was supposed to prevent unwanted modal closes but due to the new
mechanics of modals, it’s better to not prevent the first click.
2017-03-15 12:17:27 -07:00
Brock Whittaker 2e30cef8e9 Change "hashchange.exit_settings" to "hashchange.exit_modal".
Change the name of the hashignore and replace mechanism from
exit_settings to exit_modals since it is now used for more than just
the settings.
2017-03-15 12:17:27 -07:00
Brock Whittaker 075b7cd630 Switch "streams" to new component overlay. 2017-03-15 12:17:27 -07:00
Brock Whittaker b1839268cd Switch "settings" to new component overlay. 2017-03-15 12:17:27 -07:00
Brock Whittaker 21525ee4db Switch "informational overlays" to new component overlay. 2017-03-15 12:17:27 -07:00
Brock Whittaker 8419eedcbd Switch "lightbox" to new component overlay. 2017-03-15 12:17:27 -07:00
Brock Whittaker 81b2114d8c Switch "drafts" to new component overlay. 2017-03-15 12:17:27 -07:00
Brock Whittaker c324cdf6cb Add component overlay classes.
These are the classes that should apply to all overlays and replace
their current functions.
2017-03-15 12:17:27 -07:00
aakash-cr7 f44caaf36e Focus on the close button when viewing the edit message history.
Fixes #4035.
2017-03-15 11:43:50 -07:00
Cynthia Lin f47d7b7290 user docs: Update docs to replace *Custom alert words* with *Alert words*.
Fixes #4066
2017-03-15 11:25:37 -07:00
Cynthia Lin 589551b6ee settings: Change "Custom alert words" to "Alert words". 2017-03-15 11:25:37 -07:00
Brock Whittaker c155577246 Allow users to resize the message compose box.
This allows for users to resize the message compose box without it
collapsing back down to jQuery autosize’s preferred height.

When you hide the compose box and then re-show it, it keeps the
previous height but reactivates the jQuery module.

Fixes: #2236.
2017-03-14 17:40:21 -07:00
Rishi Gupta ddd0b854f9 Remove references to page_params.domain.
Continuation of 098797c, which removed the page_params.domain field.
2017-03-14 17:17:42 -07:00
Steve Howell b648c06009 hotkeys/refactor: Extract tab key handlers.
This extracts process_tab_key() and process_shift_tab_key().
It also removes some dead code related to alert words tabbing.
2017-03-14 16:42:40 -07:00
Steve Howell bdbaa5d386 hotkeys: Simplify navigation checks for page up/down.
We remove an unnecessary conditional that always returned true
due to checks that happen earlier in the function.
2017-03-14 16:42:40 -07:00
Steve Howell 2a3e74427b Export hotkey.tab_up_down() for testing. 2017-03-14 16:42:40 -07:00
Abhishek Bhattacharya 8a408a6cbc popovers: Fix actions popover menu positioning.
The main issue is that it wasn't doing the correct comparison; the old
logic that subtracted the viewport.scrollTop() was incorrect for how
our popovers seem to work.

Partially fixes #3741.
2017-03-14 15:37:37 -07:00
Philip Skomorokhov e3fa42f833 edit: Hide emoji reactions when in message edit or view source mode.
This also entails displaying them when the editing mode ends.

Fixes #3870.
2017-03-14 14:55:16 -07:00
Brock Whittaker 11c7bb49d4 Restyle "invite" modal.
This restyles the invite modal to have the same header as the rest of
the overlays.
2017-03-14 14:47:12 -07:00
Brock Whittaker 4c4208ac86 Make all modal exit "x" sizes uniform.
This makes all exit “x”’s uniformly 1.5rem in size and font-weight: 600.
2017-03-14 14:47:12 -07:00
Raghav Jajodia b0e2c4ffee settings: refactor code to hide "Email Change" button.
Previously, the code to hide "Change email" button on page load when
email changes are disabled was present in settings.js using jquery to
hide the button. Now, the show/hide is handled in the account-settings handlebars.
2017-03-14 14:43:35 -07:00
Raghav Jajodia ef7e15ee00 admin: Add realm option to prevent users from changing their name.
A realm option to prevent users from changing their name is added.
Fixes #3950.
2017-03-14 14:10:08 -07:00
Steve Howell 1e5ec689b7 tools/css: Trim whitespace around CSS values. 2017-03-14 09:29:56 -07:00
Steve Howell 2ffea94bd8 tools/css: Require semicolons after CSS declarations. 2017-03-14 09:29:56 -07:00
Tim Abbott a1d7e1b5f6 css: Tweak padding around code blocks to look nicer.
It makes sense to a bit tighter padding around code blocks in a chat context.
2017-03-13 22:35:00 -07:00
Brock Whittaker a9db9eb389 css: Improve code block styling.
Change pygments for prettier syntax highlighting with white
backgrounds for both inline and multi-line code blocks.
2017-03-13 22:34:11 -07:00
Steve Howell a1b5f91c1a hotkeys: Remove wasteful resize calls for keydown events.
This fix prevents us from calling the resize library for nearly
every single keydown event in the app (ouch!).  Realistically,
this performance improvement only impacts folks who turned on
the autoscroll_forever feature, but it should be a significant
speed-up for them.  We should go further with this fix, but the
main damage is undone.
2017-03-13 21:38:23 -07:00
Steve Howell c88c69db2e bug fixes: Clean up hotkey mappings.
We simplify hotkey mappings by using different hashes for
keydown and keypress events.  There are browser bugs (iOS, for
example) where keypress events have the wrong keyCode values.
This led us, under iOS, to interpret "!" as "page up."

This fix also helps us disinguish escape from shift-escape.

Brock Whittaker helped on figuring out the keypress/keydown
issues that are addressed in this commit.

Fixes #4019
2017-03-13 21:38:23 -07:00
Brock Whittaker dfa965717f Fix drafts responsiveness issues.
The drafts container was too skinny on mobiles, so the enforced
max-width of 60% should be ignored in favor of expanding to 90%
of the screen width.

This also fixes an issue where the content does not reach the bottom
of the container due to having too short of a height.

Fixes: #3867.
2017-03-13 21:15:56 -07:00
Steve Howell b99c190380 Extract hotkeys.process_enter_key(). 2017-03-13 15:09:53 -07:00
Steve Howell cfcad48e46 bug fix: Blur message edit textboxes when hitting escape.
We have a somewhat janky mechanism for rendering message edits,
and before this fix, we were not unblurring the text boxes when
we closed the message editing session with the escape key, which
made it so that the escape key was unusable.
2017-03-13 15:09:53 -07:00
Steve Howell f9d26856e8 hotkeys: Remove typeahead logic for escape keys.
We had some ancient logic for typeaheads that was supposed to be
Firefox-specific, but I can't reproduce the code even running under
Firefox, and even if it did, it was returning true instead of false
for a long time, so I suspect the code has been wrong/irrelevant for
a long time.
2017-03-13 15:09:53 -07:00
Steve Howell 55ade83ac2 Extract hotkey.process_escape_key(). 2017-03-13 15:09:53 -07:00
Steve Howell 87a7313143 refactor: Extract compose.reply_with_mention(). 2017-03-13 15:09:53 -07:00
Steve Howell 0979aad226 refactor: Export hotkey.processing_text() for tests. 2017-03-13 15:09:53 -07:00
Steve Howell 1df2dfc6e0 hotkeys refactor: Flip conditional related to popovers.
When checking for hotkeys related to popovers, we avoid making
the external call for keys that won't be important for popovers.
This mostly helps testing.
2017-03-13 15:09:53 -07:00
Steve Howell b1ef7b2e53 Extract hotkey.is_editing_stream_name(). 2017-03-13 15:09:53 -07:00
Steve Howell 1d6e3124c1 Export hotkey.is_settings_page() for testing. 2017-03-13 15:09:53 -07:00
Steve Howell db3883fc51 hotkeys: Refactor backspace/shift-tab sections.
Only check to see if the compose send button is in focus if
we dealing with backspace/shift_tab.  As the comment notes here,
these sections of code are somewhat dubious.
2017-03-13 15:09:53 -07:00
Steve Howell 20f26c40e1 Export process_hotkey() for testing. 2017-03-13 15:09:53 -07:00
Cynthia Lin 1f2eddad8b user docs: Add user guide for *View a message's edit history* feature.
Fixes #3730
2017-03-13 15:03:35 -07:00
Rishi Gupta 9df26a296f composebox_typeahead.js: Remove unnecessary special case for zulip.com.
This was originally introduced in
025b79d98b, which is far back in ancient
history when compose had a different shape (predates enter-sends,
too), and regardless, this code never affected anything but zulip.com.
2017-03-13 14:36:34 -07:00
Tim Abbott 5e39ccd642 js: Rename viewport.js to message_viewport.js.
This fixes the mobile web experience for Chrome on iOS.

Apparently, Chrome-on-iOS silently has a `viewport` module that
overrides and user-defined module by that name, causing all of our
code that accesses the viewport module to not work on that platform.
We fix this by renaming it.
2017-03-10 14:59:59 -08:00
adnrs96 43b19a6997 Clean user_presence_row.handlebars to use 4 space indents. 2017-03-10 11:07:49 -08:00
adnrs96 ccec320f1d Clean stream_sidebar_actions.handlebars to use 4 space indents. 2017-03-10 11:07:49 -08:00
adnrs96 ebf3eaf9ae Clean stream_member_list_entry.handlebars to use 4 space indents. 2017-03-10 11:07:49 -08:00
adnrs96 d9a0fcc931 Clean tutorial_message.handlebars to use 4 space indents. 2017-03-10 11:07:49 -08:00
adnrs96 e08d28bd0f Clean email_address_hint.handlebars to use 4 space indents. 2017-03-10 11:07:49 -08:00
adnrs96 11418ed9c8 Clean draft_table_body.handlebars to use 4 space indents. 2017-03-10 11:07:49 -08:00
adnrs96 bf577297c7 Clean tab_bar.handlebars to use 4 space indents. 2017-03-10 11:07:49 -08:00
Harshit Bansal c6681917c1 settings: Add UI to allow a user to reactivate his own bots.
Using this UI, a user can now reactivate the bots owned by him.
Until now if a bot was deactivated, there was no way to use the
old bot's original email address. But now they can be reactivated
and their email can be reused.

Fixes: #1183.
2017-03-10 10:59:49 -08:00
Harshit Bansal 0dbca4a3c3 settings: Display all the bots owned by an user.
Add UI to display all the bots owned by an user whether active
or inactive in "Your Bots" section.
2017-03-10 10:59:49 -08:00
Harshit Bansal 876d7bbcdc settings: Rename `bots_list` to `active_bots_list`. 2017-03-10 10:59:49 -08:00
Tim Abbott 900891b072 settings: Rename settings-status to account-settings-status. 2017-03-10 10:53:06 -08:00
Raghav Jajodia 05f0d1953b account-settings: Removed 'Updated settings' message from admin.
The 'Updated Settings' message we get at the bottom
of admin-page when we change the name is removed.
Fixes #3815.
2017-03-10 10:53:06 -08:00
Kanak Garg 5023b69ca5 stream settings: Add "View Stream" button.
This adds a button to #subsciption page called "View Stream"
that narrows the user to that particular stream.

This fix involves typical changes to JS/CSS to add new features,
and we also add a "preview_url" field to the sub object in
stream_data.js.

Fixes #3878
2017-03-10 08:26:57 -08:00
Raghav Jajodia c17e574211 Remove product_name setting and return to harcoding 'Zulip'.
This removes some confusion in grep for frontend strings with Zulip in
them and also cleans up the code in some places.

Fixes #1602.
2017-03-09 21:48:15 -08:00
Amy Liu e5ab3123af Migrate json/set_muted_topics to muting/topics. 2017-03-09 20:52:29 -08:00
Raghav Jajodia 7f5abcef9c subs: Modify css to fix stream description cut off.
Fixes the cut off of Stream descriptions at the bottom of
subscriptions page if they have `g`s in them.
Fixes #3277.
2017-03-09 20:03:35 -08:00
Tim Abbott ce826e82c5 reactions: Fix click handler for reactions button.
This was broken when we fixed the click target for the other reactions
button place.
2017-03-09 12:18:17 -08:00
Raghav Jajodia 217b8f2a85 hotkeys: escape key press dismiss "invite-users" modal.
Pressing escape key dismiss the invite-user modal.

Fixes #4008.
2017-03-09 12:10:27 -08:00
Saurav Pratihar 9ab4b3b6cc topics: Add tooltip showing full topic name in left sidebar.
This is useful if the topic name is too long and thus is cut off for
display purposes.

Fixes #3979.
2017-03-09 11:12:32 -08:00
adnrs96 621e0749dc Clean subscription_table_body.handlebars to use 4 space indents. 2017-03-09 01:17:25 -08:00
adnrs96 46ea4ea05f Clean subscription_stream_privacy_modal.handlebars to use 4 space indents. 2017-03-09 01:17:25 -08:00
adnrs96 8b164b57ad Clean muted_topic_ui_row.handlebars to use 4 space indents. 2017-03-09 01:17:25 -08:00
adnrs96 25c656a6cc Clean message_reaction.handlebars to use 4 space indents. 2017-03-09 01:17:25 -08:00
adnrs96 33a8aa7bf2 Clean bot_owner_select.handlebars to use 4 space indents. 2017-03-09 01:17:23 -08:00
adnrs96 f5afcb5a4b Clean topic_edit_form handlebar to use 4 space indents. 2017-03-09 01:17:23 -08:00
Rafid Aslam 1143a2d8c4 attachment: Add file icon to the green box when file has no extension.
Fixes #3848.
2017-03-09 00:56:37 -08:00
Tim Abbott 84d4f62abf lint: Exclude Acme placeholders from translations.
These strings represented a small waste of time for our translators.
2017-03-09 00:38:15 -08:00
Tim Abbott cc07190fdc capitalization: Clean up failed message sending options. 2017-03-09 00:36:13 -08:00
Umair Khan 2894924ffb capitalization: Fix Only Admins may now create new streams. 2017-03-08 23:40:15 -08:00
Umair Khan c0e92015fd capitalization: Fix Only Admins may now add new emoji. 2017-03-08 23:38:36 -08:00
Tim Abbott 70aa443c25 stream_popover: Fix references to topic_ops.
This apparently got lost in the refactoring that extracted
stream_popover.js.
2017-03-08 23:30:44 -08:00
Tim Abbott 5613358638 stream_popover: Fix hiding topic popover. 2017-03-08 23:25:30 -08:00
Brock Whittaker f63f251f8f css: Fix styling and padding in mobile sidebars.
Fixup the styling of the mobile sidebars to be a little bit more
stylistically uniform.
2017-03-08 21:23:29 -08:00
Brock Whittaker a94077db07 Make subscriptions page scrolling responsive.
This fixes some scrolling issues that are present on mobile and iOS.
2017-03-08 21:08:36 -08:00
Brock Whittaker bb13cad60f compose: Bring back the compose buttons on mobile.
Before they were hidden in favor of icons, but now there’s no need to
hide them, we should just display the original buttons.
2017-03-08 21:07:43 -08:00
Brock Whittaker c5ba4e11d4 Redesign "/integrations/" page in portico.
This redesigns the integrations page to incorporate the new landing nav,
CSS animations, and general styling of the product page set.
2017-03-08 17:42:17 -08:00
Brock Whittaker 30bd61530d Add elastic scrolling to iOS.
This adds elastic scrolling to iOS to allow for scroll inertia
properties as standard webpages should exhibit.
2017-03-08 17:04:10 -08:00
Brock Whittaker 1d2c3cec10 Fix: change mobile sidebar click target to call new popover function.
This changes the click target that opens the mobile sidebar to call the
new popover function in stream_popover rather than the old popovers
object.
2017-03-08 17:04:10 -08:00
Tim Abbott 3b59e6c3cc subs: Rename /#subscriptions to /#streams.
Fixes #3653.
2017-03-08 16:57:58 -08:00
Rishi Gupta 5cfd1e1266 bot settings: Change placeholder from bot_user_name to cookie. 2017-03-08 16:26:13 -08:00
Rishi Gupta 3797fa657e Change bot domains to string_id.EXTERNAL_HOST.
Change applies to both subdomains and non-subdomains case, though we use
just the EXTERNAL_HOST in the non-subdomains case if there is only 1 realm.

Fixes #3903.
2017-03-08 16:26:13 -08:00
Tim Abbott 4a1f1db9ee users: Avoid inserting into the DOM in a loop.
This fixes a major performance issue loading the administration page
in large organizations.
2017-03-08 16:21:25 -08:00
Tim Abbott a8d8855624 attachment: Avoid inserting into the DOM in a loop.
This has a huge impact on the performance of loading the settings page
if you have a decent number of past uploaded files.
2017-03-08 16:20:50 -08:00
Tim Abbott 9c02e59b66 hotkey: Fix K/J being treated as hotkeys in compose. 2017-03-08 16:02:33 -08:00
Tim Abbott e61b54b74a Fix spacebar being broken in the compose box.
This fixes a regression introduced in
8801158dfd.

Apparently the `page_up`/`page_down` hotkey definitions somewhat
confusingly called `spacebar` `page_down`, etc.  Probably worth doing
further cleanup on this.
2017-03-08 15:57:56 -08:00
Tim Abbott fc3927a124 subs: Improve meta.stream_created targeting.
This fixes a potential race where you get subscribed to a stream
around the same time that you create a stream.
2017-03-08 14:47:49 -08:00
Brock Whittaker 022aeca085 subs: Prepend new streams to top of stream list.
This prepends new streams that are created to the top of the list so
that they are more visible when being created.
2017-03-08 14:47:00 -08:00
Brock Whittaker 8801158dfd Add hotkey actions for page up/down in compose box.
The hotkey actions make the caret position go to the top of the compose
box or bottom respectively, while the compose box is open.

Fixes #1910.
2017-03-08 14:13:05 -08:00
Tim Abbott ee231c0223 login: Improve development server login copy. 2017-03-08 12:36:04 -08:00
Umair Khan d4228e8151 capitalization: Fix waiting period threshold changed. 2017-03-08 12:33:37 -08:00
Umair Khan 22c1c13f38 capitalization: Fix View Source / Edit Topic. 2017-03-08 12:33:37 -08:00
Umair Khan 935cacfc86 capitalization: Fix View Source. 2017-03-08 12:33:37 -08:00
Umair Khan 523f8ecd79 capitalization: Fix Upload New Avatar. 2017-03-08 12:33:37 -08:00
Umair Khan 3dd823b0af capitalization: Fix Stream Name. 2017-03-08 12:33:36 -08:00
Umair Khan fdb709d0b7 capitalization: Fix No Drafts. 2017-03-08 12:29:07 -08:00
Umair Khan 9faf73eaa9 capitalization: Fix Generate new API Key. 2017-03-08 12:29:07 -08:00
Umair Khan 569418f0b4 capitalization: Fix Full Bot Name. 2017-03-08 12:29:07 -08:00
Umair Khan 7d398f4ce3 capitalization: Fix Exit Tutorial. 2017-03-08 12:29:07 -08:00
Umair Khan 7420d77cc3 capitalization: Fix Edit User. 2017-03-08 12:29:07 -08:00
Umair Khan 1863ce41f1 capitalization: Fix Delete Avatar. 2017-03-08 12:29:07 -08:00
Umair Khan a67b405f3b capitalization: Fix Delete Alert Word. 2017-03-08 12:29:07 -08:00
Umair Khan 780e3d8d12 capitalization: Fix Deactivate Account. 2017-03-08 12:29:07 -08:00
Umair Khan 6728d212a6 capitalization: Fix Copy from Stream. 2017-03-08 12:29:07 -08:00
Umair Khan 33325d94ab capitalization: Fix Change Password. 2017-03-08 12:29:07 -08:00
Umair Khan 7973b7ffd2 capitalization: Fix Allow Subdomains. 2017-03-08 12:29:07 -08:00
Umair Khan 0a41c12a07 capitalization: Fix Alert Word. 2017-03-08 12:29:06 -08:00
Umair Khan 0d31bcc2f7 capitalization: Fix API Key. 2017-03-08 12:29:06 -08:00
Steve Howell a61f468348 Simplify buddy list status level sorting.
Introducing the level function makes it a bit more clear that active
users get sorted to the top.

It also shaves a couple milliseconds for large buddy lists, although
that is mostly negligible compared to name sorting and rendering.
2017-03-08 11:32:23 -08:00
Steve Howell bdd8964ca9 Simplify and speed up buddy list name sorting.
We remove duplicate calls to people.get_person_from_user_id here.
With 2000 users, this makes the sort about 10ms faster.
2017-03-08 11:32:23 -08:00
Steve Howell a246d2dcb3 refactor: Eliminate presence_info params.
It's easier to reason about the activity.js code if we just
make it clear that presence_info is a global singleton.  Going
forward, functions that use that data will explicitly refer to
exports.presence_info.

This change makes some tests slightly more awkward to set up, but
with the actual code you now don't have to question whether there
are multiple copies of presence_info to maintain.

The diff for compare_function is a bit confusing to read, but it's
basically just de-dented since we don't need to parameterize the
compare function any more.
2017-03-08 11:32:23 -08:00
Steve Howell 89d362656a Simplify focus_lost() function (and add comments).
The function focus_lost() was setting has_focus to false
in all cases; now it does it more clearly.  I also added a
comment explaining why we don't ping on losing focus.
2017-03-08 11:32:22 -08:00
Steve Howell 7cec88c748 performance: Avoid unnecessary buddy list redraws.
We no longer build the buddy list twice during page load; we
build it just once from page_params information.  (We also send
the initial ping and schedule subsequent pings slightly later in
the process.)

We also don't do redraws upon regaining focus, since we don't
show ourselves in the buddy list, and even if we did, we wouldn't
need a full server update.

To have this flexibility, we introduce the want_redraw flag to
focus_ping.
2017-03-08 11:09:13 -08:00
Brock Whittaker 3b55519b11 Redesign "/features/" page in portico.
This redesigns the features page to incorporate the new landing nav,
CSS animations, and general styling of the product page set.
2017-03-07 23:25:39 -08:00
Raghav Jajodia 21f0339cfc compose: Focus on topic when narrowed to a stream+topic.
When narrowed to a stream+topic and clicking the "new topic" button,
focus in on topic and the text remains selected.
Fixes #3888.
2017-03-07 22:24:57 -08:00
K.Kanakhin 1cb0f8dc41 Add size limit for uploading user avatars and realm icons.
- Add settings parameter for max realm icon size.
- Add settings parameter for max user avatar size.
- Add checking file size to avatar and icon
  uploading views.
- Transfer file size limit parameter to frontend.
- Add tests.
2017-03-07 22:13:01 -08:00
K.Kanakhin 72424f3a9f realm-icon: Fix variable name for realm icon source. 2017-03-07 22:09:58 -08:00
Vasu Verma d4a004c420 Fix enter key not deleting selected text in compose box.
Fix #3889.
2017-03-07 22:04:04 -08:00
Feorlen e0acdfde0d Add a Splunk webhook integration.
Add a webhook to create messages from Splunk search alerts. The search
alert JSON includes the first search result and a link to view the full
results. The following fields are used:

* search_name - the name of the saved search
* results_link - URL of the full search results
* host - the host the search result came from
* source - the source file on that host
* _raw - the raw text of the logged event.

The Zulip message contains:
* search name
* host
* source
* raw

The destination stream and message topic are configurable: the default
stream is "splunk" and the default topic "Splunk Alert". If the topic is
not provided in the URL, the search name is used instead (truncated if too
long. If a needed field is missing, a default value is used instead.

Example: "Missing source"

It is possible to configure a Splunk search to not include some values,
so I've provided defaults rather than return an error for missing data.
In practice, these fields are unlikely to be deliberately suppressed.

Note: alerts are only available for Splunk servers using a valid trial,
developer, or paid license.

I've added tests for the normal case of one search result, the topic from
the search name, and for a search missing one of the fields used. Tested
using Splunk Enterprise 6.5.1.

Fixes #3477
2017-03-07 21:48:26 -08:00
Joshua Pan b1e7ecdad2 user search: Hitting enter narrows to user PM.
Fixes #3874.
2017-03-07 21:05:56 -08:00
Tim Abbott 345ece0ee5 message view: Improve readability of dates and times. 2017-03-07 18:56:30 -08:00
Boris Yankov 890ff16b37 message view: Increase font weight of timestamps for readibility. 2017-03-07 18:56:05 -08:00
Archana BS a6b5b03122 stats: Change time ranges for bar graph and pie chart.
- Change templates/analytics/stats.html to use 'Last
  Week', 'Last Month', 'Last Year' time ranges instead
  of 'Last 10 days', 'Last 30 days'.
- Change static/styles/stats.css to not set background
  color for default time option, for messages sent by
  client and message by recipient type.
- Change static/js/stats/stats.js to show only available
  time range options, and set background color for the
  default. The default is Last Month if it exists, and
  otherwise All Time.

Fixes: #3856
2017-03-07 17:25:58 -08:00
Raghav Jajodia d52e08a25c analytics: Add a "Last updated" to the bottom of the stats page.
Fixes #3857.
2017-03-07 16:02:27 -08:00
Tim Abbott ec16a3298d reactions: Expand click area for opening popover. 2017-03-06 22:26:12 -08:00
Brock Whittaker ec9bad4096 Hide the emoji icon in message when emoji is selected.
This hides the emoji icon from the shown state when users select an
emoji from the popover.
2017-03-06 22:24:21 -08:00
Brock Whittaker 4d5aa3ddc9 Restyle and refactor .message_controls for better UX.
This refactors the .message_controls to stop relying on absolute
positioning and strange CSS, and throws them inline.

This also restyles so they hang to the right of the time which is now
always present.

Fixes: #3761.
2017-03-06 22:24:21 -08:00
Steve Howell a17deb144a Use data-stream-id in topics popover. 2017-03-05 15:44:44 -08:00
Steve Howell 8e2e406404 refactor: Extract stream_popover.js.
This module handles the popovers in the stream list--one for
stream actions and another for topic-specific actions.

The extraction was mostly straightforward, but I did move some
of the code related to the color picker to be more consistent
with how I organized the other click handlers.
2017-03-05 15:44:43 -08:00
Steve Howell ba49962f9a refactor: Extract stream_popover_sub().
Part of this change moved a click handler from subs.js to
popover.js.
2017-03-05 15:44:43 -08:00
Steve Howell 6630b84dc0 Remove data-stream-name from subscription_settings. 2017-03-05 15:44:43 -08:00
Steve Howell 58b018858e refactor: Pass in sub to ajaxUnsubscribe(). 2017-03-05 15:44:43 -08:00
Steve Howell 761a0beb7e refactor: Rename variable in show_settings_for(). 2017-03-05 15:44:43 -08:00
Steve Howell e703b0bfdb refactor: Remove stream_name param in update_stream_color(). 2017-03-05 15:44:43 -08:00
Steve Howell f8819256b0 Use stream_id in update_subscription_properties(). 2017-03-05 15:44:43 -08:00
Steve Howell 95cdc744d9 refactor: Simplify code for renaming streams. 2017-03-05 11:55:09 -08:00