From f1806eb64917687924aceed7165f42b5500a32ac Mon Sep 17 00:00:00 2001 From: howard-stearns Date: Fri, 18 Nov 2016 17:05:14 -0800 Subject: [PATCH] server protocols --- interface/resources/qml/AddressBarDialog.qml | 3 +++ libraries/networking/src/AddressManager.cpp | 4 ++++ libraries/networking/src/AddressManager.h | 2 ++ scripts/system/snapshot.js | 22 +++++++++++++++++++- 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/interface/resources/qml/AddressBarDialog.qml b/interface/resources/qml/AddressBarDialog.qml index 38250b8be7..172245876a 100644 --- a/interface/resources/qml/AddressBarDialog.qml +++ b/interface/resources/qml/AddressBarDialog.qml @@ -375,7 +375,10 @@ Window { } function getUserStoryPage(pageNumber, cb) { // cb(error) after all pages of domain data have been added to model var options = [ + 'now=' + new Date().toISOString(), 'include_actions=snapshot,concurrency', + 'restriction=' + (Account.isLoggedIn() ? 'open,hifi' : 'open'), + 'require_online=true', 'protocol=' + encodeURIComponent(AddressManager.protocolVersion()), 'page=' + pageNumber ]; diff --git a/libraries/networking/src/AddressManager.cpp b/libraries/networking/src/AddressManager.cpp index 4089fd4966..05210012ba 100644 --- a/libraries/networking/src/AddressManager.cpp +++ b/libraries/networking/src/AddressManager.cpp @@ -750,6 +750,10 @@ void AddressManager::copyPath() { QApplication::clipboard()->setText(currentPath()); } +QString AddressManager::getDomainId() const { + return DependencyManager::get()->getDomainHandler().getUUID().toString(); +} + void AddressManager::handleShareableNameAPIResponse(QNetworkReply& requestReply) { // make sure that this response is for the domain we're currently connected to auto domainID = DependencyManager::get()->getDomainHandler().getUUID(); diff --git a/libraries/networking/src/AddressManager.h b/libraries/networking/src/AddressManager.h index 0c46f9688b..366fc5dfab 100644 --- a/libraries/networking/src/AddressManager.h +++ b/libraries/networking/src/AddressManager.h @@ -40,6 +40,7 @@ class AddressManager : public QObject, public Dependency { Q_PROPERTY(QString hostname READ getHost) Q_PROPERTY(QString pathname READ currentPath) Q_PROPERTY(QString placename READ getPlaceName) + Q_PROPERTY(QString domainId READ getDomainId) public: Q_INVOKABLE QString protocolVersion(); using PositionGetter = std::function; @@ -68,6 +69,7 @@ public: const QUuid& getRootPlaceID() const { return _rootPlaceID; } const QString& getPlaceName() const { return _shareablePlaceName.isEmpty() ? _placeName : _shareablePlaceName; } + QString getDomainId() const; const QString& getHost() const { return _host; } diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 5eebadd02f..daee40d576 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -124,6 +124,26 @@ function onClicked() { }, SNAPSHOT_DELAY); } +function isDomainOpen(id) { + var request = new XMLHttpRequest(); + var options = [ + 'now=' + new Date().toISOString(), + 'include_actions=concurrency', + 'domain_id=' + id.slice(1, -1), + 'restriction=open,hifi' // If we're sharing, we're logged in + // If we're here, protocol matches, and it is online + ]; + var url = "https://metaverse.highfidelity.com/api/v1/user_stories?" + options.join('&'); + request.open("GET", url, false); + request.send(); + if (request.status != 200) { + return false; + } + var response = JSON.parse(request.response); // Not parsed for us. + return (response.status === 'success') && + response.total_entries; +} + function resetButtons(path, notify) { // show overlays if they were on if (resetOverlays) { @@ -143,7 +163,7 @@ function resetButtons(path, notify) { confirmShare([ { localPath: path }, { - canShare: !!location.placename, + canShare: !!isDomainOpen(location.domainId), openFeedAfterShare: shouldOpenFeedAfterShare() } ]);