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*/
|
/* FLO Cloud operations to send/request application data*/
|
||||||
const floCloudAPI = {
|
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
|
//send Any message to supernode cloud storage
|
||||||
sendApplicationData: function(message, type, options = {}){
|
sendApplicationData: function(message, type, options = {}){
|
||||||
return new Promise((resolve,reject) => {
|
return new Promise((resolve,reject) => {
|
||||||
@ -6876,137 +6931,81 @@
|
|||||||
|
|
||||||
//send General Data
|
//send General Data
|
||||||
sendGeneralData: function(message, type, options = {}){
|
sendGeneralData: function(message, type, options = {}){
|
||||||
this.sendApplicationData(message, type, options)
|
return new Promise((resolve,reject) => {
|
||||||
.then(result => reactor.dispatchEvent('logHandle',result))
|
this.sendApplicationData(message, type, options)
|
||||||
.catch(error => reactor.dispatchEvent('errorHandle',error))
|
.then(result => resolve(result))
|
||||||
|
.catch(error => reject(error))
|
||||||
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
//request General Data
|
//request General Data
|
||||||
requestGeneralData: function(type, options = {}){
|
requestGeneralData: function(type, options = {}){
|
||||||
var filterStr = JSON.stringify({application: options.application || floGlobals.application, type: type, comment: options.comment})
|
return new Promise((resolve,reject) => {
|
||||||
options.type = type
|
var filterStr = JSON.stringify({application: options.application || floGlobals.application, type: type, comment: options.comment})
|
||||||
options.lowerVectorClock = options.lowerVectorClock || floGlobals.generalVC[filterStr] + 1
|
options.type = type
|
||||||
this.requestApplicationData(options)
|
options.lowerVectorClock = options.lowerVectorClock || floGlobals.generalVC[filterStr] + 1
|
||||||
.then(dataSet => reactor.dispatchEvent("storeGeneralData", {filterStr: filterStr, dataSet:dataSet}))
|
this.requestApplicationData(options).then(dataSet => {
|
||||||
.catch(error => reactor.dispatchEvent('errorHandle',error))
|
this.util.storeGeneralData(filterStr, dataSet)
|
||||||
|
resolve('General Data Updated')
|
||||||
|
}).catch(error => reject(error))
|
||||||
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
//request an object data from supernode cloud
|
//request an object data from supernode cloud
|
||||||
requestObjectData: function(objectName, options = {}){
|
requestObjectData: function(objectName, options = {}){
|
||||||
var request = {
|
return new Promise((resolve,reject) => {
|
||||||
receiverID: options.receiverID || floGlobals.adminID,
|
var request = {
|
||||||
senderIDs: (options.senderIDs === false) ? false: options.senderIDs || floGlobals.subAdmins,
|
receiverID: options.receiverID || floGlobals.adminID,
|
||||||
application: options.application || floGlobals.application,
|
senderIDs: (options.senderIDs === false) ? false: options.senderIDs || floGlobals.subAdmins,
|
||||||
comment: options.comment,
|
application: options.application || floGlobals.application,
|
||||||
type: `${objectName}@Reset`,
|
comment: options.comment,
|
||||||
lowerVectorClock: floGlobals.vectorClock[objectName]+1,
|
type: `${objectName}@Reset`,
|
||||||
mostRecent: true
|
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 => {
|
||||||
request.type = `${objectName}@Update`
|
this.util.resetData(filterStr, dataSet)
|
||||||
request.lowerVectorClock = floGlobals.vectorClock[objectName]+1
|
request.type = `${objectName}@Update`
|
||||||
request.mostRecent = false
|
request.lowerVectorClock = floGlobals.vectorClock[objectName]+1
|
||||||
floSupernode.requestData(JSON.stringify(request), request.receiverID)
|
request.mostRecent = false
|
||||||
.then(updateData => reactor.dispatchEvent('updateData', updateData))
|
floSupernode.requestData(JSON.stringify(request), request.receiverID).then(dataSet => {
|
||||||
}).catch(error => reactor.dispatchEvent('errorHandle', error))
|
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
|
//reset or initialize an object and send it to cloud
|
||||||
resetObjectData: function(newObject, objectName, options = {}){
|
resetObjectData: function(newObject, objectName, options = {}){
|
||||||
var message = {
|
return new Promise((resolve,reject) => {
|
||||||
division: options.division || floGlobals.division,
|
var message = {
|
||||||
object: objectName,
|
division: options.division || floGlobals.division,
|
||||||
vectorClock: floGlobals.vectorClock[objectName],
|
object: objectName,
|
||||||
reset: newObject
|
vectorClock: floGlobals.vectorClock[objectName],
|
||||||
}
|
reset: newObject
|
||||||
this.sendApplicationData(message, `${objectName}@Reset`, options)
|
}
|
||||||
.then(result => reactor.dispatchEvent('logHandle',result))
|
this.sendApplicationData(message, `${objectName}@Reset`, options)
|
||||||
.catch(error => reactor.dispatchEvent('errorHandle',error))
|
.then(result => resolve(result))
|
||||||
|
.catch(error => reject(error))
|
||||||
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
//update the diff and send it to cloud
|
//update the diff and send it to cloud
|
||||||
updateObjectData: function(oldObject, newObject, objectName, options = {}){
|
updateObjectData: function(oldObject, newObject, objectName, options = {}){
|
||||||
var message = {
|
return new Promise((resolve,reject) => {
|
||||||
division: options.division || floGlobals.division,
|
var message = {
|
||||||
object: objectName,
|
division: options.division || floGlobals.division,
|
||||||
vectorClock: floGlobals.vectorClock[objectName],
|
object: objectName,
|
||||||
diff: findDifference(oldObject, newObject)
|
vectorClock: floGlobals.vectorClock[objectName],
|
||||||
}
|
diff: findDifference(oldObject, newObject)
|
||||||
this.sendApplicationData(message, `${objectName}@Update`, options)
|
}
|
||||||
.then(result => reactor.dispatchEvent('logHandle',result))
|
this.sendApplicationData(message, `${objectName}@Update`, options)
|
||||||
.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>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user