Checkpoint

This commit is contained in:
Zach Fox 2017-04-26 16:22:01 -07:00
parent b26f31704b
commit a24a48843f
4 changed files with 234 additions and 159 deletions

View file

@ -86,71 +86,49 @@ input[type=button].naked:active {
} }
.gifLabel { .gifLabel {
position:absolute;
left: 15px;
top: 10px;
font-family: Raleway-SemiBold; font-family: Raleway-SemiBold;
font-size: 18px; font-size: 18px;
color: white; color: white;
float: left;
text-shadow: 2px 2px 3px #000000; text-shadow: 2px 2px 3px #000000;
margin-left: 20px;
}
.shareButtonDiv {
display: flex;
align-items: center;
font-family: Raleway-SemiBold;
font-size: 14px;
color: white;
float: right;
text-shadow: 2px 2px 3px #000000;
width: 100px;
height: 100%;
margin-right: 10px;
}
.shareButtonLabel {
vertical-align: middle;
}
.shareButton {
background-color: white;
width: 40px;
height: 40px;
border-radius: 50%;
border-width: 0;
margin-left: 5px;
}
.shareButton:hover {
background-color: #afafaf;
}
.shareButton:active {
background-color: white;
} }
/*
// END styling of snapshot pane and its contents
*/
/* /*
// START styling of share overlay // START styling of share bar
*/ */
.shareOverlayDiv {
text-align: center;
}
.shareControls { .shareControls {
text-align: left;
display: flex; display: flex;
justify-content: center; justify-content: space-between;
flex-direction: row; flex-direction: row;
align-items: flex-start; align-items: center;
height: 50px; height: 50px;
line-height: 60px;
width: calc(100% - 8px);
position: absolute;
bottom: 4px;
left: 4px;
right: 4px;
} }
.shareOverlayLabel { .shareButtons {
line-height: 75px; display: flex;
align-items: center;
margin-left: 40px;
height: 100%;
} }
.hifiShareControls { .blastToConnections {
text-align: left; text-align: left;
width: 40%; margin-right: 25px;
margin-left: 10%; height: 29px;
} }
.buttonShareControls { .shareWithEveryone {
text-align: left; text-align: left;
height: 50px; margin-right: 8px;
line-height: 50px; height: 29px;
width: 40%;
margin-right: 10%;
} }
.facebookButton { .facebookButton {
background-image: url(../img/fb_logo.png); background-image: url(../img/fb_logo.png);
@ -166,12 +144,65 @@ input[type=button].naked:active {
display: inline-block; display: inline-block;
margin-right: 8px; margin-right: 8px;
} }
.showShareButtonsButtonDiv {
display: inline-flex;
align-items: center;
font-family: Raleway-SemiBold;
font-size: 14px;
color: white;
text-shadow: 2px 2px 3px #000000;
height: 100%;
margin-right: 10px;
}
.showShareButton {
width: 40px;
height: 40px;
border-radius: 50%;
border-width: 0;
margin-left: 5px;
outline: none;
}
.showShareButton.active {
border-color: #00b4ef;
border-width: 3px;
background-color: white;
}
.showShareButton.active:hover {
background-color: #afafaf;
}
.showShareButton.active:active {
background-color: white;
}
.showShareButton.inactive {
border-width: 0;
background-color: white;
}
.showShareButton.inactive:hover {
background-color: #afafaf;
}
.showShareButton.inactive:active {
background-color: white;
}
.showShareButtonDots {
display: flex;
width: 32px;
height: 40px;
position: absolute;
right: 14px;
pointer-events: none;
}
.showShareButtonDots > span {
width: 10px;
height: 10px;
margin: auto;
background-color: #0093C5;
border-radius: 50%;
border-width: 0;
display: inline;
}
/* /*
// END styling of share overlay // END styling of share overlay
*/ */
/*
// END styling of snapshot pane and its contents
*/
/* /*
// START styling of snapshot controls (bottom panel) and its contents // START styling of snapshot controls (bottom panel) and its contents

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -31,7 +31,7 @@ function showSetupComplete() {
snapshotImagesDiv.innerHTML = '<img class="centeredImage" src="./img/snapshotIcon.png" alt="Snapshot Instructions" width="64" height="64"/>' + snapshotImagesDiv.innerHTML = '<img class="centeredImage" src="./img/snapshotIcon.png" alt="Snapshot Instructions" width="64" height="64"/>' +
'<br/>' + '<br/>' +
"<h4>You're all set!</h4>" + "<h4>You're all set!</h4>" +
'<p>Try taking a snapshot by pressing the button below.</p>'; '<p>Try taking a snapshot by pressing the red button below.</p>';
} }
function chooseSnapshotLocation() { function chooseSnapshotLocation() {
EventBridge.emitWebEvent(JSON.stringify({ EventBridge.emitWebEvent(JSON.stringify({
@ -54,25 +54,30 @@ function addImage(image_data, isGifLoading, isShowingPreviousImages, canSharePre
if (!image_data.localPath) { if (!image_data.localPath) {
return; return;
} }
var div = document.createElement("DIV");
var id = "p" + idCounter++; var id = "p" + idCounter++;
// imageContainer setup
var imageContainer = document.createElement("DIV");
imageContainer.id = id;
imageContainer.style.width = "100%";
imageContainer.style.height = "251px";
imageContainer.style.display = "flex";
imageContainer.style.justifyContent = "center";
imageContainer.style.alignItems = "center";
imageContainer.style.position = "relative";
// img setup
var img = document.createElement("IMG"); var img = document.createElement("IMG");
div.id = id;
img.id = id + "img"; img.id = id + "img";
div.style.width = "100%";
div.style.height = "" + 502 / imageCount + "px";
div.style.display = "flex";
div.style.justifyContent = "center";
div.style.alignItems = "center";
div.style.position = "relative";
if (imageCount > 1) { if (imageCount > 1) {
img.setAttribute("class", "multiple"); img.setAttribute("class", "multiple");
} }
img.src = image_data.localPath; img.src = image_data.localPath;
div.appendChild(img); imageContainer.appendChild(img);
document.getElementById("snapshot-images").appendChild(div); document.getElementById("snapshot-images").appendChild(imageContainer);
var isGif = img.src.split('.').pop().toLowerCase() === "gif";
paths.push(image_data.localPath); paths.push(image_data.localPath);
var isGif = img.src.split('.').pop().toLowerCase() === "gif";
if (isGif) {
imageContainer.innerHTML += '<span class="gifLabel">GIF</span>';
}
if (!isGifLoading && !isShowingPreviousImages) { if (!isGifLoading && !isShowingPreviousImages) {
shareForUrl(id); shareForUrl(id);
} else if (isShowingPreviousImages && canSharePreviousImages) { } else if (isShowingPreviousImages && canSharePreviousImages) {
@ -83,92 +88,68 @@ function appendShareBar(divID, story_id, isGif, hifiShareButtonsDisabled) {
var story_url = "https://highfidelity.com/user_stories/" + story_id; var story_url = "https://highfidelity.com/user_stories/" + story_id;
var parentDiv = document.getElementById(divID); var parentDiv = document.getElementById(divID);
parentDiv.setAttribute('data-story-id', story_id); parentDiv.setAttribute('data-story-id', story_id);
document.getElementById(divID).appendChild(createShareOverlay(divID, isGif, story_url, hifiShareButtonsDisabled)); document.getElementById(divID).appendChild(createShareBar(divID, isGif, story_url, hifiShareButtonsDisabled));
} }
function createShareOverlay(parentID, isGif, shareURL, hifiShareButtonsDisabled) { function createShareBar(parentID, isGif, shareURL, hifiShareButtonsDisabled) {
var shareOverlayContainer = document.createElement("DIV");
shareOverlayContainer.id = parentID + "shareOverlayContainer";
shareOverlayContainer.style.position = "absolute";
shareOverlayContainer.style.top = "0px";
shareOverlayContainer.style.left = "0px";
shareOverlayContainer.style.display = "flex";
shareOverlayContainer.style.alignItems = "flex-end";
shareOverlayContainer.style.width = "100%";
shareOverlayContainer.style.height = "100%";
var shareBar = document.createElement("div"); var shareBar = document.createElement("div");
shareBar.id = parentID + "shareBar" shareBar.id = parentID + "shareBar";
shareBar.style.display = "inline"; shareBar.className = "shareControls";
shareBar.style.width = "100%"; var shareButtonsDivID = parentID + "shareButtonsDiv";
shareBar.style.height = "60px"; var showShareButtonsButtonDivID = parentID + "showShareButtonsButtonDiv";
shareBar.style.lineHeight = "60px"; var showShareButtonsButtonID = parentID + "showShareButtonsButton";
shareBar.style.clear = "both"; var showShareButtonsLabelID = parentID + "showShareButtonsLabel";
shareBar.style.marginLeft = "auto"; var blastToConnectionsButtonID = parentID + "blastToConnectionsButton";
shareBar.style.marginRight = "auto";
shareBar.innerHTML = isGif ? '<span class="gifLabel">GIF</span>' : "";
var shareButtonID = parentID + "shareButton";
shareBar.innerHTML += '<div class="shareButtonDiv">' +
'<label class="shareButtonLabel" for="' + shareButtonID + '">SHARE</label>' +
'<input type="button" class="shareButton" id="' + shareButtonID + '" onclick="selectImageToShare(' + parentID + ')" />' +
'</div>'
shareOverlayContainer.appendChild(shareBar);
var shareOverlayBackground = document.createElement("div");
shareOverlayBackground.id = parentID + "shareOverlayBackground";
shareOverlayBackground.style.display = "none";
shareOverlayBackground.style.position = "absolute";
shareOverlayBackground.style.zIndex = "1";
shareOverlayBackground.style.top = "0px";
shareOverlayBackground.style.left = "0px";
shareOverlayBackground.style.backgroundColor = "black";
shareOverlayBackground.style.opacity = "0.5";
shareOverlayBackground.style.width = "100%";
shareOverlayBackground.style.height = "100%";
shareOverlayContainer.appendChild(shareOverlayBackground);
var shareOverlay = document.createElement("div");
shareOverlay.id = parentID + "shareOverlay";
shareOverlay.className = "shareOverlayDiv";
shareOverlay.style.display = "none";
shareOverlay.style.width = "100%";
shareOverlay.style.height = "100%";
shareOverlay.style.zIndex = "2";
var shareWithEveryoneButtonID = parentID + "shareWithEveryoneButton"; var shareWithEveryoneButtonID = parentID + "shareWithEveryoneButton";
var inviteConnectionsCheckboxID = parentID + "inviteConnectionsCheckbox";
var facebookButtonID = parentID + "facebookButton"; var facebookButtonID = parentID + "facebookButton";
var twitterButtonID = parentID + "twitterButton"; var twitterButtonID = parentID + "twitterButton";
shareOverlay.innerHTML = '<label class="shareOverlayLabel">SHARE</label>' + shareBar.innerHTML += '' +
'<br/>' + '<div class="shareButtons" id="' + shareButtonsDivID + '" style="opacity:0">' +
'<div class="shareControls">' + '<input type="button"' + (hifiShareButtonsDisabled ? ' disabled="disabled"' : '') + ' class="blastToConnections" id="' + blastToConnectionsButtonID + '" value="BLAST TO CONNECTIONS" onclick="blastToConnections(' + parentID + ', ' + isGif + ')" />' +
'<div class="hifiShareControls">' + '<input type="button"' + (hifiShareButtonsDisabled ? ' disabled="disabled"' : '') + ' class="shareWithEveryone" id="' + shareWithEveryoneButtonID + '" value="B" onclick="shareWithEveryone(' + parentID + ', ' + isGif + ')" />' +
'<input type="button"' + (hifiShareButtonsDisabled ? ' disabled="disabled"' : '') + ' class="shareWithEveryone" id="' + shareWithEveryoneButtonID + '" value="SHARE WITH EVERYONE" onclick="shareWithEveryone(' + parentID + ', ' + isGif + ')" /><br>' + '<a class="facebookButton" id="' + facebookButtonID + '" onClick="shareButtonClicked(' + parentID + ')" target="_blank" href="https://www.facebook.com/dialog/feed?app_id=1585088821786423&link=' + shareURL + '"></a>' +
'<input type="checkbox"' + (hifiShareButtonsDisabled ? ' disabled="disabled"' : '') + ' class="inviteConnections" id="' + inviteConnectionsCheckboxID + '" checked="checked" />' + '<a class="twitterButton" id="' + twitterButtonID + '" onClick="shareButtonClicked(' + parentID + ')" target="_blank" href="https://twitter.com/intent/tweet?text=I%20just%20took%20a%20snapshot!&url=' + shareURL + '&via=highfidelity&hashtags=VR,HiFi"></a>' +
'<label class="shareButtonLabel" for="' + inviteConnectionsCheckboxID + '">Invite My Connections</label><br>' + '</div>' +
'<input type="button" value="CANCEL" onclick="cancelSharing(' + parentID + ')" />' + '<div class="showShareButtonsButtonDiv" id="' + showShareButtonsButtonDivID + '">' +
'</div>' + '<label id="' + showShareButtonsLabelID + '" for="' + showShareButtonsButtonID + '">SHARE</label>' +
'<div class="buttonShareControls">' + '<input type="button" class="showShareButton inactive" id="' + showShareButtonsButtonID + '" onclick="selectImageToShare(' + parentID + ', true)" />' +
'<a class="facebookButton" id="' + facebookButtonID + '" onClick="shareButtonClicked(' + parentID + ')" target="_blank" href="https://www.facebook.com/dialog/feed?app_id=1585088821786423&link=' + shareURL + '"></a>' + '<div class="showShareButtonDots">' +
'<a class="twitterButton" id="' + twitterButtonID + '" onClick="shareButtonClicked(' + parentID + ')" target="_blank" href="https://twitter.com/intent/tweet?text=I%20just%20took%20a%20snapshot!&url=' + shareURL + '&via=highfidelity&hashtags=VR,HiFi"></a>' + '<span></span><span></span><span></span>' +
'</div>' + '</div>' +
'</div>'; '</div>';
shareOverlayContainer.appendChild(shareOverlay);
return shareOverlayContainer; return shareBar;
} }
function selectImageToShare(selectedID) { function selectImageToShare(selectedID, isSelected) {
selectedID = selectedID.id; // `selectedID` is passed as an HTML object to these functions; we just want the ID if (selectedID.id) {
var shareOverlayContainer = document.getElementById(selectedID + "shareOverlayContainer"); selectedID = selectedID.id; // sometimes (?), `selectedID` is passed as an HTML object to these functions; we just want the ID
}
var imageContainer = document.getElementById(selectedID);
var shareBar = document.getElementById(selectedID + "shareBar"); var shareBar = document.getElementById(selectedID + "shareBar");
var shareOverlayBackground = document.getElementById(selectedID + "shareOverlayBackground"); var shareButtonsDiv = document.getElementById(selectedID + "shareButtonsDiv");
var shareOverlay = document.getElementById(selectedID + "shareOverlay"); var showShareButtonsButton = document.getElementById(selectedID + "showShareButtonsButton");
shareOverlay.style.outline = "4px solid #00b4ef"; if (isSelected) {
shareOverlay.style.outlineOffset = "-4px"; showShareButtonsButton.onclick = function () { selectImageToShare(selectedID, false) };
showShareButtonsButton.classList.remove("inactive");
showShareButtonsButton.classList.add("active");
shareBar.style.display = "none"; imageContainer.style.outline = "4px solid #00b4ef";
imageContainer.style.outlineOffset = "-4px";
shareOverlayBackground.style.display = "inline"; shareBar.style.backgroundColor = "rgba(0, 0, 0, 0.5)";
shareOverlay.style.display = "inline";
shareButtonsDiv.style.opacity = "1.0";
} else {
showShareButtonsButton.onclick = function () { selectImageToShare(selectedID, true) };
showShareButtonsButton.classList.remove("active");
showShareButtonsButton.classList.add("inactive");
imageContainer.style.outline = "none";
shareBar.style.backgroundColor = "rgba(0, 0, 0, 0.0)";
shareButtonsDiv.style.opacity = "0.0";
}
} }
function shareForUrl(selectedID) { function shareForUrl(selectedID) {
EventBridge.emitWebEvent(JSON.stringify({ EventBridge.emitWebEvent(JSON.stringify({
@ -177,17 +158,29 @@ function shareForUrl(selectedID) {
data: paths[parseInt(selectedID.substring(1))] data: paths[parseInt(selectedID.substring(1))]
})); }));
} }
function blastToConnections(selectedID, isGif) {
selectedID = selectedID.id; // `selectedID` is passed as an HTML object to these functions; we just want the ID
document.getElementById(selectedID + "blastToConnectionsButton").setAttribute("disabled", "disabled");
document.getElementById(selectedID + "shareWithEveryoneButton").setAttribute("disabled", "disabled");
EventBridge.emitWebEvent(JSON.stringify({
type: "snapshot",
action: "blastToConnections",
story_id: document.getElementById(selectedID).getAttribute("data-story-id"),
isGif: isGif
}));
}
function shareWithEveryone(selectedID, isGif) { function shareWithEveryone(selectedID, isGif) {
selectedID = selectedID.id; // `selectedID` is passed as an HTML object to these functions; we just want the ID selectedID = selectedID.id; // `selectedID` is passed as an HTML object to these functions; we just want the ID
document.getElementById(selectedID + "blastToConnectionsButton").setAttribute("disabled", "disabled");
document.getElementById(selectedID + "shareWithEveryoneButton").setAttribute("disabled", "disabled"); document.getElementById(selectedID + "shareWithEveryoneButton").setAttribute("disabled", "disabled");
document.getElementById(selectedID + "inviteConnectionsCheckbox").setAttribute("disabled", "disabled");
EventBridge.emitWebEvent(JSON.stringify({ EventBridge.emitWebEvent(JSON.stringify({
type: "snapshot", type: "snapshot",
action: "shareSnapshotWithEveryone", action: "shareSnapshotWithEveryone",
story_id: document.getElementById(selectedID).getAttribute("data-story-id"), story_id: document.getElementById(selectedID).getAttribute("data-story-id"),
isAnnouncement: document.getElementById(selectedID + "inviteConnectionsCheckbox").getAttribute("checked"),
isGif: isGif isGif: isGif
})); }));
} }
@ -201,17 +194,9 @@ function shareButtonClicked(selectedID) {
} }
function cancelSharing(selectedID) { function cancelSharing(selectedID) {
selectedID = selectedID.id; // `selectedID` is passed as an HTML object to these functions; we just want the ID selectedID = selectedID.id; // `selectedID` is passed as an HTML object to these functions; we just want the ID
var shareOverlayContainer = document.getElementById(selectedID + "shareOverlayContainer");
var shareBar = document.getElementById(selectedID + "shareBar"); var shareBar = document.getElementById(selectedID + "shareBar");
var shareOverlayBackground = document.getElementById(selectedID + "shareOverlayBackground");
var shareOverlay = document.getElementById(selectedID + "shareOverlay");
shareOverlay.style.outline = "none";
shareBar.style.display = "inline"; shareBar.style.display = "inline";
shareOverlayBackground.style.display = "none";
shareOverlay.style.display = "none";
} }
function handleCaptureSetting(setting) { function handleCaptureSetting(setting) {
@ -331,6 +316,6 @@ function testInBrowser(isTestingSetupInstructions) {
} else { } else {
imageCount = 1; imageCount = 1;
//addImage({ localPath: 'http://lorempixel.com/553/255' }); //addImage({ localPath: 'http://lorempixel.com/553/255' });
addImage({ localPath: 'C:/Users/valef/Desktop/hifi-snap-by-zfox-on-2017-04-26_10-26-53.jpg' }, false, true, true, false); addImage({ localPath: 'C:/Users/valef/Desktop/hifi-snap-by-zfox-on-2017-04-26_10-26-53.gif' }, false, true, true, false);
} }
} }

View file

@ -85,6 +85,16 @@ function request(options, callback) { // cb(error, responseOfCorrectContentType)
httpRequest.send(options.body); httpRequest.send(options.body);
} }
function openLoginWindow() {
if ((HMD.active && Settings.getValue("hmdTabletBecomesToolbar", false))
|| (!HMD.active && Settings.getValue("desktopTabletBecomesToolbar", true))) {
Menu.triggerOption("Login / Sign Up");
} else {
tablet.loadQMLOnTop("../../dialogs/TabletLoginDialog.qml");
HMD.openTablet();
}
}
function onMessage(message) { function onMessage(message) {
// Receives message from the html dialog via the qwebchannel EventBridge. This is complicated by the following: // Receives message from the html dialog via the qwebchannel EventBridge. This is complicated by the following:
// 1. Although we can send POJOs, we cannot receive a toplevel object. (Arrays of POJOs are fine, though.) // 1. Although we can send POJOs, we cannot receive a toplevel object. (Arrays of POJOs are fine, though.)
@ -97,7 +107,6 @@ function onMessage(message) {
} }
var isLoggedIn; var isLoggedIn;
var needsLogin = false;
switch (message.action) { switch (message.action) {
case 'ready': // DOM is ready and page has loaded case 'ready': // DOM is ready and page has loaded
tablet.emitScriptEvent(JSON.stringify({ tablet.emitScriptEvent(JSON.stringify({
@ -138,7 +147,8 @@ function onMessage(message) {
} }
break; break;
case 'openSettings': case 'openSettings':
if ((HMD.active && Settings.getValue("hmdTabletBecomesToolbar", true)) || (!HMD.active && Settings.getValue("desktopTabletBecomesToolbar", false))) { if ((HMD.active && Settings.getValue("hmdTabletBecomesToolbar", false))
|| (!HMD.active && Settings.getValue("desktopTabletBecomesToolbar", true))) {
Desktop.show("hifi/dialogs/GeneralPreferencesDialog.qml", "General Preferences"); Desktop.show("hifi/dialogs/GeneralPreferencesDialog.qml", "General Preferences");
} else { } else {
tablet.loadQMLOnTop("TabletGeneralPreferences.qml"); tablet.loadQMLOnTop("TabletGeneralPreferences.qml");
@ -164,6 +174,64 @@ function onMessage(message) {
// TODO // TODO
} }
break; break;
case 'blastToConnections':
isLoggedIn = Account.isLoggedIn();
storyIDsToMaybeDelete.splice(storyIDsToMaybeDelete.indexOf(message.story_id), 1);
if (message.isGif) {
Settings.setValue("previousAnimatedSnapSharingDisabled", true);
} else {
Settings.setValue("previousStillSnapSharingDisabled", true);
}
if (isLoggedIn) {
print('Uploading new story for announcement!');
request({
uri: METAVERSE_BASE + '/api/v1/user_stories/' + message.story_id,
method: 'GET'
}, function (error, response) {
if (error || (response.status !== 'success')) {
print("ERROR getting details about existing snapshot story:", error || response.status);
return;
} else {
var requestBody = {
user_story: {
audience: "for_feed",
action: "announcement",
path: response.user_story.path,
place_name: response.user_story.place_name,
thumbnail_url: response.user_story.thumbnail_url,
details: {
shareable_url: response.user_story.details.shareable_url,
image_url: response.user_story.details.image_url
}
}
}
request({
uri: METAVERSE_BASE + '/api/v1/user_stories',
method: 'POST',
json: true,
body: requestBody
}, function (error, response) {
if (error || (response.status !== 'success')) {
print("ERROR uploading announcement story: ", error || response.status);
if (message.isGif) {
Settings.setValue("previousAnimatedSnapSharingDisabled", false);
} else {
Settings.setValue("previousStillSnapSharingDisabled", false);
}
return;
} else {
print("SUCCESS uploading announcement story! Story ID:", response.user_story.id);
}
});
}
});
} else {
openLoginWindow();
}
break;
case 'shareSnapshotWithEveryone': case 'shareSnapshotWithEveryone':
isLoggedIn = Account.isLoggedIn(); isLoggedIn = Account.isLoggedIn();
storyIDsToMaybeDelete.splice(storyIDsToMaybeDelete.indexOf(message.story_id), 1); storyIDsToMaybeDelete.splice(storyIDsToMaybeDelete.indexOf(message.story_id), 1);
@ -202,19 +270,10 @@ function onMessage(message) {
} }
}); });
} else { } else {
needsLogin = true; openLoginWindow();
shareAfterLogin = true; shareAfterLogin = true;
snapshotToShareAfterLogin = { path: message.data, href: message.href || href }; snapshotToShareAfterLogin = { path: message.data, href: message.href || href };
} }
if (needsLogin) {
if ((HMD.active && Settings.getValue("hmdTabletBecomesToolbar"))
|| (!HMD.active && Settings.getValue("desktopTabletBecomesToolbar"))) {
Menu.triggerOption("Login / Sign Up");
} else {
tablet.loadQMLOnTop("../../dialogs/TabletLoginDialog.qml");
HMD.openTablet();
}
}
break; break;
case 'shareButtonClicked': case 'shareButtonClicked':
print('Twitter or FB "Share" button clicked! Removing ID', message.story_id, 'from storyIDsToMaybeDelete[].'); print('Twitter or FB "Share" button clicked! Removing ID', message.story_id, 'from storyIDsToMaybeDelete[].');