зеркало из https://github.com/mozilla/gecko-dev.git
133 строки
4.3 KiB
ReStructuredText
133 строки
4.3 KiB
ReStructuredText
.. _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);
|