"use strict";
//
// SnapshotReview.js
// scripts/system/html/js/
//
// Created by Howard Stearns 8/22/2016
// Copyright 2016 High Fidelity, Inc.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
var paths = [];
var idCounter = 0;
var imageCount = 0;
function showSetupInstructions() {
var snapshotImagesDiv = document.getElementById("snapshot-images");
snapshotImagesDiv.className = "snapshotInstructions";
snapshotImagesDiv.innerHTML = '' +
' ' +
'
This app lets you take and share snaps and GIFs with your connections in High Fidelity.
' +
"
Setup Instructions
" +
"
Before you can begin taking snaps, please choose where you'd like to save snaps on your computer:
';
shareOverlayContainer.appendChild(shareOverlay);
return shareOverlayContainer;
}
function selectImageToShare(selectedID) {
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 shareOverlayBackground = document.getElementById(selectedID + "shareOverlayBackground");
var shareOverlay = document.getElementById(selectedID + "shareOverlay");
shareOverlay.style.outline = "4px solid #00b4ef";
shareOverlay.style.outlineOffset = "-4px";
shareBar.style.display = "none";
shareOverlayBackground.style.display = "inline";
shareOverlay.style.display = "inline";
}
function shareForUrl(selectedID) {
EventBridge.emitWebEvent(JSON.stringify({
type: "snapshot",
action: "shareSnapshotForUrl",
data: paths[parseInt(selectedID.substring(1))]
}));
}
function shareWithEveryone(selectedID, isGif) {
selectedID = selectedID.id; // `selectedID` is passed as an HTML object to these functions; we just want the ID
document.getElementById(selectedID + "shareWithEveryoneButton").setAttribute("disabled", "disabled");
document.getElementById(selectedID + "inviteConnectionsCheckbox").setAttribute("disabled", "disabled");
EventBridge.emitWebEvent(JSON.stringify({
type: "snapshot",
action: "shareSnapshotWithEveryone",
story_id: document.getElementById(selectedID).getAttribute("data-story-id"),
isAnnouncement: document.getElementById(selectedID + "inviteConnectionsCheckbox").getAttribute("checked"),
isGif: isGif
}));
}
function shareButtonClicked(selectedID) {
selectedID = selectedID.id; // `selectedID` is passed as an HTML object to these functions; we just want the ID
EventBridge.emitWebEvent(JSON.stringify({
type: "snapshot",
action: "shareButtonClicked",
story_id: document.getElementById(selectedID).getAttribute("data-story-id")
}));
}
function cancelSharing(selectedID) {
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 shareOverlayBackground = document.getElementById(selectedID + "shareOverlayBackground");
var shareOverlay = document.getElementById(selectedID + "shareOverlay");
shareOverlay.style.outline = "none";
shareBar.style.display = "inline";
shareOverlayBackground.style.display = "none";
shareOverlay.style.display = "none";
}
function handleCaptureSetting(setting) {
var stillAndGif = document.getElementById('stillAndGif');
var stillOnly = document.getElementById('stillOnly');
stillAndGif.checked = setting;
stillOnly.checked = !setting;
stillAndGif.onclick = function () {
EventBridge.emitWebEvent(JSON.stringify({
type: "snapshot",
action: "captureStillAndGif"
}));
}
stillOnly.onclick = function () {
EventBridge.emitWebEvent(JSON.stringify({
type: "snapshot",
action: "captureStillOnly"
}));
}
}
window.onload = function () {
testInBrowser(false);
openEventBridge(function () {
// Set up a handler for receiving the data, and tell the .js we are ready to receive it.
EventBridge.scriptEventReceived.connect(function (message) {
message = JSON.parse(message);
if (message.type !== "snapshot") {
return;
}
switch (message.action) {
case 'showSetupInstructions':
showSetupInstructions();
break;
case 'snapshotLocationChosen':
clearImages();
showSetupComplete();
break;
case 'clearPreviousImages':
clearImages();
break;
case 'showPreviousImages':
clearImages();
var messageOptions = message.options;
imageCount = message.image_data.length;
message.image_data.forEach(function (element, idx, array) {
addImage(element, true, true, message.canShare, message.image_data[idx].buttonDisabled);
});
break;
case 'addImages':
// The last element of the message contents list contains a bunch of options,
// including whether or not we can share stuff
// The other elements of the list contain image paths.
var messageOptions = message.options;
if (messageOptions.containsGif) {
if (messageOptions.processingGif) {
imageCount = message.image_data.length + 1; // "+1" for the GIF that'll finish processing soon
message.image_data.unshift({ localPath: messageOptions.loadingGifPath });
message.image_data.forEach(function (element, idx, array) {
addImage(element, idx === 0, false, false);
});
} else {
var gifPath = message.image_data[0].localPath;
var p0img = document.getElementById('p0img');
p0img.src = gifPath;
paths[0] = gifPath;
shareForUrl("p0");
}
} else {
imageCount = message.image_data.length;
message.image_data.forEach(function (element, idx, array) {
addImage(element, false, false, false);
});
}
break;
case 'captureSettings':
handleCaptureSetting(message.setting);
break;
case 'snapshotUploadComplete':
var isGif = message.image_url.split('.').pop().toLowerCase() === "gif";
appendShareBar(isGif || imageCount === 1 ? "p0" : "p1", message.story_id, isGif);
break;
default:
console.log("Unknown message action received in SnapshotReview.js.");
break;
}
});
EventBridge.emitWebEvent(JSON.stringify({
type: "snapshot",
action: "ready"
}));
});;
};
function snapshotSettings() {
EventBridge.emitWebEvent(JSON.stringify({
type: "snapshot",
action: "openSettings"
}));
}
function takeSnapshot() {
EventBridge.emitWebEvent(JSON.stringify({
type: "snapshot",
action: "takeSnapshot"
}));
}
function testInBrowser(isTestingSetupInstructions) {
if (isTestingSetupInstructions) {
showSetupInstructions();
} else {
imageCount = 1;
//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);
}
}