2017-05-18 20:08:54 +00:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
const $ = require("jquery");
|
2017-08-28 20:06:28 +00:00
|
|
|
const escape = require("css.escape");
|
2017-05-18 20:08:54 +00:00
|
|
|
const socket = require("../socket");
|
|
|
|
const render = require("../render");
|
2017-07-10 19:47:03 +00:00
|
|
|
const webpush = require("../webpush");
|
2017-05-18 20:08:54 +00:00
|
|
|
const sidebar = $("#sidebar");
|
|
|
|
const storage = require("../localStorage");
|
2017-08-28 15:03:27 +00:00
|
|
|
const utils = require("../utils");
|
2017-05-18 20:08:54 +00:00
|
|
|
|
|
|
|
socket.on("init", function(data) {
|
2017-08-28 15:03:27 +00:00
|
|
|
$("#loading-page-message, #connection-error").text("Rendering…");
|
|
|
|
|
|
|
|
const lastMessageId = utils.lastMessageId;
|
2017-08-28 20:06:28 +00:00
|
|
|
let previousActive = 0;
|
2017-08-28 15:03:27 +00:00
|
|
|
|
|
|
|
if (lastMessageId > -1) {
|
2017-08-28 20:06:28 +00:00
|
|
|
previousActive = sidebar.find(".active").data("id");
|
2017-08-28 15:03:27 +00:00
|
|
|
sidebar.find(".networks").empty();
|
|
|
|
}
|
2017-05-18 20:08:54 +00:00
|
|
|
|
|
|
|
if (data.networks.length === 0) {
|
2017-08-28 15:03:27 +00:00
|
|
|
sidebar.find(".empty").show();
|
|
|
|
|
2017-05-18 20:08:54 +00:00
|
|
|
$("#footer").find(".connect").trigger("click", {
|
|
|
|
pushState: false,
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
render.renderNetworks(data);
|
|
|
|
}
|
|
|
|
|
2017-08-28 15:03:27 +00:00
|
|
|
if (lastMessageId > -1) {
|
|
|
|
$("#connection-error").removeClass("shown");
|
|
|
|
$(".show-more-button, #input").prop("disabled", false);
|
|
|
|
$("#submit").show();
|
|
|
|
} else {
|
|
|
|
if (data.token) {
|
|
|
|
storage.set("token", data.token);
|
|
|
|
}
|
2017-05-18 20:08:54 +00:00
|
|
|
|
2017-08-28 15:03:27 +00:00
|
|
|
webpush.configurePushNotifications(data.pushSubscription, data.applicationServerKey);
|
2017-07-10 19:47:03 +00:00
|
|
|
|
2017-08-28 15:03:27 +00:00
|
|
|
$("body").removeClass("signed-out");
|
|
|
|
$("#loading").remove();
|
|
|
|
$("#sign-in").remove();
|
|
|
|
}
|
2017-05-18 20:08:54 +00:00
|
|
|
|
2017-08-28 20:06:28 +00:00
|
|
|
openCorrectChannel(previousActive, data.active);
|
2017-05-18 20:08:54 +00:00
|
|
|
});
|
2017-08-28 20:06:28 +00:00
|
|
|
|
|
|
|
function openCorrectChannel(clientActive, serverActive) {
|
|
|
|
let target;
|
|
|
|
|
|
|
|
// Open last active channel
|
|
|
|
if (clientActive > 0) {
|
|
|
|
target = sidebar.find("[data-id='" + clientActive + "']");
|
|
|
|
}
|
|
|
|
|
|
|
|
// Open window provided in location.hash
|
|
|
|
if (!target && window.location.hash) {
|
|
|
|
target = $("#footer, #sidebar").find("[data-target='" + escape(window.location.hash) + "']");
|
|
|
|
}
|
|
|
|
|
|
|
|
// Open last active channel according to the server
|
|
|
|
if (!target) {
|
|
|
|
target = sidebar.find("[data-id='" + serverActive + "']");
|
|
|
|
}
|
|
|
|
|
|
|
|
// If target channel is found, open it
|
|
|
|
if (target) {
|
|
|
|
target.trigger("click", {
|
|
|
|
replaceHistory: true
|
|
|
|
});
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Open the connect window
|
|
|
|
$("#footer .connect").trigger("click", {
|
|
|
|
pushState: false
|
|
|
|
});
|
|
|
|
}
|