Go to file
Steve Howell bed6d5a789 typing: Inline check_typing_notification.
I actually like this pattern:

    def check_send_typing_notification(...):
        typing_notification = check_typing_notification(...)
        do_send_typing_notification(...)

It can help divide responsibilities nicely and make it easy
to write detailed unit tests against each of the two helpers.

Unfortunately, the good things didn't really happen here, and
instead we got the worst aspects of the pattern:

    - The responsibilities for validation leaked into
      the second function.

    - Both functions were doing sane things individually
      that became not-so-sane in the big picture (namely,
      we ended up making Recipient objects for no reason,
      but if you read each of the helpers, it was just one
      step that seemed reasonable).

    - Passing around dictionaries for results can be annoying.

Also, the pattern made a lot more sense when the validation
for typing was a lot more complicated.  My prior commit makes
it so that we only ever deal with a list of user_ids.

Anyway, now I'm inlining it. :)

Subsequent commits will clean up the more substantive issue
here, which is that we are building Recipients for no reason.
2020-02-28 12:39:36 -08:00
.circleci circleci: Store XUnit test results. 2019-07-07 22:31:11 -07:00
.github
.tx cleanup: Delete trailing newlines. 2019-08-06 23:29:11 -07:00
analytics analytics: Added comments. 2020-01-28 14:57:32 -08:00
confirmation confirmation: Set confirmation object realm attribute in realm reactivation. 2019-10-21 16:52:46 -07:00
corporate corporate: Allow customer to go through /upgrade/ if their plan ended. 2020-02-13 17:40:04 -08:00
docs typing: Deprecate emails in typing endpoint. 2020-02-28 12:39:36 -08:00
frontend_tests tests: Restore 100% coverage for server_events_dispatch.js. 2020-02-27 18:29:24 -08:00
locale i18n: Update translation data from transifex. 2019-12-12 20:34:46 -08:00
pgroonga python: Sort migrations/management command imports with isort. 2020-01-14 13:07:47 -08:00
puppet setup_path_on_import: Replace with setup_path function. 2020-02-25 15:40:21 -08:00
requirements dependencies: Upgrade to Django 2.2.10. 2020-02-13 16:27:26 -08:00
scripts setup_path_on_import: Replace with setup_path function. 2020-02-25 15:40:21 -08:00
static desktop: Update desktop app to v4.0.3. 2020-02-28 12:04:18 -08:00
stubs mypy: Remove daemon mode. 2019-08-25 15:04:12 -07:00
templates panels: Show a banner for users with legacy desktop apps. 2020-02-28 01:54:46 -08:00
tools setup_path_on_import: Replace with setup_path function. 2020-02-25 15:40:21 -08:00
zerver typing: Inline check_typing_notification. 2020-02-28 12:39:36 -08:00
zilencer presence: Add realm_id to UserPresence. 2020-02-10 17:21:45 -08:00
zproject test_settings: Change SOCIAL_AUTH_SUBDOMAIN to 'auth' in tests. 2020-02-27 17:32:08 -08:00
zthumbor zthumbor: Clean up type ignores. 2019-08-09 17:42:33 -07:00
.browserslistrc webpack: Transpile JS code with Babel. 2019-07-22 17:55:32 -07:00
.codecov.yml codecov: Change threshold to use percentage syntax. 2019-07-20 14:37:04 -07:00
.editorconfig editorconfig: Set JS max_line_length = 100, to match eslintrc. 2019-10-14 17:32:38 -07:00
.eslintignore blueslip: Apply ESLint. 2019-11-01 12:13:59 -07:00
.eslintrc.json dict: Replace with Map. 2020-02-25 15:37:37 -08:00
.gitattributes Revert "gitattributes: Mark yarn.lock as "binary", i.e. suppress diffs." 2019-05-20 19:31:14 -07:00
.gitignore i18n: Move static/locale back to locale. 2019-07-02 14:57:55 -07:00
.gitlint
.isort.cfg
.npmignore
.stylelintrc lint: Ban color names in CSS. 2019-01-22 15:33:18 -08:00
.travis.yml ci: Move backend and production tests to Ubuntu 16.04 (xenial). 2019-05-24 17:07:15 -07:00
.yarnrc .yarnrc: Set ignore-scripts true. 2019-08-28 16:15:54 -07:00
CODE_OF_CONDUCT.md docs: Add clarifying comma in CODE_OF_CONDUCT.md. 2019-04-05 18:01:37 -07:00
CONTRIBUTING.md docs: Change our security contact to security@. 2020-02-26 16:35:29 -08:00
Dockerfile-postgresql base Zulip PostgreSQL Docker container on PGroonga official one 2019-12-30 10:20:25 -08:00
LICENSE license: Move license application notice from LICENSE to NOTICE. 2018-10-02 12:04:44 -07:00
NOTICE license: Move license application notice from LICENSE to NOTICE. 2018-10-02 12:04:44 -07:00
README.md docs: Update discussion of outreach programs. 2020-02-25 11:47:09 -08:00
Vagrantfile Revert "vagrant: Add NFS backend for file synchronization for OSX." 2019-08-12 16:04:00 -07:00
babel.config.js babel: Enable loose mode. 2020-02-05 11:52:52 -08:00
manage.py setup_path_on_import: Replace with setup_path function. 2020-02-25 15:40:21 -08:00
mypy.ini tornado: Rewrite Django integration to duplicate less code. 2020-02-13 16:13:11 -08:00
package.json dependencies: Add source-map to top level devDependencies. 2020-02-19 14:39:26 -08:00
postcss.config.js webpack: Move CSS minification to optimization stage. 2019-09-02 21:58:13 -07:00
tsconfig.json tsconfig: Fix typescript-eslint memory usage disaster. 2019-11-22 11:38:25 -08:00
version.py emoji: Resolve emoji sprite sheets and stylesheets through Webpack. 2020-02-25 14:43:46 -08:00
yarn.lock upload: Replace jQuery filedrop with Uppy. 2020-02-13 16:43:19 -08:00

README.md

Zulip overview

Zulip is a powerful, open source group chat application that combines the immediacy of real-time chat with the productivity benefits of threaded conversations. Zulip is used by open source projects, Fortune 500 companies, large standards bodies, and others who need a real-time chat system that allows users to easily process hundreds or thousands of messages a day. With over 500 contributors merging over 500 commits a month, Zulip is also the largest and fastest growing open source group chat project.

CircleCI branch Coverage Status Mypy coverage GitHub release docs Zulip chat Twitter

Getting started

Click on the appropriate link below. If nothing seems to apply, join us on the Zulip community server and tell us what's up!

You might be interested in:

You may also be interested in reading our blog or following us on twitter. Zulip is distributed under the Apache 2.0 license.