Форк Rambox
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
2.4 KiB

4 years ago
const { ipcRenderer } = require("electron");
4 years ago
let sourceList,
contentList,
typeButtons,
shareButton,
cancelButton,
activeItem,
activeTab = "screen";
4 years ago
const getItemDOM = (item) => {
const li = document.createElement("li");
li.setAttribute("data-id", item.id);
li.innerHTML = `<div class="content"><div class="img-wrapper"><img src="${item.thumbnail}" /></div><span>${item.name}</span></div>`;
4 years ago
li.addEventListener("click", onItemClick, false);
return li;
};
const updateTab = () => {
4 years ago
const sources = sourceList.filter((it) => it.id.indexOf(activeTab) === 0);
contentList.innerHTML = "";
sources.forEach((source) => contentList.appendChild(getItemDOM(source)));
};
const bindTypeClick = () => {
4 years ago
typeButtons.forEach((it) =>
it.addEventListener("click", onChangeType, false)
);
};
const bindActionsClick = () => {
4 years ago
shareButton.addEventListener("click", onShareClick, false);
cancelButton.addEventListener("click", onCancelClick, false);
};
4 years ago
const onChangeType = (event) => {
event.preventDefault();
4 years ago
if (!event.target.classList.contains("active")) {
activeTab = event.target.dataset.type;
4 years ago
typeButtons.forEach((it) => it.classList.remove("active"));
event.target.classList.add("active");
updateTab();
}
};
4 years ago
const onItemClick = (event) => {
event.preventDefault();
4 years ago
if (!event.currentTarget.classList.contains("active")) {
activeItem = event.currentTarget.dataset.id;
4 years ago
document
.querySelectorAll(".preview li")
.forEach((it) => it.classList.remove("active"));
event.currentTarget.classList.add("active");
changeShareState();
}
};
4 years ago
const onCancelClick = (event) => {
event.preventDefault();
4 years ago
ipcRenderer.send("screenShare:cancelSelection");
};
4 years ago
const onShareClick = (event) => {
event.preventDefault();
if (activeItem) {
4 years ago
ipcRenderer.send("screenShare:selectScreen", activeItem);
}
};
const changeShareState = () => {
4 years ago
if (shareButton.getAttribute("disabled") !== null) {
shareButton.removeAttribute("disabled");
}
};
4 years ago
window.addEventListener(
"load",
async () => {
sourceList = await ipcRenderer.invoke("screenShare:getSources");
4 years ago
contentList = document.querySelector(".preview");
typeButtons = document.querySelectorAll(".type li");
shareButton = document.querySelector("#share");
cancelButton = document.querySelector("#cancel");
4 years ago
bindTypeClick();
bindActionsClick();
updateTab();
},
false
);