add cache and rename some files
This commit is contained in:
189
opendeck/plugins/com.elgato.discord.sdPlugin/inspectors/main.js
Normal file
189
opendeck/plugins/com.elgato.discord.sdPlugin/inspectors/main.js
Normal file
@@ -0,0 +1,189 @@
|
||||
/*!
|
||||
@file main.js
|
||||
@brief Handles SD behavior
|
||||
@author Valentin Reinbold
|
||||
@copyright (c) 2021, Corsair Memory, Inc. All Rights Reserved.
|
||||
*/
|
||||
|
||||
// Global web socket
|
||||
var websocket = null;
|
||||
|
||||
// Global plugin settings
|
||||
var globalSettings = {};
|
||||
|
||||
// Global settings
|
||||
var settings = {};
|
||||
|
||||
// Setup the websocket and handle communication
|
||||
function connectElgatoStreamDeckSocket(inPort, inUUID, inRegisterEvent, inInfo, inActionInfo) {
|
||||
// Parse parameter from string to object
|
||||
var actionInfo = JSON.parse(inActionInfo);
|
||||
var info = JSON.parse(inInfo);
|
||||
|
||||
console.log("actionInfo", actionInfo);
|
||||
console.log("info", info);
|
||||
|
||||
// Save global settings
|
||||
settings = actionInfo['payload']['settings'];
|
||||
|
||||
// Retrieve language
|
||||
var language = info['application']['language'];
|
||||
|
||||
// Retrieve action identifier
|
||||
var action = actionInfo['action'];
|
||||
|
||||
// Open the web socket to Stream Deck
|
||||
// Use 127.0.0.1 because Windows needs 300ms to resolve localhost
|
||||
websocket = new WebSocket("ws://127.0.0.1:" + inPort);
|
||||
|
||||
// WebSocket is connected, send message
|
||||
websocket.onopen = function () {
|
||||
// Register property inspector to Stream Deck
|
||||
registerPI(inRegisterEvent, inUUID);
|
||||
|
||||
// Request the global settings of the plugin
|
||||
requestGlobalSettings(inUUID);
|
||||
};
|
||||
|
||||
// Create actions
|
||||
if (action == "com.elgato.discord.mute") {
|
||||
var pi = new MutePI(inUUID, language);
|
||||
}
|
||||
else if (action == "com.elgato.discord.deafen") {
|
||||
var pi = new DeafenPI(inUUID, language);
|
||||
}
|
||||
else if (action == "com.elgato.discord.channel.voice") {
|
||||
var pi = new VoiceChannelPI(inUUID, language);
|
||||
}
|
||||
else if (action == "com.elgato.discord.channel.text") {
|
||||
var pi = new TextChannelPI(inUUID, language);
|
||||
}
|
||||
else if (action == "com.elgato.discord.pushto.talk") {
|
||||
var pi = new PushToTalkPI(inUUID, language);
|
||||
}
|
||||
else if (action == "com.elgato.discord.pushto.mute") {
|
||||
var pi = new PushToMutePI(inUUID, language);
|
||||
}
|
||||
else if (action == "com.elgato.discord.volumecontrol") {
|
||||
var pi = new VolumePI(inUUID, language);
|
||||
}
|
||||
else if (action == "com.elgato.discord.volumecontrolbutton") {
|
||||
var pi = new VolumeButtonPI(inUUID, language);
|
||||
}
|
||||
else if (action == "com.elgato.discord.uservolumecontrolbutton") {
|
||||
var pi = new UserVolumeButtonPI(inUUID, language);
|
||||
}
|
||||
else if (action == "com.elgato.discord.uservolumecontroldial") {
|
||||
var pi = new UserVolumeDialPI(inUUID, language);
|
||||
}
|
||||
else if (action == "com.elgato.discord.pushtotalktoggle") {
|
||||
var pi = new PushToTalkTogglePI(inUUID, language);
|
||||
}
|
||||
else if (action == "com.elgato.discord.notifications") {
|
||||
var pi = new NotificationsPI(inUUID, language);
|
||||
}
|
||||
else if (action == "com.elgato.discord.setaudiodevice") {
|
||||
var pi = new SetAudioDevicePI(inUUID, language);
|
||||
}
|
||||
else if (action == "com.elgato.discord.serverstats") {
|
||||
var pi = new ServerStatsPI(inUUID, language);
|
||||
}
|
||||
else if (action == "com.elgato.discord.soundboard") {
|
||||
var pi = new SoundboardPI(inUUID, language);
|
||||
}
|
||||
|
||||
websocket.onmessage = function (evt) {
|
||||
// Received message from Stream Deck
|
||||
var jsonObj = JSON.parse(evt.data);
|
||||
var event = jsonObj['event'];
|
||||
var jsonPayload = jsonObj['payload'];
|
||||
|
||||
if(event == "didReceiveGlobalSettings") {
|
||||
// Set global plugin settings
|
||||
globalSettings = jsonPayload['settings'];
|
||||
}
|
||||
else if(event == "didReceiveSettings") {
|
||||
// Save global settings after default was set
|
||||
settings = jsonPayload['settings'];
|
||||
}
|
||||
else if(event == "sendToPropertyInspector") {
|
||||
// Initialize & receive the new data
|
||||
var data = jsonPayload ?? {};
|
||||
|
||||
// Load Property Inspector
|
||||
pi.load(data);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Register property inspector
|
||||
function registerPI(inEvent, inUUID) {
|
||||
if (websocket) {
|
||||
const json = {
|
||||
"event": inEvent,
|
||||
"uuid": inUUID
|
||||
};
|
||||
websocket.send(JSON.stringify(json));
|
||||
}
|
||||
}
|
||||
|
||||
// Set data to plugin
|
||||
function sendToPlugin(inAction, inContext, inData) {
|
||||
if (websocket) {
|
||||
const json = {
|
||||
"action": inAction,
|
||||
"event": "sendToPlugin",
|
||||
"context": inContext,
|
||||
"payload": inData
|
||||
};
|
||||
websocket.send(JSON.stringify(json));
|
||||
}
|
||||
}
|
||||
|
||||
// Save settings
|
||||
function saveSettings(inUUID, inSettings) {
|
||||
if (websocket) {
|
||||
const json = {
|
||||
"event": "setSettings",
|
||||
"context": inUUID,
|
||||
"payload": inSettings
|
||||
};
|
||||
websocket.send(JSON.stringify(json));
|
||||
}
|
||||
}
|
||||
|
||||
// Save global settings
|
||||
function saveGlobalSettings(inUUID) {
|
||||
if (websocket) {
|
||||
const json = {
|
||||
"event": "setGlobalSettings",
|
||||
"context": inUUID,
|
||||
"payload": globalSettings
|
||||
};
|
||||
websocket.send(JSON.stringify(json));
|
||||
}
|
||||
}
|
||||
|
||||
// Request global settings
|
||||
function requestGlobalSettings(inUUID) {
|
||||
if (websocket) {
|
||||
const json = {
|
||||
"event": "getGlobalSettings",
|
||||
"context": inUUID
|
||||
};
|
||||
websocket.send(JSON.stringify(json));
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
function openURL(url) {
|
||||
if (websocket) {
|
||||
const json = {
|
||||
"event": "openUrl",
|
||||
"payload": {
|
||||
"url": url
|
||||
}
|
||||
};
|
||||
websocket.send(JSON.stringify(json));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user