ExampleΒΆ

Cu.import("resource://gre/modules/CloudSync.jsm");

let HelloWorld = {
  onLoad: function() {
    let cloudSync = CloudSync();
    console.log("CLOUDSYNC -- hello world", cloudSync.local.id, cloudSync.local.name, cloudSync.adapters);
    cloudSync.adapters.register('helloworld', {});
    console.log("CLOUDSYNC -- " + JSON.stringify(cloudSync.adapters.getAdapterNames()));


    cloudSync.tabs.addEventListener("change", function() {
      console.log("tab change");
      cloudSync.tabs.getLocalTabs().then(
        function(records) {
          console.log(JSON.stringify(records));
        }
      );
    });

    cloudSync.tabs.getLocalTabs().then(
      function(records) {
        console.log(JSON.stringify(records));
      }
    );

    let remoteClient = {
      id: "001",
      name: "FakeClient",
    };
    let remoteTabs1 = [
      {url:"https://www.google.ca",title:"Google",icon:"https://www.google.ca/favicon.ico",lastUsed:Date.now()},
    ];
    let remoteTabs2 = [
      {url:"https://www.google.ca",title:"Google Canada",icon:"https://www.google.ca/favicon.ico",lastUsed:Date.now()},
      {url:"http://www.reddit.com",title:"Reddit",icon:"http://www.reddit.com/favicon.ico",lastUsed:Date.now()},
    ];
    cloudSync.tabs.mergeRemoteTabs(remoteClient, remoteTabs1).then(
      function() {
        return cloudSync.tabs.mergeRemoteTabs(remoteClient, remoteTabs2);
      }
    ).then(
      function() {
        return cloudSync.tabs.getRemoteTabs();
      }
    ).then(
      function(tabs) {
        console.log("remote tabs:", tabs);
      }
    );

    cloudSync.bookmarks.getRootFolder("Hello World").then(
      function(rootFolder) {
        console.log(rootFolder.name, rootFolder.id);
        rootFolder.addEventListener("add", function(guid) {
          console.log("CLOUDSYNC -- bookmark item added: " + guid);
          rootFolder.getLocalItemsById([guid]).then(
            function(items) {
              console.log("CLOUDSYNC -- items: " + JSON.stringify(items));
            }
          );
        });
        rootFolder.addEventListener("remove", function(guid) {
          console.log("CLOUDSYNC -- bookmark item removed: " + guid);
          rootFolder.getLocalItemsById([guid]).then(
            function(items) {
              console.log("CLOUDSYNC -- items: " + JSON.stringify(items));
            }
          );
        });
        rootFolder.addEventListener("change", function(guid) {
          console.log("CLOUDSYNC -- bookmark item changed: " + guid);
          rootFolder.getLocalItemsById([guid]).then(
            function(items) {
              console.log("CLOUDSYNC -- items: " + JSON.stringify(items));
            }
          );
        });
        rootFolder.addEventListener("move", function(guid) {
          console.log("CLOUDSYNC -- bookmark item moved: " + guid);
          rootFolder.getLocalItemsById([guid]).then(
            function(items) {
              console.log("CLOUDSYNC -- items: " + JSON.stringify(items));
            }
          );
        });

        function logLocalItems() {
          return rootFolder.getLocalItems().then(
            function(items) {
              console.log("CLOUDSYNC -- local items: " + JSON.stringify(items));
            }
          );
        }

        let items = [
            {"id":"9fdoci2KOME6","type":rootFolder.FOLDER,"parent":rootFolder.id,"title":"My Bookmarks 1"},
            {"id":"1fdoci2KOME5","type":rootFolder.FOLDER,"parent":rootFolder.id,"title":"My Bookmarks 2"},
            {"id":"G_UL4ZhOyX8m","type":rootFolder.BOOKMARK,"parent":"1fdoci2KOME5","title":"reddit: the front page of the internet","uri":"http://www.reddit.com/"},
          ];
        function mergeSomeItems() {
          return rootFolder.mergeRemoteItems(items);
        }

        logLocalItems().then(
          mergeSomeItems
        ).then(
          function(processedItems) {
            console.log("!!!", processedItems);
            console.log("merge complete");
          },
          function(error) {
            console.log("merge failed:", error);
          }
        ).then(
          logLocalItems
        );
      }
    );


  },
};

window.addEventListener("load", function(e) { HelloWorld.onLoad(e); }, false);