Mini Kabibi Habibi
/* 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++