#3808 Show the comment on issues in JS if the SSE isn't responding
Merged 5 years ago by pingou. Opened 5 years ago by pingou.

file modified
+41 -6
@@ -917,6 +917,7 @@ 

    console.log('Submitting form:');

    console.log(form);

    set_ui_for_comment(true);

+ 

    var _data = $(form).serialize();

    var btn = $(document.activeElement);

    if (btn[0].name == 'drop_comment'){
@@ -924,11 +925,15 @@ 

      set_ui_for_comment(false);

      return true;

    }

-   if (!sse || source.readyState != 1) {

-     $(form).off('submit');

-     form.submit();

-     return false;

-   }

+ 

+   /* Keep some variable in memory before sending them in case the SSE is down */

+   var _url = form.action;

+   var _comment = $(form).find('#comment').val();

+   var _commit_id = null;

+   var _line = null;

+   var _token = "{{ form.csrf_token.current_token }}";

+   var _base_url = _url.split('?')[0];

+ 

    var _url = form.action + "?js=1";

    $.post( _url, _data )

      .done(function(data) {
@@ -944,7 +949,37 @@ 

          $('#comments').find('.edit_comment').remove();

          $( ".issue-metadata-form" ).hide();

          $( ".issue-metadata-display" ).show();

-         set_ui_for_comment(false);

+         if (!sse || source.readyState != 1) {

+             console.log('no sse, adding the comment manually');

+             $.ajax({

+               url: "{{ url_for('ui_ns.markdown_preview') }}" ,

+               type: 'POST',

+               data: {

+                 content: _comment,

+                 csrf_token: _token,

+               },

+               dataType: 'html',

+               success: function(res) {

+                 var _comment = emojione.toImage(res);

+                 var data = {

+                     comment_added: _comment,

+                     comment_user: "{{ g.fas_user.username }}",

+                     comment_date: Date.now(),

+                     avatar_url: "{{ g.fas_user.email | avatar_url(16) }}",

+                 }

+                 process_event(

+                     data,

+                     "{{ issue.uid }}",

+                     "{{ g.fas_user.username if g.authenticated or '' }}");

+                 set_ui_for_comment(false);

+                 setup_reply_btns()

+                 return false;

+               }

+             });

+             return false;

+         } else {

+             set_ui_for_comment(false);

+         }

        } else {

          // Make the browser submit the form sync

          $(form).off('submit');

@@ -211,7 +211,7 @@ 

        {{ mergeform.csrf_token }}

        <button type="submit" value="Reopen" id="reopen_pr"

                class="btn btn-sm btn-outline-danger" title="Reopen PR">

-         Reopen Pull Request 

+         Reopen Pull Request

        </button>

        </form>

     {% endif %}
@@ -1088,7 +1088,7 @@ 

            $(item.parent().children()[1]).show()

          }

          item.remove();

-         if (!sse) {

+         if (!sse || source.readyState != 1) {

              console.log('no sse, adding the comment manually');

              $.ajax({

                url: "{{ url_for('ui_ns.markdown_preview') }}" ,
@@ -1113,6 +1113,7 @@ 

                      "{{ request.uid }}",

                      "{{ g.fas_user.username if g.authenticated or '' }}");

                  set_ui_for_comment(false);

+                 setup_reply_btns()

                  return false;

                }

              });