<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs title="Data API Howto - ReadWrite Example (0.7)">
    <Require feature="opensocial-0.7" />
  </ModulePrefs>
  <Content type="html">
  <![CDATA[
    <script type="text/javascript">

    gadgets.util.registerOnLoadHandler(request);

    function request() {
      var sampleData = "Sample storage data!  The current time is " + new Date();
      var req = opensocial.newDataRequest();
      req.add(req.newUpdatePersonAppDataRequest(opensocial.DataRequest.PersonId.VIEWER, "datakey", sampleData), "status");
      req.send(response);
    };

    function response(data) {
      var error = data.get("status").hadError();
      if (error) {
        print("Error on update person data request.");
      } else {
        print("Update person data request successful.");
        fetchStoredData();
      }
    } ;

    function fetchStoredData() {
      var fields = [ "datakey" ]; 
      var req = opensocial.newDataRequest();
      req.add(req.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER), "viewer"); //Needed to get the viewer's ID
      req.add(req.newFetchPersonAppDataRequest(opensocial.DataRequest.PersonId.VIEWER, fields), "returnData");
      req.send(showData);
    };

    function showData(returnData) {
      var viewer = returnData.get("viewer").getData();
      var viewer_data = returnData.get("returnData").getData()[viewer.getId()]; //Here's why we needed to fetch the viewer
      var output = [ '<br/>Person data fetch successful.',
                     '<br/>  -->Retrieved data: "',
                     viewer_data["datakey"],
                     '" from viewer: ',
                     viewer.getId() ].join("");
      print(output);
    };

    function print(txt) {
      document.getElementById("main").innerHTML += txt;
    };
    
    </script>
    <div id="main"/>
    ]]>
  </Content>
</Module>


