Skip to content
Snippets Groups Projects
Select Git revision
  • 032f1dba50b0fd4f5f77edb3225e3e3ccc6a3155
  • master default protected
  • release/202005
  • release/202001
  • release/201912
  • release/201911
  • release/releaseWindowsTestOne
  • release/releaseTest
  • release/releaseWindowsTest
  • release/windowsReleaseTest
  • release/201910
  • release/qt/201910
  • release/windows-test/201910
  • release/201908
  • release/201906
  • release/201905
  • release/201904
  • release/201903
  • release/201902
  • release/201901
  • release/201812
  • 1.0.0
  • 0.3.0
  • 0.2.1
  • 0.2.0
  • 0.1.0
26 results

chatview.js

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    chatview.js 94.42 KiB
    "use strict"
    
    /* Constants used at several places */
    // scrollDetectionThresh represents the number of pixels a user can scroll
    // without disabling the automatic go-back-to-bottom when a new message is
    // received
    const scrollDetectionThresh = 70
    // printHistoryPart loads blocks of messages. Each block contains
    // scrollBuffer messages
    const scrollBuffer = 20
    // The first time a conversation is loaded, the lazy loading system makes
    // sure at least initialScrollBufferFactor screens of messages are loaded
    const initialScrollBufferFactor = 3
    // Some signal like the onscrolled signals are debounced so that the their
    // assigned function isn't fired too often
    const debounceTime = 200
    
    /* Buffers */
    // current index in the history buffer
    var historyBufferIndex = 0
    // buffer containing the conversation's messages
    var historyBuffer = []
    
    // If we use qt
    var use_qt = false
    
    if (navigator.userAgent == "jami-windows") {
        use_qt = true
    }
    
    /* We retrieve refs to the most used navbar and message bar elements for efficiency purposes */
    /* NOTE: use getElementById when possible (more readable and efficient) */
    const addToConversationsButton = document.getElementById("addToConversationsButton")
    const placeAudioCallButton = document.getElementById("placeAudioCallButton")
    const backButton = document.getElementById("backButton")
    const placeCallButton = document.getElementById("placeCallButton")
    const unbanButton = document.getElementById("unbanButton")
    const acceptButton = document.getElementById("acceptButton")
    const refuseButton = document.getElementById("refuseButton")
    const blockButton = document.getElementById("blockButton")
    const callButtons = document.getElementById("callButtons")
    const sendButton = document.getElementById("sendButton")
    const optionsButton = document.getElementById("optionsButton")
    const backToBottomBtn = document.getElementById("back_to_bottom_button")
    const backToBottomBtnContainer = document.getElementById("back_to_bottom_button_container")
    const sendFileButton = document.getElementById("sendFileButton")
    const videoRecordButton = document.getElementById("videoRecordButton")
    const audioRecordButton = document.getElementById("audioRecordButton")
    const aliasField = document.getElementById("nav-contactid-alias")
    const bestIdField = document.getElementById("nav-contactid-bestId")
    const idField = document.getElementById("nav-contactid")
    const messageBar = document.getElementById("sendMessage")
    const messageBarInput = document.getElementById("message")
    const addToConvButton = document.getElementById("addToConversationsButton")
    const invitation = document.getElementById("invitation")
    const inviteImage = document.getElementById("invite_image")
    const navbar = document.getElementById("navbar")
    const invitationText = document.getElementById("text")
    var   messages = document.getElementById("messages")
    var   sendContainer = document.getElementById("data_transfer_send_container")
    var   wrapperOfNavbar = document.getElementById("wrapperOfNavbar")
    
    /* States: allows us to avoid re-doing something if it isn't meaningful */
    var displayLinksEnabled = true
    var hoverBackButtonAllowed = true
    var hasInvitation = false
    var isTemporary = false
    var isBanned = false
    var isAccountEnabled = true
    var isInitialLoading = false