Browse Source

Fixed issue #1012 - Gui stuck / Error on random switching through overviews.

Martin Edenhofer 7 years ago
parent
commit
9f990f8352

+ 1 - 1
app/assets/javascripts/app/controllers/ticket_overview.coffee

@@ -921,7 +921,7 @@ class Table extends App.Controller
     # get ticket list
     ticketListShow = []
     for ticket in tickets
-      ticketListShow.push App.Ticket.fullLocal(ticket.id)
+      ticketListShow.push App.Ticket.find(ticket.id)
 
     # if customer and no ticket exists, show the following message only
     if !ticketListShow[0] && @permissionCheck('ticket.customer')

+ 2 - 2
app/assets/javascripts/app/lib/app_init/session.coffee

@@ -8,12 +8,12 @@ class App.Session
   @get: ( key ) ->
     if _instance == undefined
       _instance ?= new _sessionSingleton
-    _instance.get( key )
+    _instance.get(key)
 
   @set: ( user ) ->
     if _instance == undefined
       _instance ?= new _sessionSingleton
-    _instance.set( user )
+    _instance.set(user)
 
 class _sessionSingleton extends Spine.Module
   @include App.LogInclude

+ 15 - 5
lib/sessions/backend/base.rb

@@ -11,11 +11,21 @@ class Sessions::Backend::Base
 
   def asset_needed?(record)
     class_name = record.class.to_s
-    if !@asset_lookup || !@asset_lookup[class_name] || !@asset_lookup[class_name][record.id] || @asset_lookup[class_name][record.id] < record.updated_at
-      if !@asset_lookup[class_name]
-        @asset_lookup[class_name] = {}
-      end
-      @asset_lookup[class_name][record.id] = record.updated_at
+    if !@asset_lookup || !@asset_lookup[class_name] || !@asset_lookup[class_name][record.id]
+      @asset_lookup[class_name] ||= {}
+      @asset_lookup[class_name][record.id] = {
+        updated_at: record.updated_at,
+        pushed_at: Time.zone.now,
+      }
+      return true
+    end
+
+    if (!@asset_lookup[class_name][record.id][:updated_at] || @asset_lookup[class_name][record.id][:updated_at] < record.updated_at) ||
+       (!@asset_lookup[class_name][record.id][:pushed_at] || @asset_lookup[class_name][record.id][:pushed_at] > Time.zone.now - 45.seconds)
+      @asset_lookup[class_name][record.id] = {
+        updated_at: record.updated_at,
+        pushed_at: Time.zone.now,
+      }
       return true
     end
     false

+ 40 - 1
test/unit/session_collections_test.rb

@@ -3,7 +3,7 @@ require 'test_helper'
 
 class SessionCollectionsTest < ActiveSupport::TestCase
 
-  test 'c collections' do
+  test 'a collections' do
 
     UserInfo.current_user_id = 1
 
@@ -168,4 +168,43 @@ class SessionCollectionsTest < ActiveSupport::TestCase
     nil
   end
 
+  test 'b assets' do
+    # create users
+    roles  = Role.where(name: %w(Agent Admin))
+    groups = Group.all
+
+    UserInfo.current_user_id = 2
+    agent1 = User.create_or_update(
+      login: 'sessions-assets-1',
+      firstname: 'Session',
+      lastname: "activity stream #{rand(99_999)}",
+      email: 'sessions-assets1@example.com',
+      password: 'agentpw',
+      active: true,
+      roles: roles,
+      groups: groups,
+    )
+    assert(agent1.save, 'create/update agent1')
+
+    assets = {}
+    client1 = Sessions::Backend::Collections::Group.new(agent1, assets, false, '123-1', 2)
+    data = client1.push
+    assert(data[:collection][:Group][groups.first.id])
+    assert(data[:assets][:Group][groups.first.id])
+    travel 10.seconds
+
+    client1 = Sessions::Backend::Collections::Group.new(agent1, assets, false, '123-1', 2)
+    data = client1.push
+    assert(data[:collection][:Group][groups.first.id])
+    assert(data[:assets][:Group][groups.first.id])
+
+    travel 2.minutes
+    client1 = Sessions::Backend::Collections::Group.new(agent1, assets, false, '123-1', 2)
+    data = client1.push
+    assert(data[:collection][:Group][groups.first.id])
+    assert_nil(data[:assets][:Group])
+
+    travel_back
+  end
+
 end

+ 5 - 1
test/unit/session_enhanced_test.rb

@@ -309,7 +309,11 @@ class SessionEnhancedTest < ActiveSupport::TestCase
     }
     #puts "c: #{collections_result.inspect}"
     collections_orig.each { |key, _value|
-      assert_equal(collections_orig[key], collections_result[key], "collection message for #{key} #{type}-check (client_id #{client_id})")
+      if collections_orig[key].nil?
+        assert_nil(collections_result[key], "collection message for #{key} #{type}-check (client_id #{client_id})")
+      else
+        assert_equal(collections_orig[key], collections_result[key], "collection message for #{key} #{type}-check (client_id #{client_id})")
+      end
     }
   end
 end