mirror of
				https://github.com/zulip/zulip.git
				synced 2025-10-30 19:43:47 +00:00 
			
		
		
		
	js: Convert static/js/compose_state.js to ES6 module.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
		
				
					committed by
					
						 Tim Abbott
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							f499c4a858
						
					
				
				
					commit
					1547494e25
				
			| @@ -138,7 +138,6 @@ | ||||
|                 "color_data": false, | ||||
|                 "compose": false, | ||||
|                 "compose_actions": false, | ||||
|                 "compose_state": false, | ||||
|                 "compose_ui": false, | ||||
|                 "composebox_typeahead": false, | ||||
|                 "condense": false, | ||||
|   | ||||
| @@ -39,7 +39,7 @@ const _keydown_util = { | ||||
|     }, | ||||
| }; | ||||
|  | ||||
| const compose_state = {}; | ||||
| const compose_state = {__esModule: true}; | ||||
|  | ||||
| const _scroll_util = { | ||||
|     __esModule: true, | ||||
| @@ -70,7 +70,7 @@ set_global("padded_widget", { | ||||
|     update_padding: () => {}, | ||||
| }); | ||||
| rewiremock("../../static/js/channel").with(channel); | ||||
| set_global("compose_state", compose_state); | ||||
| rewiremock("../../static/js/compose_state").with(compose_state); | ||||
| set_global("document", _document); | ||||
| rewiremock("../../static/js/keydown_util").with(_keydown_util); | ||||
| rewiremock("../../static/js/pm_list").with(_pm_list); | ||||
|   | ||||
| @@ -741,7 +741,7 @@ test_ui("send_message", () => { | ||||
|         compose_state.topic(""); | ||||
|         compose_state.set_message_type("private"); | ||||
|         page_params.user_id = 101; | ||||
|         compose_state.private_message_recipient = () => "alice@example.com"; | ||||
|         compose_state.__Rewire__("private_message_recipient", () => "alice@example.com"); | ||||
|  | ||||
|         const server_message_id = 127; | ||||
|         local_message.insert_message = (message) => { | ||||
| @@ -928,7 +928,7 @@ test_ui("finish", () => { | ||||
|         $("#markdown_preview").hide(); | ||||
|         $("#compose-textarea").val("foobarfoobar"); | ||||
|         compose_state.set_message_type("private"); | ||||
|         compose_state.private_message_recipient = () => "bob@example.com"; | ||||
|         compose_state.__Rewire__("private_message_recipient", () => "bob@example.com"); | ||||
|  | ||||
|         let compose_finished_event_checked = false; | ||||
|         $(document).on("compose_finished.zulip", () => { | ||||
| @@ -1841,7 +1841,7 @@ test_ui("create_message_object", () => { | ||||
|     $("#stream_message_recipient_topic").val("lunch"); | ||||
|     $("#compose-textarea").val("burrito"); | ||||
|  | ||||
|     compose_state.get_message_type = () => "stream"; | ||||
|     compose_state.__Rewire__("get_message_type", () => "stream"); | ||||
|  | ||||
|     let message = compose.create_message_object(); | ||||
|     assert.equal(message.to, sub.stream_id); | ||||
| @@ -1856,8 +1856,11 @@ test_ui("create_message_object", () => { | ||||
|     assert.equal(message.topic, "lunch"); | ||||
|     assert.equal(message.content, "burrito"); | ||||
|  | ||||
|     compose_state.get_message_type = () => "private"; | ||||
|     compose_state.private_message_recipient = () => "alice@example.com, bob@example.com"; | ||||
|     compose_state.__Rewire__("get_message_type", () => "private"); | ||||
|     compose_state.__Rewire__( | ||||
|         "private_message_recipient", | ||||
|         () => "alice@example.com, bob@example.com", | ||||
|     ); | ||||
|  | ||||
|     message = compose.create_message_object(); | ||||
|     assert.deepEqual(message.to, [alice.user_id, bob.user_id]); | ||||
|   | ||||
| @@ -85,7 +85,9 @@ const respond_to_message = compose_actions.respond_to_message; | ||||
| const reply_with_mention = compose_actions.reply_with_mention; | ||||
| const quote_and_reply = compose_actions.quote_and_reply; | ||||
|  | ||||
| compose_state.private_message_recipient = (function () { | ||||
| compose_state.__Rewire__( | ||||
|     "private_message_recipient", | ||||
|     (function () { | ||||
|         let recipient; | ||||
|  | ||||
|         return function (arg) { | ||||
| @@ -96,7 +98,8 @@ compose_state.private_message_recipient = (function () { | ||||
|             recipient = arg; | ||||
|             return undefined; | ||||
|         }; | ||||
| })(); | ||||
|     })(), | ||||
| ); | ||||
|  | ||||
| function stub_selected_message(msg) { | ||||
|     current_msg_list.selected_message = () => msg; | ||||
| @@ -416,12 +419,12 @@ run_test("focus_in_empty_compose", () => { | ||||
|         return $("#compose-textarea").is_focused; | ||||
|     }; | ||||
|  | ||||
|     compose_state.composing = () => true; | ||||
|     compose_state.__Rewire__("composing", () => true); | ||||
|     $("#compose-textarea").val(""); | ||||
|     $("#compose-textarea").trigger("focus"); | ||||
|     assert(compose_state.focus_in_empty_compose()); | ||||
|  | ||||
|     compose_state.composing = () => false; | ||||
|     compose_state.__Rewire__("composing", () => false); | ||||
|     assert(!compose_state.focus_in_empty_compose()); | ||||
|  | ||||
|     $("#compose-textarea").val("foo"); | ||||
|   | ||||
| @@ -1518,7 +1518,7 @@ run_test("typeahead_results", () => { | ||||
| run_test("message people", () => { | ||||
|     let results; | ||||
|  | ||||
|     compose_state.stream_name = () => undefined; | ||||
|     compose_state.__Rewire__("stream_name", () => undefined); | ||||
|     ct.max_num_items = 2; | ||||
|  | ||||
|     /* | ||||
|   | ||||
| @@ -27,7 +27,8 @@ const localStorage = set_global("localStorage", { | ||||
|     }, | ||||
| }); | ||||
| set_global("compose", {}); | ||||
| const compose_state = set_global("compose_state", {}); | ||||
| const compose_state = {__esModule: true}; | ||||
| rewiremock("../../static/js/compose_state").with(compose_state); | ||||
| set_global("stream_data", { | ||||
|     get_color() { | ||||
|         return "#FFFFFF"; | ||||
|   | ||||
| @@ -25,7 +25,6 @@ document.location.protocol = "https:"; | ||||
| document.location.host = "foo.com"; | ||||
|  | ||||
| const compose_ui = zrequire("compose_ui"); | ||||
| zrequire("compose_state"); | ||||
| zrequire("compose"); | ||||
| const compose_actions = zrequire("compose_actions"); | ||||
|  | ||||
|   | ||||
| @@ -24,7 +24,6 @@ import "../widgetize"; | ||||
| import "../message_list"; | ||||
| import "../narrow"; | ||||
| import "../reload"; | ||||
| import "../compose_state"; | ||||
| import "../compose_actions"; | ||||
| import "../transmit"; | ||||
| import "../compose"; | ||||
|   | ||||
| @@ -9,6 +9,7 @@ const render_buddy_list_tooltip = require("../templates/buddy_list_tooltip.hbs") | ||||
| const render_buddy_list_tooltip_content = require("../templates/buddy_list_tooltip_content.hbs"); | ||||
|  | ||||
| const channel = require("./channel"); | ||||
| const compose_state = require("./compose_state"); | ||||
| const message_edit_history = require("./message_edit_history"); | ||||
| const muting_ui = require("./muting_ui"); | ||||
| const rows = require("./rows"); | ||||
|   | ||||
| @@ -13,6 +13,7 @@ const channel = require("./channel"); | ||||
| const common = require("./common"); | ||||
| const compose_fade = require("./compose_fade"); | ||||
| const compose_pm_pill = require("./compose_pm_pill"); | ||||
| const compose_state = require("./compose_state"); | ||||
| const drafts = require("./drafts"); | ||||
| const echo = require("./echo"); | ||||
| const loading = require("./loading"); | ||||
|   | ||||
| @@ -8,6 +8,7 @@ const channel = require("./channel"); | ||||
| const common = require("./common"); | ||||
| const compose_fade = require("./compose_fade"); | ||||
| const compose_pm_pill = require("./compose_pm_pill"); | ||||
| const compose_state = require("./compose_state"); | ||||
| const drafts = require("./drafts"); | ||||
| const message_viewport = require("./message_viewport"); | ||||
| const narrow_state = require("./narrow_state"); | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| import _ from "lodash"; | ||||
|  | ||||
| import * as compose_state from "./compose_state"; | ||||
| import * as message_viewport from "./message_viewport"; | ||||
| import * as people from "./people"; | ||||
| import * as rows from "./rows"; | ||||
|   | ||||
| @@ -1,22 +1,20 @@ | ||||
| "use strict"; | ||||
|  | ||||
| const compose_pm_pill = require("./compose_pm_pill"); | ||||
| import * as compose_pm_pill from "./compose_pm_pill"; | ||||
|  | ||||
| let message_type = false; // 'stream', 'private', or false-y | ||||
|  | ||||
| exports.set_message_type = function (msg_type) { | ||||
| export function set_message_type(msg_type) { | ||||
|     message_type = msg_type; | ||||
| }; | ||||
| } | ||||
|  | ||||
| exports.get_message_type = function () { | ||||
| export function get_message_type() { | ||||
|     return message_type; | ||||
| }; | ||||
| } | ||||
|  | ||||
| exports.composing = function () { | ||||
| export function composing() { | ||||
|     // This is very similar to get_message_type(), but it returns | ||||
|     // a boolean. | ||||
|     return Boolean(message_type); | ||||
| }; | ||||
| } | ||||
|  | ||||
| function get_or_set(fieldname, keep_leading_whitespace) { | ||||
|     // We can't hoist the assignment of 'elem' out of this lambda, | ||||
| @@ -33,30 +31,26 @@ function get_or_set(fieldname, keep_leading_whitespace) { | ||||
| } | ||||
|  | ||||
| // TODO: Break out setters and getter into their own functions. | ||||
| exports.stream_name = get_or_set("stream_message_recipient_stream"); | ||||
| exports.topic = get_or_set("stream_message_recipient_topic"); | ||||
| export const stream_name = get_or_set("stream_message_recipient_stream"); | ||||
|  | ||||
| export const topic = get_or_set("stream_message_recipient_topic"); | ||||
|  | ||||
| // We can't trim leading whitespace in `compose_textarea` because | ||||
| // of the indented syntax for multi-line code blocks. | ||||
| exports.message_content = get_or_set("compose-textarea", true); | ||||
| export const message_content = get_or_set("compose-textarea", true); | ||||
|  | ||||
| exports.focus_in_empty_compose = function () { | ||||
|     return ( | ||||
|         exports.composing() && | ||||
|         exports.message_content() === "" && | ||||
|         $("#compose-textarea").is(":focus") | ||||
|     ); | ||||
| }; | ||||
| export function focus_in_empty_compose() { | ||||
|     return composing() && message_content() === "" && $("#compose-textarea").is(":focus"); | ||||
| } | ||||
|  | ||||
| exports.private_message_recipient = function (value) { | ||||
| export function private_message_recipient(value) { | ||||
|     if (typeof value === "string") { | ||||
|         compose_pm_pill.set_from_emails(value); | ||||
|         return undefined; | ||||
|     } | ||||
|     return compose_pm_pill.get_emails(); | ||||
| }; | ||||
| } | ||||
|  | ||||
| exports.has_message_content = function () { | ||||
|     return exports.message_content() !== ""; | ||||
| }; | ||||
|  | ||||
| window.compose_state = exports; | ||||
| export function has_message_content() { | ||||
|     return message_content() !== ""; | ||||
| } | ||||
|   | ||||
| @@ -11,6 +11,7 @@ const typeahead = require("../shared/js/typeahead"); | ||||
|  | ||||
| const channel = require("./channel"); | ||||
| const compose_pm_pill = require("./compose_pm_pill"); | ||||
| const compose_state = require("./compose_state"); | ||||
| const people = require("./people"); | ||||
| const rows = require("./rows"); | ||||
| const settings_data = require("./settings_data"); | ||||
|   | ||||
| @@ -4,6 +4,7 @@ import Handlebars from "handlebars/runtime"; | ||||
| import render_draft_table_body from "../templates/draft_table_body.hbs"; | ||||
|  | ||||
| import * as compose_fade from "./compose_fade"; | ||||
| import * as compose_state from "./compose_state"; | ||||
| import {localstorage} from "./localstorage"; | ||||
| import * as markdown from "./markdown"; | ||||
| import * as people from "./people"; | ||||
|   | ||||
							
								
								
									
										1
									
								
								static/js/global.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								static/js/global.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -17,7 +17,6 @@ declare let color_data: any; | ||||
| declare let compose: any; | ||||
| declare let compose_actions: any; | ||||
| declare let composebox_typeahead: any; | ||||
| declare let compose_state: any; | ||||
| declare let compose_ui: any; | ||||
| declare let condense: any; | ||||
| declare let confirm_dialog: any; | ||||
|   | ||||
| @@ -3,6 +3,7 @@ | ||||
| const emoji = require("../shared/js/emoji"); | ||||
|  | ||||
| const common = require("./common"); | ||||
| const compose_state = require("./compose_state"); | ||||
| const copy_and_paste = require("./copy_and_paste"); | ||||
| const drafts = require("./drafts"); | ||||
| const feedback_widget = require("./feedback_widget"); | ||||
|   | ||||
| @@ -3,6 +3,7 @@ | ||||
| const alert_words = require("./alert_words"); | ||||
| const channel = require("./channel"); | ||||
| const compose_fade = require("./compose_fade"); | ||||
| const compose_state = require("./compose_state"); | ||||
| const huddle_data = require("./huddle_data"); | ||||
| const message_edit_history = require("./message_edit_history"); | ||||
| const narrow_state = require("./narrow_state"); | ||||
|   | ||||
| @@ -2,6 +2,7 @@ | ||||
|  | ||||
| const channel = require("./channel"); | ||||
| const compose_fade = require("./compose_fade"); | ||||
| const compose_state = require("./compose_state"); | ||||
| const {Filter} = require("./filter"); | ||||
| const {MessageListData} = require("./message_list_data"); | ||||
| const narrow_state = require("./narrow_state"); | ||||
|   | ||||
| @@ -16,6 +16,7 @@ const render_user_info_popover_content = require("../templates/user_info_popover | ||||
| const render_user_info_popover_title = require("../templates/user_info_popover_title.hbs"); | ||||
| const render_user_profile_modal = require("../templates/user_profile_modal.hbs"); | ||||
|  | ||||
| const compose_state = require("./compose_state"); | ||||
| const feature_flags = require("./feature_flags"); | ||||
| const message_edit_history = require("./message_edit_history"); | ||||
| const message_viewport = require("./message_viewport"); | ||||
|   | ||||
| @@ -1,3 +1,4 @@ | ||||
| import * as compose_state from "./compose_state"; | ||||
| import {localstorage} from "./localstorage"; | ||||
| import * as narrow_state from "./narrow_state"; | ||||
| import * as reload_state from "./reload_state"; | ||||
|   | ||||
| @@ -9,6 +9,7 @@ const render_subscriptions = require("../templates/subscriptions.hbs"); | ||||
|  | ||||
| const channel = require("./channel"); | ||||
| const components = require("./components"); | ||||
| const compose_state = require("./compose_state"); | ||||
| const loading = require("./loading"); | ||||
| const message_live_update = require("./message_live_update"); | ||||
| const people = require("./people"); | ||||
|   | ||||
| @@ -2,6 +2,7 @@ import * as typing_status from "../shared/js/typing_status"; | ||||
|  | ||||
| import * as channel from "./channel"; | ||||
| import * as compose_pm_pill from "./compose_pm_pill"; | ||||
| import * as compose_state from "./compose_state"; | ||||
| import * as people from "./people"; | ||||
|  | ||||
| // This module handles the outbound side of typing indicators. | ||||
|   | ||||
| @@ -4,6 +4,8 @@ const Uppy = require("@uppy/core"); | ||||
| const ProgressBar = require("@uppy/progress-bar"); | ||||
| const XHRUpload = require("@uppy/xhr-upload"); | ||||
|  | ||||
| const compose_state = require("./compose_state"); | ||||
|  | ||||
| exports.make_upload_absolute = function (uri) { | ||||
|     if (uri.startsWith(compose.uploads_path)) { | ||||
|         // Rewrite the URI to a usable link | ||||
|   | ||||
		Reference in New Issue
	
	Block a user