Mini Kabibi Habibi

Current Path : C:/Program Files/McAfee/WebAdvisor/MFW/packages_web_view/webadvisor/
Upload File :
Current File : C:/Program Files/McAfee/WebAdvisor/MFW/packages_web_view/webadvisor/wa-ui-dwtoast.js

/* Download Warning Toast UI */
(function (wa, $) {
  var ui = wa.UI = wa.UI || {},
    _instrument = wa.Utils.Instrument,
    _window = wa.Core.Window,
    _dw = wa.Core.DownloadWarning,
    _wa = wa.Core.WebAdvisor,
    _external = wa.Utils.External,
    _l10n = wa.Utils.Lang().checkList();

  ui.DownloadWarningToast = function () {
    var $el = {
      body: $("body"),
      toast: $("#wa-dw-toast"),
      closeBtn: $("#close-icon"),
      newImageSection: $("#left-section"),
      content: $("#content"),
      contentCard: $("#content-card"),
      header: $("#header"),
      desc: $("#desc"),
      fileNameLabel: $("#filename-label"),
      domainLabel: $("#domain-label"),
      fileName: $("#filename"),
      domain: $("#domain"),
      newBlockBtn: $("#new-button-block"),
      newAcceptBtn: $("#new-button-accept"),
      newBlockClass: $(".block-button"),
      textColor: $(".text-color"),
    };

    var l10nMap = {
      "TITLE": _l10n("DW_TITLE"),
      "TEXT": _l10n("DW_TEXT"),
      "BUTTON_BLOCK": _l10n("DW_BUTTON_BLOCK"),
      "BUTTON_ACCEPT": _l10n("DW_BUTTON_ACCEPT"),
      "FILENAME": _l10n("DW_FILENAME"),
      "DOMAIN": _l10n("DW_DOMAIN")
    }

    var colorModeStylesMap = {
      "dark": {
        "imgCard": "#2E3036",
        "contentCard": "#1F1F20",
        "borderColor": "#1F1F20",
        "titleColor": "#FF1C1C",
        "text": "#D8DFF0",
        "remindMe": "#A2A5E8",
        "block": "#5766D9",
      },
      "light": {
        "imgCard": "#F1F1F1",
        "contentCard": "#FFFFFF",
        "borderColor": "#E8E8E8",
        "titleColor": "#C01818",
        "text": "#343434",
        "remindMe": "#4258FF",
        "block": "#4258FF",
      }
    },
      
    currentFileName = "",
    
      show = function () {
        _window.ready(async function () {
          let domain = await _dw.getDomain();
          let fileName = await _dw.getFileName();
          currentFileName = fileName;

          // Retrieve color mode info
          var payload = JSON.parse(await _external.getArgument("template_args"));
          let colorMode = "light";

          if (payload["color_mode"] && payload["color_mode"].toLowerCase() != colorMode
            && await chrome.webview.hostObjects.wa_external.GetSetting(false, "1", "enable_toast_color_mode")) {
            colorMode = payload["color_mode"].toLowerCase();
          }

          const closeBtnEnable = await chrome.webview.hostObjects.wa_external.GetSetting(false, "1", "dw_toast_close_btn_enable");

          setSize();
          const colorModeStyles = colorModeStylesMap[colorMode];
          initColorMode(colorModeStyles, closeBtnEnable);
          initColorModeL10N(domain, fileName, l10nMap);
          initButtons(l10nMap, $el.newBlockBtn, $el.newAcceptBtn);

          _window.show();
          _dw.uiDisplayed();
          window.chrome.webview.postMessage("set_focus");

          // Send analytics for download block impression
          await sendDownloadBlockAnalytics("wa_download_block_impression", "Impression", fileName);

          // Auto dismiss after 5 minutes if the user installed WA within the last day
          if (lessThanADaySinceInstall()) {
            startAutoDismiss();
          }
        });
      },

      block = async function () {
        await sendDownloadBlockAnalytics("wa_download_block_interaction", "Blocked", currentFileName);
        _window.close();
      },

      allow = async function () {
        await sendDownloadBlockAnalytics("wa_download_block_interaction", "AcceptRisk", currentFileName);
        _dw.allow();
        _window.close();
      },

      sendDownloadBlockAnalytics = async function(eventName, action, fileName) {
        try {
          chrome.webview.hostObjects.wa_external.log("DownloadWarningToast inside sendDownloadBlockAnalytics");
          let browserCode = "Unknown";
          let processName = "Unknown";
          let warnUIType = "Unknown";
          let warnColour = "default";

          let tempArgs = JSON.parse(await _external.getArgument("template_args"));
          chrome.webview.hostObjects.wa_external.log("DownloadWarningToast tempArgs: " + (tempArgs ? JSON.stringify(tempArgs) : "null"));
          
          try {
            browserCode = await chrome.webview.hostObjects.wa_external.GetBrowserTypeCode();
            processName = tempArgs["processName"] || "Unknown";
            warnColour = tempArgs["warnColour"] || "default";
            warnUIType = tempArgs["uiType"] || "Unknown";
          } catch (innerErr) {
            chrome.webview.hostObjects.wa_external.log("DownloadWarningToast error getting browser, process, color, or UI type info: " + innerErr.message);
          }
          
          const event_data = {
            _event_name: eventName,
            name: "DownloadBlock", 
            interaction_type: action,
            browser: browserCode,
            process_name: processName,
            file_name: fileName,
            colour: warnColour,
            ui_type: warnUIType
          };
          
          var analyticsEvent = JSON.stringify(event_data);
          chrome.webview.hostObjects.wa_external.log("DownloadWarningToast Sending telemetry: " + analyticsEvent);
          await _instrument.sendAnalyticsEvent(event_data);
        } catch (e) {
            chrome.webview.hostObjects.wa_external.log("DownloadWarningToast Error sending download block analytics: " + e.message);
        }
      },

      initColorModeL10N = function (domain, fileName, l10nMap) {
        $el.header.text(l10nMap["TITLE"]);
        $el.desc.text(l10nMap["TEXT"]);
        $el.fileNameLabel.text(`${l10nMap["FILENAME"]}:`);
        $el.domainLabel.text(`${l10nMap["DOMAIN"]}:`);
        $el.fileName.text(fileName);
        $el.domain.text(domain);
      },

      initColorMode = async function (colorModeStyles, closeBtnEnable) {
        if(closeBtnEnable) {
          $el.closeBtn.removeClass("hide");
          // Move draggable away from close button
          var imgWidth = $el.closeBtn[0].width * 1.5;
          chrome.webview.hostObjects.wa_external.SetDraggableOffset(0, imgWidth + 20);
          initCloseListener();
        }
        // Change toast
        $el.body.css({ "font-family": `"Poppins", "Open Sans", Arial, Helvetica, sans-serif`, "border": `1px solid ${colorModeStyles["borderColor"]}`, "border-radius": "8px" });

        // Color mode styles
        $el.newImageSection.css("background-color", colorModeStyles["imgCard"]);
        $el.content.css("background-color", colorModeStyles["contentCard"]);
        $el.textColor.css("color", colorModeStyles["text"]);
        $el.header.css("color", colorModeStyles["titleColor"]);
        $el.newAcceptBtn.css({ "background-color": colorModeStyles["contentCard"], "color": colorModeStyles["remindMe"] });
        $el.newBlockClass.css({ "border-color": colorModeStyles["block"], "background-color": colorModeStyles["block"] });
      },

      initButtons = function (l10nMap, blockButton, acceptButton) {
        blockButton.click(block);
        blockButton.text(l10nMap["BUTTON_BLOCK"]);

        acceptButton.click(allow);
        acceptButton.text(l10nMap["BUTTON_ACCEPT"]);
      }

      initCloseListener = function () {
        $el.closeBtn.click(async function () {
          await sendDownloadBlockAnalytics("wa_download_block_interaction", "Closed_Explicit", currentFileName);
          _window.close();
        });
      }

      setSize = function () {
        _window.setWidth("565");
        _window.setHeight("334");
      }
      
      startAutoDismiss = function () {
        setTimeout(async function () {
          await sendDownloadBlockAnalytics("wa_download_block_interaction", "Closed_Other", currentFileName);
          _window.close();
        }, 300000); // 5 minutes
      },
      
      lessThanADaySinceInstall = async function () {
        var installTime = await chrome.webview.hostObjects.wa_external.GetSetting(0, "1", "*InstallDate")
        const now = Date.now();
        const diffInMilliseconds = now - (installTime * 1000);
        const diffInDays = diffInMilliseconds / (1000 * 60 * 60 * 24);
        return diffInDays < 1;
      };

    return {
      show: show
    }
  };

}(window.WebAdvisor = window.WebAdvisor || {}, jQuery));

$(function () {
  try {
    chrome.webview.hostObjects.wa_external.log("before new WebAdvisor.UI.DownloadWarningToast");
    var toast = new WebAdvisor.UI.DownloadWarningToast();
    chrome.webview.hostObjects.wa_external.log("before toast.show()");
    toast.show();
  }
  catch (e) {
    console.log("something broke in the code");
    console.log(e);
  }
});

//DA49D60C35BEEF6CB1D3E8B49957837990D2E8B018739230BCEFB2BD2147B9A6A92259A565D2E741F2FCE8843D649786A96A8F8A57F94311FFEA3440C4E27ADF++