When using CloudKVS to make a multi-device/user app, I extended it (v1.1) to raise a NewData event with a list of changes, as covered in this code snippet.
Since then, I've modified the CloudKVS code (v1.2) so I can call refreshUser and always get a reply even if there are no changes. I've renamed the event from NewData to RefreshDone accordingly.
However, I'm now getting extra events raised (e.g. I call refreshUser and get 2 RefreshDone events raised). I'm not sure why. Here's the relevant code from the ClientKVS class, with just 2 changes ("new in 1.2").
Any help much appreciated!
Since then, I've modified the CloudKVS code (v1.2) so I can call refreshUser and always get a reply even if there are no changes. I've renamed the event from NewData to RefreshDone accordingly.
However, I'm now getting extra events raised (e.g. I call refreshUser and get 2 RefreshDone events raised). I'm not sure why. Here's the relevant code from the ClientKVS class, with just 2 changes ("new in 1.2").
Any help much appreciated!
ClientKVS:
Private Sub ser_BytesToObject (Success As Boolean, NewObject As Object)
Dim ser As B4XSerializator = Sender
Dim m As Map = ser.Tag
If Success Then
Dim items As List = NewObject
If items.Size > 0 Then
For Each itemInstance As item In items
InsertItemIntoData(itemInstance, True)
addItemUserKeyToChangeList(itemInstance) 'new in 1.1
Next
sql.ExecNonQueryBatch("getuser") 'continues with GetUser_NonQueryComplete
Else 'new in 1.2
Dim tempList As List 'new in 1.1
tempList.Initialize 'new in 1.1
CallSub2(mCallback, mEventName & "_refreshdone", tempList) 'return empty list
End If
Else
Log("Error reading server response")
End If
DeleteFromQueue(m.Get("queue_id"))
HandleQueue
End Sub
Private Sub GetUser_NonQueryComplete (Success As Boolean)
If Not(Success) Then
Log("Error writing to database: " & LastException)
End If
' CallSub(mCallback, mEventName & "_newdata")
Dim tempList As List 'new in 1.1
tempList.Initialize 'new in 1.1
tempList.AddAll(changeList) 'new in 1.1
' CallSub2(mCallback, mEventName & "_newdata", tempList) 'new in 1.1
CallSub2(mCallback, mEventName & "_refreshdone", tempList) 'new in 1.2
changeList.Clear 'new in 1.1
End Sub