Add spinner.BAIL for cancelling spinner without launching callback.
This commit is contained in:
		
							parent
							
								
									0518765f33
								
							
						
					
					
						commit
						98fae96a8a
					
				
					 2 changed files with 27 additions and 7 deletions
				
			
		|  | @ -1,5 +1,17 @@ | ||||||
| var spinner = {}; | var spinner = {}; | ||||||
| 
 | 
 | ||||||
|  | /* | ||||||
|  | In general, spinners are used for functions that launch a callback, and the | ||||||
|  | callback will close the spinner after it runs. But, if your initial function | ||||||
|  | decides not to launch the callback (insufficient parameters, failed clientside | ||||||
|  | checks, etc.), you can have it return spinner.BAIL and the spinners will close | ||||||
|  | immediately. Of course, you're always welcome to use | ||||||
|  | window[button.dataset.spinnerCloser](), but this return value means you don't | ||||||
|  | need to pull the button into a variable, as long as you weren't using the | ||||||
|  | return value anyway. | ||||||
|  | */ | ||||||
|  | spinner.BAIL = "spinner.BAIL"; | ||||||
|  | 
 | ||||||
| spinner.Spinner = | spinner.Spinner = | ||||||
| function Spinner(element) | function Spinner(element) | ||||||
| { | { | ||||||
|  | @ -32,10 +44,12 @@ function Spinner(element) | ||||||
| 
 | 
 | ||||||
| spinner.spinner_button_index = 0; | spinner.spinner_button_index = 0; | ||||||
| spinner.button_spinner_groups = {}; | spinner.button_spinner_groups = {}; | ||||||
| // When a group member is closing, it will call the closer on all other members
 | /* | ||||||
| // in the group. Of course, this would recurse forever without some kind of
 | When a group member is closing, it will call the closer on all other members | ||||||
| // flagging, so this dict will hold group_id:true if a close is in progress,
 | in the group. Of course, this would recurse forever without some kind of | ||||||
| // and be empty otherwise.
 | flagging, so this dict will hold group_id:true if a close is in progress, | ||||||
|  | and be empty otherwise. | ||||||
|  | */ | ||||||
| spinner.spinner_group_closing = {}; | spinner.spinner_group_closing = {}; | ||||||
| 
 | 
 | ||||||
| spinner.add_to_spinner_group = | spinner.add_to_spinner_group = | ||||||
|  | @ -161,7 +175,12 @@ function init_button_with_spinner() | ||||||
|             { |             { | ||||||
|                 window[button.dataset.spinnerOpener](); |                 window[button.dataset.spinnerOpener](); | ||||||
|             } |             } | ||||||
|             return wrapped_onclick(); |             const ret = wrapped_onclick(); | ||||||
|  |             if (ret === spinner.BAIL) | ||||||
|  |             { | ||||||
|  |                 window[button.dataset.spinnerCloser](); | ||||||
|  |             } | ||||||
|  |             return ret; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         spinner.spinner_button_index += 1; |         spinner.spinner_button_index += 1; | ||||||
|  |  | ||||||
|  | @ -76,10 +76,11 @@ common.bind_box_to_button(box, button); | ||||||
| 
 | 
 | ||||||
| function add_channel_form() | function add_channel_form() | ||||||
| { | { | ||||||
|     if (box.value !== "") |     if (box.value === "") | ||||||
|     { |     { | ||||||
|         api.channels.add_channel(box.value, add_channel_callback); |         return spinner.BAIL; | ||||||
|     } |     } | ||||||
|  |     api.channels.add_channel(box.value, add_channel_callback); | ||||||
| } | } | ||||||
| function add_channel_callback(response) | function add_channel_callback(response) | ||||||
| { | { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue