80 lines
1.9 KiB
JavaScript
80 lines
1.9 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
const $ = require("jquery");
|
||
|
const chat = $("#chat");
|
||
|
const input = $("#input");
|
||
|
|
||
|
module.exports = {
|
||
|
clear,
|
||
|
confirmExit,
|
||
|
forceFocus,
|
||
|
move,
|
||
|
resetHeight,
|
||
|
setNick,
|
||
|
toggleNickEditor,
|
||
|
toggleNotificationMarkers
|
||
|
};
|
||
|
|
||
|
function resetHeight(element) {
|
||
|
element.style.height = element.style.minHeight;
|
||
|
}
|
||
|
|
||
|
// Triggering click event opens the virtual keyboard on mobile
|
||
|
// This can only be called from another interactive event (e.g. button click)
|
||
|
function forceFocus() {
|
||
|
input.trigger("click").focus();
|
||
|
}
|
||
|
|
||
|
function clear() {
|
||
|
chat.find(".active")
|
||
|
.find(".show-more").addClass("show").end()
|
||
|
.find(".messages .msg, .date-marker-container").remove();
|
||
|
}
|
||
|
|
||
|
function toggleNickEditor(toggle) {
|
||
|
$("#nick").toggleClass("editable", toggle);
|
||
|
$("#nick-value").attr("contenteditable", toggle);
|
||
|
}
|
||
|
|
||
|
function setNick(nick) {
|
||
|
// Closes the nick editor when canceling, changing channel, or when a nick
|
||
|
// is set in a different tab / browser / device.
|
||
|
toggleNickEditor(false);
|
||
|
|
||
|
$("#nick-value").text(nick);
|
||
|
}
|
||
|
|
||
|
const favicon = $("#favicon");
|
||
|
|
||
|
function toggleNotificationMarkers(newState) {
|
||
|
// Toggles the favicon to red when there are unread notifications
|
||
|
if (favicon.data("toggled") !== newState) {
|
||
|
var old = favicon.attr("href");
|
||
|
favicon.attr("href", favicon.data("other"));
|
||
|
favicon.data("other", old);
|
||
|
favicon.data("toggled", newState);
|
||
|
}
|
||
|
|
||
|
// Toggles a dot on the menu icon when there are unread notifications
|
||
|
$("#viewport .lt").toggleClass("notified", newState);
|
||
|
}
|
||
|
|
||
|
function confirmExit() {
|
||
|
if ($("body").hasClass("public")) {
|
||
|
window.onbeforeunload = function() {
|
||
|
return "Are you sure you want to navigate away from this page?";
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function move(array, old_index, new_index) {
|
||
|
if (new_index >= array.length) {
|
||
|
let k = new_index - array.length;
|
||
|
while ((k--) + 1) {
|
||
|
this.push(undefined);
|
||
|
}
|
||
|
}
|
||
|
array.splice(new_index, 0, array.splice(old_index, 1)[0]);
|
||
|
return array;
|
||
|
}
|