mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 06:53:25 +00:00
This commit contains a few clean ups: * In order to scale better for adding multiple commands, the message formatting and setting switch logic was extracted to its own function. * The command lists were removed, as the frontend parses the slash command from the compose box, and only sends a single command to the backend for any given command alias typed. * The `switch_command` logic was removed because, given the aforementioned fact, the index of the command will always be the same. Thus the switch command will always be the same. * Switched to using early returns as opposed to nested conditionals. Along with removing single use variable declarations.
42 lines
1.8 KiB
Python
42 lines
1.8 KiB
Python
from typing import Any, Dict
|
|
from django.utils.translation import ugettext as _
|
|
|
|
from zerver.models import UserProfile
|
|
from zerver.lib.actions import do_set_user_display_setting
|
|
from zerver.lib.exceptions import JsonableError
|
|
|
|
def process_zcommands(content: str, user_profile: UserProfile) -> Dict[str, Any]:
|
|
def change_mode_setting(command: str, switch_command: str,
|
|
setting: str, setting_value: bool) -> str:
|
|
msg = 'Changed to {command} mode! To revert ' \
|
|
'{command} mode, type `/{switch_command}`.'.format(
|
|
command=command,
|
|
switch_command=switch_command
|
|
)
|
|
do_set_user_display_setting(user_profile=user_profile,
|
|
setting_name=setting,
|
|
setting_value=setting_value)
|
|
return msg
|
|
|
|
if not content.startswith('/'):
|
|
raise JsonableError(_('There should be a leading slash in the zcommand.'))
|
|
command = content[1:]
|
|
|
|
if command == 'ping':
|
|
return dict()
|
|
elif command == 'night':
|
|
if user_profile.night_mode:
|
|
return dict(msg='You are still in night mode.')
|
|
return dict(msg=change_mode_setting(command=command,
|
|
switch_command='day',
|
|
setting='night_mode',
|
|
setting_value=True))
|
|
elif command == 'day':
|
|
if not user_profile.night_mode:
|
|
return dict(msg='You are still in day mode.')
|
|
return dict(msg=change_mode_setting(command=command,
|
|
switch_command='night',
|
|
setting='night_mode',
|
|
setting_value=False))
|
|
raise JsonableError(_('No such command: %s') % (command,))
|