]> git.ktnx.net Git - lsl.git/blobdiff - public/javascripts/lsl.js
check lists version after item submission
[lsl.git] / public / javascripts / lsl.js
index 851d7090df164cf0788e05beab599fc99c4460e8..e5ec5b37300e1c44d5d10f715e728275eaaba2a2 100644 (file)
@@ -20,6 +20,11 @@ function got_lists_version(new_version) {
     if (new_version != lists_version)
         window.setTimeout(load_lists);
 }
+function got_list_version(new_version) {
+    var id_data = selected_list.data('id');
+    if (new_version != id_data.version)
+        window.setTimeout(() => load_list_items(id_data.uri, selected_list));
+}
 function load_list_items(uri, target) {
     $.get(uri)
     .done(item_data => {
@@ -99,26 +104,19 @@ function handle_new_list_submission(){
     return false;
 }
 function new_list_item_submission_done(data) {
-    if (data.lists_version != lists_version) {
-        load_lists();
-        return;
-    }
+    got_lists_version(data.lists_version);
+    got_list_version(data.list_version);
 
     var item_data = selected_list.data('items');
 
-    if (data.list_version != item_data.version + 1) {
-        load_list_items(current_list);
-    }
-    else {
         var new_item = {
             description: $('#new-list-item input[type="text"]').val().trim(),
             done: $('#new-list-item input[type="checkbox"]').prop('checked'),
             version: 1,
         };
         item_data.items.push(new_item);
-        item_data.version = data.list_version;
         add_list_item(new_item);
-    }
+    item_data.version = data.version;
 
     $('#new-list-item input').val('');
 }
@@ -146,7 +144,12 @@ function handle_list_item_state_changed(ev) {
                 version: item_data.version,
                 done: cb.prop('checked')})
         }
-    );
+    )
+    .done(function(resp){
+        item_data.version = resp.version;
+        got_lists_version(resp.lists_version);
+        got_list_version(resp.list_version);
+    });
 }
 $(function(){
     uri_base = $('#page').attr('lsl-uri-base');