Hi to all,
I've a big problem saving persistent data from javascript,
I have tested application but seem save but when I read
fields is always void
here's the function that I have already testing on my local shindig and work fine
1) if I use opensocial.IdSpec.PersonId.OWNER to write an error message: invalid IdSpec, only viewer seems to work
in my case Viewer and Owner it's the same people
2) I wonder if it's possible, if viewer is different peolple form owner, read data from Owner
3) Although Viewer seems work still no save data so "theData" is always undefined
Here's the sources
/**
check if a field exist the call start function
*/
function testAppData()
{
prnLn("checking memory ...","out1");
var req = opensocial.newDataRequest();
var p = new Array();
p[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER; //es. OWNER
var idSpec = opensocial.newIdSpec(p);
req.add(req.newFetchPersonAppDataRequest(idSpec, "MdC"), "key_data");
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER), "peopleID");
req.send(handleTestAppData);
}
function handleTestAppData(data){
var error=null;
var isAlreadyInit=false;
if (data.get("key_data").hadError()) {
error = data.get("key_data").getErrorMessage();
prnLn("Error (handleTestAppData): "+error);
return;
}
if (data.get("peopleID").hadError()) {
error = data.get("peopleID").getErrorMessage();
prnLn("Error (handleTestAppData): "+error);
return;
}
var peopleData = data.get("peopleID");
var dest = peopleData.getData();
var data = data.get("key_data").getData();
var theData = data[dest.getId()];
prnLn("ID :"+dest.getId()+"data: "+theData,"out1");
for (i in theData)
{
prnLn(":" + i + ":","out1");
isAlreadyInit=true;
}
if(!isAlreadyInit){
prnLn("please wait, initializing memory...","out1");
var req = opensocial.newDataRequest();
var JsValue = gadgets.json.stringify({"string" : "some data"});
req.add(req.newUpdatePersonAppDataRequest( opensocial.IdSpec.PersonId.VIEWER, "MdC", JsValue),"set_data");
req.send(handleStoreAppId);
prnLn("please wait, initializing memory2...","out1");
}else{
prnLn("memory ok...","out1");
//clearMsg("out1");
start();
}
}