diff options
Diffstat (limited to 'services/cloudsync/docs/example.rst')
-rw-r--r-- | services/cloudsync/docs/example.rst | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/services/cloudsync/docs/example.rst b/services/cloudsync/docs/example.rst new file mode 100644 index 000000000..33d0f0531 --- /dev/null +++ b/services/cloudsync/docs/example.rst @@ -0,0 +1,132 @@ +.. _cloudsync_example: + +======= +Example +======= + +.. code-block:: javascript + + 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); |