floCloudAPI: moving the reactor events to util and Promisifying all canon operations
This commit is contained in:
parent
afa8714d0e
commit
e42a972f12
@ -6835,6 +6835,61 @@
|
||||
/* FLO Cloud operations to send/request application data*/
|
||||
const floCloudAPI = {
|
||||
|
||||
util:{
|
||||
resetData: function(dataSet){
|
||||
try{
|
||||
dataSet = JSON.parse(dataSet);
|
||||
console.log(dataSet)
|
||||
for(vc in dataSet){
|
||||
var message = dataSet[vc].message;
|
||||
if(message.reset){
|
||||
floGlobals.appObjects[message.object] = message.reset
|
||||
floGlobals.vectorClock[message.object] = vc
|
||||
compactIDB.writeData("appObjects", floGlobals.appObjects[message.object], message.object)
|
||||
compactIDB.writeData("vectorClocks", vc, message.object)
|
||||
}
|
||||
}
|
||||
}catch(error){
|
||||
console.error(error)
|
||||
}
|
||||
},
|
||||
|
||||
updateData: function(dataSet){
|
||||
try{
|
||||
dataSet = JSON.parse(dataSet);
|
||||
console.log(dataSet)
|
||||
for(vc in dataSet){
|
||||
var message = dataSet[vc].message;
|
||||
if(message.diff){
|
||||
floGlobals.appObjects[message.object] = mergeDifference(floGlobals.appObjects[message.object], message.diff)
|
||||
compactIDB.writeData("appObjects",floGlobals.appObjects[message.object], message.object)
|
||||
}
|
||||
floGlobals.vectorClock[message.object] = vc
|
||||
compactIDB.writeData("vectorClocks", vc, message.object)
|
||||
}
|
||||
}catch(error){
|
||||
console.error(error)
|
||||
}
|
||||
},
|
||||
|
||||
storeGeneralData: function(event){
|
||||
try{
|
||||
dataSet = JSON.parse(event.dataSet);
|
||||
console.log(dataSet)
|
||||
if(!Array.isArray(floGlobals.generalData[event.filterStr]))
|
||||
floGlobals.generalData[event.filterStr] = []
|
||||
for(vc in dataSet){
|
||||
floGlobals.generalData[event.filterStr].push({sender: dataSet[vc].senderID, vectorClock: vc, message: dataSet[vc].message})
|
||||
compactIDB.writeData("generalData", floGlobals.generalData[event.filterStr], event.filterStr)
|
||||
floGlobals.generalVC[event.filterStr] = vc
|
||||
compactIDB.writeData("generalVC", vc, event.filterStr)
|
||||
}
|
||||
}catch(error){
|
||||
console.error(error)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//send Any message to supernode cloud storage
|
||||
sendApplicationData: function(message, type, options = {}){
|
||||
return new Promise((resolve,reject) => {
|
||||
@ -6876,23 +6931,29 @@
|
||||
|
||||
//send General Data
|
||||
sendGeneralData: function(message, type, options = {}){
|
||||
return new Promise((resolve,reject) => {
|
||||
this.sendApplicationData(message, type, options)
|
||||
.then(result => reactor.dispatchEvent('logHandle',result))
|
||||
.catch(error => reactor.dispatchEvent('errorHandle',error))
|
||||
.then(result => resolve(result))
|
||||
.catch(error => reject(error))
|
||||
})
|
||||
},
|
||||
|
||||
//request General Data
|
||||
requestGeneralData: function(type, options = {}){
|
||||
return new Promise((resolve,reject) => {
|
||||
var filterStr = JSON.stringify({application: options.application || floGlobals.application, type: type, comment: options.comment})
|
||||
options.type = type
|
||||
options.lowerVectorClock = options.lowerVectorClock || floGlobals.generalVC[filterStr] + 1
|
||||
this.requestApplicationData(options)
|
||||
.then(dataSet => reactor.dispatchEvent("storeGeneralData", {filterStr: filterStr, dataSet:dataSet}))
|
||||
.catch(error => reactor.dispatchEvent('errorHandle',error))
|
||||
this.requestApplicationData(options).then(dataSet => {
|
||||
this.util.storeGeneralData(filterStr, dataSet)
|
||||
resolve('General Data Updated')
|
||||
}).catch(error => reject(error))
|
||||
})
|
||||
},
|
||||
|
||||
//request an object data from supernode cloud
|
||||
requestObjectData: function(objectName, options = {}){
|
||||
return new Promise((resolve,reject) => {
|
||||
var request = {
|
||||
receiverID: options.receiverID || floGlobals.adminID,
|
||||
senderIDs: (options.senderIDs === false) ? false: options.senderIDs || floGlobals.subAdmins,
|
||||
@ -6902,18 +6963,22 @@
|
||||
lowerVectorClock: floGlobals.vectorClock[objectName]+1,
|
||||
mostRecent: true
|
||||
}
|
||||
floSupernode.requestData(JSON.stringify(request),request.receiverID).then(resetData => {
|
||||
reactor.dispatchEvent('resetData', resetData);
|
||||
floSupernode.requestData(JSON.stringify(request),request.receiverID).then(dataSet => {
|
||||
this.util.resetData(filterStr, dataSet)
|
||||
request.type = `${objectName}@Update`
|
||||
request.lowerVectorClock = floGlobals.vectorClock[objectName]+1
|
||||
request.mostRecent = false
|
||||
floSupernode.requestData(JSON.stringify(request), request.receiverID)
|
||||
.then(updateData => reactor.dispatchEvent('updateData', updateData))
|
||||
}).catch(error => reactor.dispatchEvent('errorHandle', error))
|
||||
floSupernode.requestData(JSON.stringify(request), request.receiverID).then(dataSet => {
|
||||
this.util.updateData(filterStr, dataSet)
|
||||
resolve('Object Data Updated')
|
||||
}).catch(error => reject(error))
|
||||
}).catch(error => reject(error))
|
||||
})
|
||||
},
|
||||
|
||||
//reset or initialize an object and send it to cloud
|
||||
resetObjectData: function(newObject, objectName, options = {}){
|
||||
return new Promise((resolve,reject) => {
|
||||
var message = {
|
||||
division: options.division || floGlobals.division,
|
||||
object: objectName,
|
||||
@ -6921,12 +6986,14 @@
|
||||
reset: newObject
|
||||
}
|
||||
this.sendApplicationData(message, `${objectName}@Reset`, options)
|
||||
.then(result => reactor.dispatchEvent('logHandle',result))
|
||||
.catch(error => reactor.dispatchEvent('errorHandle',error))
|
||||
.then(result => resolve(result))
|
||||
.catch(error => reject(error))
|
||||
})
|
||||
},
|
||||
|
||||
//update the diff and send it to cloud
|
||||
updateObjectData: function(oldObject, newObject, objectName, options = {}){
|
||||
return new Promise((resolve,reject) => {
|
||||
var message = {
|
||||
division: options.division || floGlobals.division,
|
||||
object: objectName,
|
||||
@ -6934,79 +7001,11 @@
|
||||
diff: findDifference(oldObject, newObject)
|
||||
}
|
||||
this.sendApplicationData(message, `${objectName}@Update`, options)
|
||||
.then(result => reactor.dispatchEvent('logHandle',result))
|
||||
.catch(error => reactor.dispatchEvent('errorHandle',error))
|
||||
.then(result => resolve(result))
|
||||
.catch(error => reject(error))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
reactor.registerEvent('resetData');
|
||||
reactor.addEventListener('resetData', function(dataSet){
|
||||
try{
|
||||
dataSet = JSON.parse(dataSet);
|
||||
console.log(dataSet)
|
||||
for(vc in dataSet){
|
||||
//if(floGlobals.subAdmins.includes(dataSet[vc].senderID)){
|
||||
var message = dataSet[vc].message;
|
||||
if(message.reset){
|
||||
floGlobals.appObjects[message.object] = message.reset
|
||||
floGlobals.vectorClock[message.object] = vc
|
||||
compactIDB.writeData("appObjects", floGlobals.appObjects[message.object], message.object)
|
||||
compactIDB.writeData("vectorClocks", vc, message.object)
|
||||
}
|
||||
//}
|
||||
}
|
||||
}catch(error){
|
||||
console.log(error)
|
||||
}
|
||||
});
|
||||
|
||||
reactor.registerEvent('updateData');
|
||||
reactor.addEventListener('updateData', function(dataSet){
|
||||
try{
|
||||
dataSet = JSON.parse(dataSet);
|
||||
console.log(dataSet)
|
||||
for(vc in dataSet){
|
||||
//if(floGlobals.subAdmins.includes(dataSet[vc].senderID)){
|
||||
var message = dataSet[vc].message;
|
||||
if(message.diff){
|
||||
floGlobals.appObjects[message.object] = mergeDifference(floGlobals.appObjects[message.object], message.diff)
|
||||
compactIDB.writeData("appObjects",floGlobals.appObjects[message.object], message.object)
|
||||
}
|
||||
//}
|
||||
floGlobals.vectorClock[message.object] = vc
|
||||
compactIDB.writeData("vectorClocks", vc, message.object)
|
||||
}
|
||||
}catch(error){
|
||||
console.log(error)
|
||||
}
|
||||
});
|
||||
|
||||
reactor.registerEvent('storeGeneralData');
|
||||
reactor.addEventListener('storeGeneralData', function(event){
|
||||
try{
|
||||
dataSet = JSON.parse(event.dataSet);
|
||||
console.log(dataSet)
|
||||
if(!Array.isArray(floGlobals.generalData[event.filterStr]))
|
||||
floGlobals.generalData[event.filterStr] = []
|
||||
for(vc in dataSet){
|
||||
floGlobals.generalData[event.filterStr].push({sender: dataSet[vc].senderID, vectorClock: vc, message: dataSet[vc].message})
|
||||
compactIDB.writeData("generalData", floGlobals.generalData[event.filterStr], event.filterStr)
|
||||
floGlobals.generalVC[event.filterStr] = vc
|
||||
compactIDB.writeData("generalVC", vc, event.filterStr)
|
||||
}
|
||||
}catch(error){
|
||||
console.log(error)
|
||||
}
|
||||
});
|
||||
|
||||
reactor.registerEvent('errorHandle');
|
||||
reactor.addEventListener('errorHandle', function(event){
|
||||
console.log(event)
|
||||
});
|
||||
reactor.registerEvent('logHandle');
|
||||
reactor.addEventListener('logHandle', function(event){
|
||||
console.log(event)
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user