- Scan ID:
- ec2a0e59-17ab-44b9-99ef-95e9af7f3234Finished
- Submitted URL:
- https://quickshare.samsungcloud.com/sNfyATnbKF1a
- Report Finished:
Links · 0 found
The outgoing links identified from the page
JavaScript Variables · 11 found
Global JavaScript variables loaded on the window object of a page, are variables declared outside of functions and accessible from anywhere in the code within the current scope
Name | Type |
---|---|
onbeforetoggle | string |
documentPictureInPicture | string |
onscrollend | string |
$ | string |
jQuery | string |
Cookies | string |
moment | string |
Handlebars | string |
RemoteShare | string |
ShareLink | string |
Console log messages · 3 found
Messages logged to the web console
Type | Category | Log |
---|---|---|
warning | other |
|
warning | security |
|
warning | other |
|
HTML
The raw HTML body of the page
<!DOCTYPE html><html><head> <title>Quick Share</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="robots" content="noindex,nofollow,noimageindex"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=medium-dpi"> <meta property="og:title" content="Quick Share"> <meta property="og:type" content="website"> <meta property="og:image" content="https://quickshare.samsungcloud.com/ls/public/v1/links/1726939128130LapgKFz/contents/90dbb230783d11efa62b6e27e7aacf97?signature=KBNoHMgUK6vfyaIajYqss8v8IObbKY2LR_eDRbY0UEjWeUHt4Q8mogjjnCJmOZmkX1eoIM8IGPzAAGqLwoZKSht6hGzAK_lOh2_qVxv_FIMUwFzHzvoiLC_dliqoggr2eEbFG3JlMIFzaJ9H1Ue14w&storageType=file"> <meta property="og:description" content="1 file (656 B)"> <link rel="shortcut icon" type="image/x-icon" href="/resources/images/Webview_app_icon_quick_share_new.png"> <link rel="stylesheet" href="/resources/css/layout.css?ver=1726939151679"> <link rel="preload" as="font" href="/resources/fonts/Roboto-Medium.woff"> <script> if(navigator.userAgent.toLocaleLowerCase().indexOf('trident') > -1 || navigator.userAgent.toLocaleLowerCase().indexOf('msie') > -1) { window.location.href = "/error/notsupported"; }; </script> <script type="text/javascript" src="/resources/js/jquery/jquery-2.2.0.min.js"></script> <script type="text/javascript" src="/resources/js/jquery/jquery.numeric.min.js"></script> <script type="text/javascript" src="/resources/js/jquery/cookie.min.js"></script> <script type="text/javascript" src="/resources/js/common/moment.min.js"></script> <script type="text/javascript" src="/resources/js/common/handlebars.min-latest.js"></script> <script type="text/javascript" src="/resources/js/common/handlebars.helper.js"></script> <script type="text/javascript" src="/resources/js/common/remoteshare.prototype.js?ver=20061701"></script> <script type="text/javascript" src="/resources/js/app/remoteshare.js?ver=20211115"></script> <script type="text/javascript" src="/resources/js/app/sharelink.js?ver=1726939151679"></script> <script type="text/javascript"> //<!-- //<![CDATA[ $(document).ready(function () { var options = {}; options.contextPath = ''; options.requestTime = ''; options.contentsToken = '1726939128130LapgKFz'; options.contentsTotalCnt = '1'; options.uploadCompleted = 'true'; options.forEvent = 'false'; options.linkUrl = 'https://quickshare.samsungcloud.com/sNfyATnbKF1a'; options.linkUrlVersion = 'V1' options.selectMode = window.location.hash === '#selectionMode'; options.isSelectAllMode = sessionStorage.getItem('selectAllTriggered') == 'true'; options.selectItemsMsg = 'Select items'; options.selectItemsSingular = 'lenPlaceholder selected'; options.selectItemsPlural = 'lenPlaceholder selected'; options.sharedatacontents = JSON.parse('[{"hash":"9c1bc18de3b54f46ec7be86728404e0291360edefad981f162b11444eeecda8a","original":"https://quickshare.samsungcloud.com/ls/public/v1/links/1726939128130LapgKFz/contents/9192a620783d11efb2a9f2dd516b8be7?signature=KBNoHMgUK6vfyaIajYqss8v8IObbKY2LR_eDRbY0UEjWeUHt4Q8mogjjnCJmOZmkX1eoIM8IGPzAAGqLwoZKSht6hGzAK_lOh2_qVxv_FIMUwFzHzvoiLC_dliqoggr2eEbFG3JlMIFzaJ9H1Ue14w&storageType=file","thumbnail":null,"contentsSequenceNo":1,"size":656,"name":"FREE HACKING TOOLS 2024.txt","bigThumbnail":null,"contentType":"text/plain","extraAttribute":0,"fileTypeCategoryThumbnailPath":"/resources/images/file_type_icon/txt.svg","fileTypeThumbnailPath":"/resources/images/file_type_icon/txt_thumb.svg","formattedFileSize":"656 B"}]'); options.imageResourcePath = '/resources/images'; ShareLink.list.functions.init(options); var isFirefox = navigator.userAgent.toLocaleLowerCase().indexOf('firefox') > -1; var isChrome = (navigator.userAgent.toLocaleLowerCase().indexOf('chrome') > -1 && !(navigator.userAgent.toLocaleLowerCase().indexOf('edg') > -1)); if (!/iPhone/.test(navigator.userAgent)) { // hide learn more link if not ios user $('.learn-more').addClass('noDisplay'); } $('#uploadingInProgressMsg').removeClass('hide'); //Add loading of page if(options.selectMode == 'false'){ $('#loading_bar').css('display', 'block'); } window.addEventListener('load', (event) => { $('#loading_bar').css('display', 'none'); }); /* manipulate dom elements */ var expiredTime = parseInt('1727161199000') / 1000; var dateExpiration = moment.unix(expiredTime).format('MMM D, YYYY'); var createdTime = parseInt('1726939128129') / 1000; var createdDate = moment.unix(createdTime).format('MMM D, YYYY'); // document.getElementById("expiredId").innerHTML = 'Available until ' + dateExpiration +''; document.getElementById("infoShareId").innerHTML = 'Shared on ' + createdDate +''; if (1 > 1) { document.getElementById("newFile").innerHTML = '' + 1 + '/' + 1 + ' files'; } else { document.getElementById("newFile").innerHTML = '0/1 file'; } let expiryObj = ShareLink.list.functions.expiryDuration(expiredTime); if (expiryObj.moreThanDayAndHour) { document.getElementById("expiredId").innerHTML = 'Expires in ' + expiryObj.days + ' days ' + expiryObj.duration.hours() + ' hours'; } else if (expiryObj.moreThanDay1Hour){ // ex 2 day 1 hour (1 args days) document.getElementById("expiredId").innerHTML = 'Expires in ' + expiryObj.days + ' days 1 hour'; } else if (expiryObj.moreThanDay) { // ex 2 days (1 args days) document.getElementById("expiredId").innerHTML = 'Expires in ' + expiryObj.days + ' days'; } else if (expiryObj.dayMoreThanHour) { // ex 1 day 8 hours (1 args hours) document.getElementById("expiredId").innerHTML = 'Expires in 1 day ' + expiryObj.duration.hours() + ' hours'; } else if (expiryObj.dayHour) { // ex 1 day 1 hour (no args) document.getElementById("expiredId").innerHTML = 'Expires in 1 day 1 hour'; } else if (expiryObj.dayOnly) { // ex 1 day (no args) document.getElementById("expiredId").innerHTML = 'Expires in 1 day'; } else if (expiryObj.moreThanHour) { // ex 23 hrs (1 args hours) document.getElementById("expiredId").innerHTML = 'Expires in ' + expiryObj.duration.hours() + ' hours'; } else if (expiryObj.hourOnly) { // ex 1 hour (no args) document.getElementById("expiredId").innerHTML = 'Expires in 1 hour'; } else { document.getElementById("expiredId").innerHTML = ''; } /* end of new expiration manipulation */ //CSS adjustment OnLoad for body with variable header height setTimeout(() => { ShareLink.list.functions.updateBodyTop(); }, 50); //Added timeout to ensure body is rendered if(!ShareLink.globals.uploadCompleted && sessionStorage.getItem('backTriggered') == 'true' && sessionStorage.getItem('refreshTriggered') == 'true'){ sessionStorage.setItem('backTriggered', false); sessionStorage.setItem('refreshTriggered', false); $('#uploadingInProgressMsg').addClass('hide'); $('.refresh').addClass('hide'); sessionStorage.setItem('detailViewVisited', false); // chrome freeze issue no need to reload again if satisfied in this condition location.reload(); } else { if(sessionStorage.getItem('downloadingState') === 'true') { $('#downloadInProgressMsg').addClass('show'); $('#uploadingInProgressMsg').addClass('hide'); ShareLink.list.functions.updateBodyTop(); sessionStorage.setItem('downloadingState', false); } } if ('false' === 'true') { window.history.pushState(null, null, window.location.href.split('?')[0]); $('#unsupportedMsg').show(); $('body').css('overflow', 'hidden').on('touchmove', function (e) { e.preventDefault(); }); } $(window).bind('scroll', function() { // on scroll bottom loadmore const isLoading = sessionStorage.getItem('isLoading'); const elem = options.selectMode ? $('.contentsListSelection').children().last() : $('#contentList').children().last(); if(isElementInViewport(elem) && isLoading !== 'true') { paginateContents(); }; }) function isElementInViewport (el) { if (typeof jQuery === "function" && el instanceof jQuery) { el = el[0]; } var rect = el.getBoundingClientRect(); return ( rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth) ); } window.onbeforeunload = function () {}; window.addEventListener('pageshow', (event) => { if(isChrome) { // Chrome freezing workaround solution if(sessionStorage.getItem('detailViewVisited') === 'true') { sessionStorage.setItem('detailViewVisited', false); location.reload(); // chrome freeze workaround } } if(options.selectMode) { toggleSelectionMode(); if (isFirefox) { // for firefox to use cookie storage instead of session due to issue CSWEB-1542 - just transfer cookie to session again var cookieSelectedIds = Cookies.get('selectedIds' + options.requestTime) || []; var cookieUnselectedIds = Cookies.get('unSelectedIds' + options.requestTime) || []; sessionStorage.setItem('selectedIds' + options.requestTime, cookieSelectedIds); Cookies.remove('selectedIds'); sessionStorage.setItem('unSelectedIds' + options.requestTime, cookieUnselectedIds); Cookies.remove('unSelectedIds'); } let isInitialSelection = sessionStorage.getItem('selectedIds' + options.requestTime) === null let selectedIds = sessionStorage.getItem('selectedIds' + options.requestTime) ? sessionStorage.getItem('selectedIds' + options.requestTime).split(',') : []; if (isInitialSelection) { selectedIds = Array.from({ length: ShareLink.globals.contentsTotalCnt}, (_, index) => index + 1); sessionStorage.setItem('selectedIds' + options.requestTime, selectedIds.join(',')); } var $checkBoxElements = $('*[id^="chk"][id!="checkAll"]'); $checkBoxElements.each(function (index) { if (selectedIds.indexOf((index + 1).toString()) > -1) { $(this).prop("checked", true); $(this).hide().show(0); } else { $(this).prop("checked", false); $(this).hide().show(0); } }); if (selectedIds.length > 0) { $('#downloadFilesBtn').removeClass('off'); $('#downloadFilesBtn').addClass('on'); } setTimeout(() => { if (selectedIds.length > 0) { if (selectedIds.length == ShareLink.globals.sharedatacontents.length) { $('#checkAll').prop('checked', true); } else { $('#checkAll').prop('checked', false); } } else { $('#downloadFilesBtn').removeClass('on'); $('#downloadFilesBtn').addClass('off'); $('#checkAll').prop('checked', false); } }, 0); ShareLink.list.functions.updateCheckboxDesc(); } }); if (!ShareLink.globals.uploadCompleted || ''.length > 0) { if ($('#contentList > li').length > 0) { $('#sub_content').addClass('mr_t240'); } } if (ShareLink.globals.contentsTotalCnt <= 0) { $('#showCheckBox').hide(); $("#downloadAllBtn").hide(); $("#downloadFilesBtn").hide(); $(".select_container").hide(); } if (ShareLink.globals.contentsTotalCnt === 1) { $(".select_container").hide(); } if ('1' === '1') { $('#selectFilesBtn').addClass('on'); document.getElementById("selectFilesBtn").innerHTML = 'Download'; } if (ShareLink.list.selectMode) { $('#contentList').addClass('select_area'); } if (RemoteShare.SupportedWindows.isDesktop()) { $('.photo').unwrap('a'); $('.sender').text('Quick Share'); $('.open_in_app').text('Open in app'); } else { $('.photo').unwrap('a'); $('.sender').text('Quick Share'); $('.open_in_app').remove(); } /* attach event binding */ $('#showCheckBox').on('click', function (e) { if ($('#contentList > li').length === 1) { ShareLink.list.functions.downloadSingleContent(); } else { window.location.href = ShareLink.urls.contentsListUrl + '?' + $.param({ 'contentsToken': ShareLink.globals.contentsToken, 'checkbox': true, 'callExtraInfo': 'showCheckBox', 'linkUrlVersion': ShareLink.globals.linkUrlVersion }); } e.preventDefault(); e.stopPropagation(); }); $('body').on('click', '#showCheckBox', function (e) { if ($('#contentList > li').length === 1) { ShareLink.list.functions.downloadSingleContent(); } else { window.location.href = ShareLink.urls.contentsListUrl + '?' + $.param({ 'contentsToken': ShareLink.globals.contentsToken, 'checkbox': true, 'callExtraInfo': 'showCheckBox', 'linkUrlVersion': ShareLink.globals.linkUrlVersion }); } e.preventDefault(); e.stopPropagation(); }); $('#selectFilesBtn').on('click', function (e) { if ('1' === '1') { ShareLink.list.functions.downloadSingleContent(); } else { sessionStorage.setItem('selectAllTriggered', true); sessionStorage.setItem('unSelectTriggered', false); options.selectMode = true; window.location.hash = "#selectionMode"; // $('.contentsListSelection input[type=checkbox]:checked').trigger('change'); ShareLink.list.functions.selectAllCheckbox(); } sessionStorage.setItem('unSelectedIds' + options.requestTime, ''); $('.footer_link').removeClass('check-true'); $('.footer_link').addClass('check-false'); e.preventDefault(); }); $('#cancelSelectBtn').on('click', function (e) { options.selectMode = false; var isSelectAllTriggered = sessionStorage.getItem('selectAllTriggered') === 'true'; if(isSelectAllTriggered) { history.go(-1); } else { /** This block covers the scenario when #selectionMode is accessed through * hard url to prevent going to new tab page when cancel select is pressed. * This also removes the # on url when hash is reassigned to empty string. **/ window.location.hash = ''; var uri = window.location.toString(); if (uri.indexOf("#") > 0) { var clean_uri = uri.substring(0,uri.indexOf("#")); window.history.replaceState({},document.title, clean_uri); } } sessionStorage.setItem('backTriggered', true); sessionStorage.setItem('selectAllTriggered', false); sessionStorage.setItem('selectedIds' + options.requestTime, ''); e.preventDefault(); $('.footer_link').removeClass('check-false'); $('.footer_link').addClass('check-true'); }); $('.file_wrap').on('click', function (e) { window.location.href = ShareLink.globals.contextPath + ShareLink.urls.contentsViewUrl + '?' + $.param({ 'contentsToken': ShareLink.globals.contentsToken, 'currentIndex': this.id, 'linkUrlVersion': ShareLink.globals.linkUrlVersion }); e.preventDefault(); e.stopPropagation(); }); $('body').on('click', '.file_wrap', function (e) { if(isChrome) { $('body').css('display', 'none'); sessionStorage.setItem('detailViewVisited', true); } sessionStorage.setItem('downloadingState', $('#downloadInProgressMsg')[0].classList.value.includes('show')); setTimeout(() => { window.location.href = ShareLink.globals.contextPath + ShareLink.urls.contentsViewUrl + '?' + $.param({ 'contentsToken': ShareLink.globals.contentsToken, 'currentIndex': this.id, 'linkUrlVersion': ShareLink.globals.linkUrlVersion }); }, 100); e.preventDefault(); e.stopPropagation(); }); $('#checkAll').on('change', function () { $(this).next('label').removeClass('sel'); if(this.checked){ sessionStorage.setItem('unSelectTriggered', false); sessionStorage.setItem('selectAllTriggered', true); sessionStorage.setItem('unSelectedIds' + options.requestTime, ''); return ShareLink.list.functions.selectAllCheckbox(); } sessionStorage.setItem('unSelectTriggered', true) sessionStorage.setItem('selectAllTriggered', false); ShareLink.list.functions.unSelectAllCheckbox(); }); var getZipFileName = function (){ var today = new Date(); var date = today.getFullYear().toString().substr(-2) + (today.getMonth() + 1).toString().padStart(2, "0") + today.getDate().toString().padStart(2, "0") + today.getHours().toString().padStart(2, "0") + today.getMinutes().toString().padStart(2, "0"); var zipFileName = 'QuickShare_' + date + '.zip'; $('.zipProgress-msg h3').text(zipFileName); return zipFileName; } var paginateContents = function() { var currLength = $('#contentList > li').length + 1; sessionStorage.setItem('isLoading', 'true'); let paginatedArray = ShareLink.globals.sharedatacontents.slice((page - 1) * pageSize, page * pageSize); if(paginatedArray.length){ paginatedArray.map((item, index) => { // loop for regular list mode let itemHTML = ''; if(!item.thumbnail) { itemHTML += `<li id=${index + currLength} class="file_wrap content_class"> <a href=#/ class=file_category> <span class="file_type new">${item.name}</span> <img src=${item.fileTypeCategoryThumbnailPath} alt="${item.name}" longdesc=${item.original} /> </a> </li>` } else { if(item.contentType.includes('video')){ itemHTML += `<li id=${index + currLength} class=file_wrap content_class> <a href="#/"> <img src=${item.thumbnail} alt="${item.name}" longdesc=${item.original} onerror="this.src='${options.imageResourcePath}/file_type_icon/broken.svg'; this.parentElement.classList.add('file_broken');" /> <span class=movie_type> <img src=${options.imageResourcePath}/linksharing_view_video_ic.png alt=movie icon /> </span> <span class="movie_type"> <img src=${options.imageResourcePath}/linksharing_view_video_ic.png alt="movie icon"> </span> </a> </li>` } else if(item.contentType.includes('audio')){ itemHTML += `<li id=${index + currLength} class=file_wrap content_class> <a href=#/> <img src=${item.thumbnail} alt="${item.name}" longdesc=${item.original} onerror="this.src='${options.imageResourcePath}/file_type_icon/broken.svg'; this.parentElement.classList.add('file_broken');" /> <span class=movie_type> <img src=${options.imageResourcePath}/linksharing_view_music_ic.png alt=music icon /> </span> <span class="movie_type"> <img src=${options.imageResourcePath}/linksharing_view_music_ic.png alt="music icon"> </span> </a> </li>` } else if(item.contentType.includes('x-icon')) { itemHTML += `<li id=${index + currLength} class="file_wrap content_class"> <a href=#/ class=file_category> <span class="file_type new">${item.name}</span> <img src='${options.imageResourcePath}/file_type_icon/etc.svg' alt="${item.name}" longdesc=${item.original} /> </a> </li>` } else { itemHTML += `<li id=${index + currLength} class="file_wrap content_class"> <a href="#/"> <img src=${item.thumbnail} alt="${item.name}" longdesc=${item.original} onerror="this.src='${options.imageResourcePath}/file_type_icon/broken.svg'; this.parentElement.classList.add('file_broken');" /> </a> </li>` } } $('#contentList').append(itemHTML); }); paginatedArray.map((item, index) => { // loop for selection mode let itemHTML = ''; if(!item.thumbnail) { itemHTML += `<li id=${index + currLength}> <input type="checkbox" id=chk${index + currLength} value=${index + currLength} checked=${options.isSelectAllMode} /> <label for=chk${index + currLength} class="file_category"> <span class="file_type new select_mode">${item.name}</span> <img src=${item.fileTypeCategoryThumbnailPath} alt="${item.name}" longdesc=${item.original} /> <input id=${index + currLength} type="button" class="expandBtn" /> </label> </li>` } else { // for selectionMode if(item.contentType.includes('video')){ itemHTML += `<li id=${index + currLength}> <input type="checkbox" id=chk${index + currLength} value=${index + currLength} checked=${options.isSelectAllMode} /> <label for=chk${index + currLength}> <img src=${item.thumbnail} alt="${item.name}" longdesc=${item.original} onerror=this.src='${options.imageResourcePath}/file_type_icon/broken.svg'; this.parentElement.classList.add('file_broken');/> <span class="movie_type"> <img src=${options.imageResourcePath}/linksharing_view_video_ic.png alt="movie icon"> </span> <span class="movie_type"> <img src=${options.imageResourcePath}/linksharing_view_video_ic.png alt="movie icon"> </span> <input id=${index + currLength} type="button" class="expandBtn" /> </label> </li>` } else if(item.contentType.includes('audio')){ itemHTML += `<li id=${index + currLength}> <input type="checkbox" id=chk${index + currLength} value=${index + currLength} checked=${options.isSelectAllMode} /> <label for=chk${index + currLength}> <img src=${item.thumbnail} alt="${item.name}" longdesc=${item.original} onerror=this.src='${options.imageResourcePath}/file_type_icon/broken.svg'; this.parentElement.classList.add('file_broken');/> <span class="movie_wrap"></span><span class="movie_type"> <img src=${options.imageResourcePath}/linksharing_view_music_ic.png alt="movie icon"> </span> <span class="movie_wrap"></span> <span class="movie_type"> <img src=${options.imageResourcePath}/linksharing_view_music_ic.png alt="movie icon"> </span> <input id=${index + currLength} type="button" class="expandBtn" /> </label> </li>` } else if(item.contentType.includes('x-icon')) { itemHTML += `<li id=${index + currLength}> <input type="checkbox" id=chk${index + currLength} value=${index + currLength} checked=${options.isSelectAllMode} /> <label for=chk${index + currLength} class="file_category"> <span class="file_type new select_mode">${item.name}</span> <img src='${options.imageResourcePath}/file_type_icon/etc.svg' alt="${item.name}" longdesc=${item.original} /> <input id=${index + currLength} type="button" class="expandBtn" /> </label> </li>` } else { itemHTML += `<li id=${index + currLength}> <input type="checkbox" id=chk${index + currLength} value=${index + currLength} checked=${options.isSelectAllMode} /> <label for=chk${index + currLength}> <img src=${item.thumbnail} alt="${item.name}" longdesc=${item.original} onerror="this.src='${options.imageResourcePath}/file_type_icon/broken.svg'; this.parentElement.classList.add('file_broken');" /> <input id=${index + currLength} type="button" class="expandBtn" /> </label> </li>` } } $('.contentsListSelection').append(itemHTML); }); var selectedIds = sessionStorage.getItem('selectedIds' + options.requestTime) ? sessionStorage.getItem('selectedIds' + options.requestTime).split(',') : []; if(sessionStorage.getItem('unSelectTriggered') === 'true'){ var $checkBoxElements = $('*[id^="chk"][id!="checkAll"]'); $checkBoxElements.each(function (index) { $(this).prop("checked", false); $(this).hide().show(0); }); } page++; let unselectedIds = sessionStorage.getItem('unSelectedIds' + options.requestTime)?.split(',') || []; if(unselectedIds.length){ unselectedIds.map(id => { $(`#chk${id}`).prop('checked', false); }); }; const newSelectedIds = sessionStorage.getItem('selectedIds' + options.requestTime)?.split(',') || []; if(sessionStorage.getItem('unSelectTriggered') === 'true' && newSelectedIds.length){ newSelectedIds.map(id => { $(`#chk${id}`).prop('checked', true); }) } } sessionStorage.setItem('isLoading', 'false'); ShareLink.list.functions.updateCounter(); }; var attachDownloadEvents = function(isDownloadAll, selectedIds=[]) { if(isDownloadAll) { $('#individualDownload').click(function() { $('#downloadOption').addClass('noDisplay'); ShareLink.list.functions.downloadAllContents(); }); $('#zipDownload').click(function() { var allIds = Array.from({length: ShareLink.globals.contentsTotalCnt}, (_, i) => i + 1); // pass all IDS $('#progressOverlay').removeClass('noDisplay'); $('#downloadOption').addClass('noDisplay'); $('#uploadingInProgressMsg').addClass('hide'); $('#downloadInProgressMsg').addClass('show'); $('body').addClass('noScroll'); ShareLink.list.functions.updateBodyTop(); ShareLink.list.functions.downloadAsZip(allIds, getZipFileName()); // set to true if zip download All, otherwise selected items only }); } else { $('#individualDownload').click(function() { $('#downloadOption').addClass('noDisplay'); ShareLink.list.functions.downloadContents(); }); $('#zipDownload').click(function() { $('#progressOverlay').removeClass('noDisplay'); $('#downloadOption').addClass('noDisplay'); $('#uploadingInProgressMsg').addClass('hide'); $('#downloadInProgressMsg').addClass('show'); $('body').addClass('noScroll'); ShareLink.list.functions.updateBodyTop(); ShareLink.list.functions.downloadAsZip(selectedIds, getZipFileName()); }); } } $(document).on('click', '.refresh', async function (e) { const isRTL = 'false'; $('.refresh img').attr('src', "/resources/images/loadingbar.gif"); sessionStorage.setItem('refreshTriggered', true); await ShareLink.list.functions.refreshContents(); isRTL === 'true' ? $('#listInfo .file').attr("dir","rtl") : null; $("#contentList li").remove(); $(".contentsListSelection li").remove(); page = 1; paginateContents(); $('#loading_bar').css('display', 'none'); }); $('#downloadFilesBtn').on('click', function (e) { var selectedIds = sessionStorage.getItem('selectedIds' + options.requestTime) ? sessionStorage.getItem('selectedIds' + options.requestTime).split(',') : []; if (selectedIds.length > 1) { $('#downloadOption').removeClass('noDisplay'); attachDownloadEvents(false, selectedIds); } else { ShareLink.list.functions.downloadContents(); } e.preventDefault(); e.stopPropagation(); }); $('#downloadAllBtn').on('click', function (e) { if(ShareLink.globals.contentsTotalCnt > 1) { $('#downloadOption').removeClass('noDisplay'); attachDownloadEvents(true); } else { ShareLink.list.functions.downloadAllContents(); } e.preventDefault(); e.stopPropagation(); }); $('.cancelOk').click(function(){ $('#progressOverlay').addClass('noDisplay'); $('.zipProgress-msg').removeClass('noDisplay'); $('.zipError-msg').addClass('noDisplay'); $('body').removeClass('noScroll'); if(window.location.hash === '#selectionMode') window.history.back(); // remove selection mode }); $('#cancelZip').click(function() { if(ShareLink.functions.xhr) { ShareLink.functions.xhr.abort(); // cancel the api request on zip } }); ShareLink.list.functions.attachEventActions(); // attach events on list items $('.learn-more').on('click', function(){ $('#dialogOverlay').removeClass('noDisplay'); $('body').addClass('noScroll'); }); $('.dialogCloseBtn').on('click', function(){ $('#dialogOverlay').addClass('noDisplay'); $('body').removeClass('noScroll'); }); let page = 1; // initial page const pageSize = 60; // pagesize default paginateContents(); }); $(document).click(function (e){ if(!e.target.closest('#downloadOption')) { $('#individualDownload, #zipDownload').unbind('click'); $('#downloadOption').addClass('noDisplay'); } }); $(document).on('click', '#installBtn, .open_in_app', function (e) { var url; e.preventDefault(); if (RemoteShare.SupportedWindows.isDesktop() && '460' !== '') { url = 'samsung-linksharing-add-link:?linkurl={linkUrl}'; RemoteShare.functions.recordOpenAppLog('linkshare', ShareLink.globals.contentsToken); url = url.replace('{linkUrl}', ShareLink.globals.linkUrl); window.location.href = url; } else { $('#unsupportedMsg').show(); $('body').css('overflow', 'hidden').on('touchmove', function (e) { e.preventDefault(); }); } }).on('click', '#okBtn', function (e) { $('#unsupportedMsg').hide(); $('body').css('overflow', 'auto').off('touchmove'); e.preventDefault(); e.stopPropagation(); }); $(document).on('click', '.file_wrap.handlebars_file', function (e) { window.location.href = ShareLink.globals.contextPath + ShareLink.urls.contentsViewUrl + '?' + $.param({ 'contentsToken': ShareLink.globals.contentsToken, 'currentIndex': this.id, 'linkUrlVersion': ShareLink.globals.linkUrlVersion }); e.preventDefault(); e.stopPropagation(); }); $(window).on('hashchange', function() { toggleSelectionMode(); }); $(window).resize(function() { //CSS adjustment on resize for body with variable header height var subContentBody = document.getElementById("sub_content"); if (subContentBody){ ShareLink.list.functions.updateBodyTop(); } }); $(window).load(function () { //CSS adjustment on load for body with variable header height ShareLink.list.functions.updateBodyTop(); ShareLink.list.functions.landingStatsLog(); $('#contentList img').each(function () { if (!this.complete || typeof this.naturalWidth === "undefined" || this.naturalWidth === 0) { this.src = '/resources/images/file_type_icon/broken.svg'; this.parentElement.classList.add('file_broken'); } }); }); var toggleSelectionMode = function() { if(window.location.hash === '#selectionMode') { $('.check_container').removeClass('noDisplay'); $('#selectFilesBtn').addClass('noDisplay'); $('#cancelSelectBtn').removeClass('noDisplay'); $('.contentsListNormal').addClass('noDisplay'); $('.contentsListSelection').removeClass('noDisplay'); $('#downloadAllBtn').addClass('noDisplay'); $('#downloadFilesBtn').removeClass('noDisplay'); } else { $('.check_container').addClass('noDisplay'); $('#selectFilesBtn').removeClass('noDisplay'); $('#cancelSelectBtn').addClass('noDisplay'); $('.contentsListNormal').removeClass('noDisplay'); $('.contentsListSelection').addClass('noDisplay'); $('#downloadAllBtn').removeClass('noDisplay'); $('#downloadFilesBtn').addClass('noDisplay'); } } //]]> //--> </script> </head> <body> <!-- wrap --> <div id="wrap" class="body_container check-true exp-false"> <!-- header --> <header id="headerId"> <div class="fix_wrap"> <div class="header_container"> <span class="photo"><img src="/resources/images/Webview_app_icon_quick_share_new.png" alt="install link icon"></span> <span class="sender">Quick Share</span> <div class="open_in_app_area"> <span class="open_in_app">Open in app</span> </div> </div> </div> <div class="info_wrap"> <div class="button_wrap"> <div class="header_container"> <span id="listInfo" class="list_info info_container"> <span id="infoShareId" class="infoShareText">Shared on Sep 21, 2024</span> <span> <span class="file"> <span id="newFile" class="newFile noDisplay">0/1 file</span> 1 file (656 B) </span> </span> <span> <span id="expiredId" class="expired">Expires in 2 days 13 hours</span> </span> </span> <span class="download_container"> <!-- <a href="#/" id="downloadAllBtn" class="link_button on link_button_mod">Download</a> <a href="#/" id="downloadFilesBtn" class="link_button off link_button_mod noDisplay">Download</a> --> <button id="downloadAllBtn" class="link_button on link_button_mod"> <span>Download</span> </button> <button id="downloadFilesBtn" class="link_button link_button_mod noDisplay on"> <span>Download</span> </button> <!-- <a href="#/" id="downloadAllBtn" class="link_button on link_button_mod">Download</a> --> </span> <div id="downloadOption" class="noDisplay"> <ul> <li id="individualDownload">Download as individual files</li> <li id="zipDownload">Download as ZIP file</li> </ul> </div> </div> <div id="downloadInProgressMsg" class="detailIncomplete"> <div class="detailIncomplete"> <span> After downloading, the files will appear in your Downloads folder.</span> <span class="learn-more noDisplay"> Learn more</span> </div> </div> <div class="header_spacer"></div> <div class="select_container" style="display: none;"> <span class="check_container noDisplay"> <div id="checkArea" class="check_area"> <p><input type="checkbox" id="checkAll"><label for="checkAll"></label></p> <p class="all"><label for="checkAll"> All</label></p> </div> <div id="selectedCount" class="count">1 selected</div> </span> <p id="selectFilesBtn" class="selectionBtn on">Download</p> <p id="cancelSelectBtn" class="selectionBtn noDisplay"> Cancel</p> </div> </div> </div> </header> <!-- sub_content --> <div id="sub_content" class="sub-cont-false check-true" style="margin-top: 151px;"> <!-- list --> <div class="list"> <!--img_wrap --> <ul id="contentList" class="img_wrap contentsListNormal"> <li id="1" class="file_wrap content_class"> <a href="#/" class="file_category"> <span class="file_type new">FREE HACKING TOOLS 2024.txt</span> <img src="/resources/images/file_type_icon/txt.svg" alt="FREE HACKING TOOLS 2024.txt" longdesc="https://quickshare.samsungcloud.com/ls/public/v1/links/1726939128130LapgKFz/contents/9192a620783d11efb2a9f2dd516b8be7?signature=KBNoHMgUK6vfyaIajYqss8v8IObbKY2LR_eDRbY0UEjWeUHt4Q8mogjjnCJmOZmkX1eoIM8IGPzAAGqLwoZKSht6hGzAK_lOh2_qVxv_FIMUwFzHzvoiLC_dliqoggr2eEbFG3JlMIFzaJ9H1Ue14w&storageType=file"> </a> </li></ul> <ul class="img_wrap contentsListSelection noDisplay"> <li id="1"> <input type="checkbox" id="chk1" value="1" checked="false"> <label for="chk1" class="file_category"> <span class="file_type new select_mode">FREE HACKING TOOLS 2024.txt</span> <img src="/resources/images/file_type_icon/txt.svg" alt="FREE HACKING TOOLS 2024.txt" longdesc="https://quickshare.samsungcloud.com/ls/public/v1/links/1726939128130LapgKFz/contents/9192a620783d11efb2a9f2dd516b8be7?signature=KBNoHMgUK6vfyaIajYqss8v8IObbKY2LR_eDRbY0UEjWeUHt4Q8mogjjnCJmOZmkX1eoIM8IGPzAAGqLwoZKSht6hGzAK_lOh2_qVxv_FIMUwFzHzvoiLC_dliqoggr2eEbFG3JlMIFzaJ9H1Ue14w&storageType=file"> <input id="1" type="button" class="expandBtn"> </label> </li></ul> <!-- //img_wrap --> </div> <!-- //list --> </div> <!-- //sub_content --> <!-- layer pop--> <!-- <div id="" class="bg_pop"> --> <!-- <div class="layer_pop"> --> <!-- <p class="txt_service">Link Sharing application will be available soon.</p> --> <!-- </div> --> <!-- </div> --> <!-- layer pop--> <div id="unsupportedMsg" class="bg_pop"> <div class="layer_pop ok"> <h3> App not available</h3> <p class="txt_service"> Link Sharing will be available soon.</p> <p id="okBtn" class="pop_btns ok"><a href="#" class="btn_ok"> OK</a></p> </div> </div> <!-- popup dialog info --> <div id="dialogOverlay" class="noDisplay"> <div id="dialogInfo"> <h3>Open downloaded files</h3> <ul> <li>All downloaded files will appear in the Downloads folder in the Files app.</li> <li>You may also be able to change the folder where files are downloaded in your browser's settings.</li> </ul> <h3>View images and videos in the Photos app</h3> <ul> <li>In the Files app, select the images and videos you downloaded.</li> <li>Tap the Share button, then save the images and videos to the Photos app.</li> </ul> <button class="dialogCloseBtn"> Close</button> </div> </div> <!-- //popup dialog info --> <div id="progressOverlay" class="noDisplay"> <div id="progressModal"> <div class="zipProgress-msg"> <span class="loadingIcon"></span> <h3>QuickShare.zip</h3> <p>Compressing...</p> <div class="progressBtn"> <button id="cancelZip" class="cancelOk">Cancel</button> </div> </div> <div class="zipError-msg noDisplay"> <p>There was a problem compressing the files.</p> <div class="progressBtn"> <button class="cancelOk">OK</button> </div> </div> </div> </div> </div> <!-- //wrap --> <script id="list-template" type="text/x-handlebars-template"> {{!-- {{#each contents}} can be replaced with {{#contents}} --}} {{#compare ../contentsTotalToUpload "!==" -1}} {{#each contents}} {{#compare (incr @index) ">" ../previousItemCnt}} {{#unless thumbnail}} <li id="{{incr @index}}" class="file_wrap content_class handlebars_file"><a href="#/"><span class="file_type new">{{name}}</span><img src="{{fileTypeCategoryThumbnailPath}}" alt="{{name}}" longdesc="{{original}}" /></a></li> {{else}} {{#isVideoType contentType}} <li id="{{incr @index}}" class="file_wrap content_class handlebars_file"> <a href="#/"> <img src="{{thumbnail}}" alt="{{name}}" longdesc="{{original}}" /> <span class="movie_wrap"></span><span class="movie_type"><img src="/resources/images/linksharing_view_video_ic.png" alt="movie icon"></span><span class="file_capacity">{{formattedFileSize}}</span> </a> </li> {{else}} <li id="{{incr @index}}" class="file_wrap content_class handlebars_file"><a href="#/"><img src="{{thumbnail}}" alt="{{name}}" longdesc="{{original}}" onerror="this.src='/resources/images/file_type_icon/broken.svg'; this.parentElement.classList.add('file_broken');" /></a></li> {{/isVideoType}} {{/unless}} {{/compare}} {{/each}} {{/compare}} </script> <script id="list-selectMode-template" type="text/x-handlebars-template"> {{#compare ../contentsTotalToUpload "!==" -1}} {{#each contents}} {{#compare (incr @index) ">" ../previousItemCnt}} {{#unless thumbnail}} <li id="{{incr @index}}"><input type="checkbox" id="chk{{incr @index}}" value="{{incr @index}}" /><label for="chk{{incr @index}}"><span class="file_type new">{{name}}</span><img src="{{fileTypeCategoryThumbnailPath}}" alt="{{name}}" longdesc="{{original}}" /><input id="{{incr @index}}" type="button" class="expandBtn" /></label></li> {{else}} {{#isVideoType contentType}} <li id="{{incr @index}}"> <input type="checkbox" id="chk{{incr @index}}" value="{{incr @index}}" /> <label for="chk{{incr @index}}" > <img src="{{thumbnail}}" alt="{{name}}" longdesc="{{original}}" /> <span class="movie_wrap"></span><span class="movie_type"><img src="/resources/images/linksharing_view_video_ic.png" alt="movie icon"></span><span class="file_capacity">{{formattedFileSize}}</span> <input id="{{incr @index}}" type="button" class="expandBtn" /> </label> </li> {{else}} <li id="{{incr @index}}"><input type="checkbox" id="chk{{incr @index}}" value="{{incr @index}}" /><label for="chk{{incr @index}}" ><img src="{{thumbnail}}" alt="{{name}}" longdesc="{{original}}" onerror="this.src='/resources/images/file_type_icon/broken.svg'; this.parentElement.classList.add('file_broken');" /><input id="{{incr @index}}" type="button" class="expandBtn" /></label></li> {{/isVideoType}} {{/unless}} {{/compare}} {{/each}} {{/compare}} </script> <script id="listInfo-template" type="text/x-handlebars-template"> {{#if uploadCompleted}} <span class="infoShareText">Shared on curDatePlaceholder</span> <span class="file noDisplay"> <span class="newFile newFile1 noDisplay"> fileCount/totalCount files</span> <span class="newFile newFile2 noDisplay"> 0/1 file</span> ({{formattedSizeOfContentsUploaded}}/{{formattedContentsTotalFileSize}}) </span> <span class="file">{{formattedContentsTotalCnt}} ({{formattedContentsTotalFileSize}})</span> <span class="expired expired1 noDisplay" >Expires in expDay days expHour hours</span> <span class="expired expired2 noDisplay" >Expires in expDay days 1 hour</span> <span class="expired expired3 noDisplay" >Expires in expDay days</span> <span class="expired expired4 noDisplay" >Expires in 1 day expHour hours</span> <span class="expired expired5 noDisplay" >Expires in 1 day 1 hour</span> <span class="expired expired6 noDisplay" >Expires in 1 day</span> <span class="expired expired7 noDisplay" >Expires in expHour hours</span> <span class="expired expired8 noDisplay" >Expires in 1 hour</span> {{else}} <span class="infoShareText">Shared on curDatePlaceholder</span> <span class="file"> <span class="newFile newFile1 noDisplay"> fileCount/totalCount files</span> <span class="newFile newFile2 noDisplay"> 0/1 file</span> ({{formattedSizeOfContentsUploaded}}/{{formattedContentsTotalFileSize}}) </span> <span class="expired expired1 noDisplay" >Expires in expDay days expHour hours</span> <span class="expired expired2 noDisplay" >Expires in expDay days 1 hour</span> <span class="expired expired3 noDisplay" >Expires in expDay days</span> <span class="expired expired4 noDisplay" >Expires in 1 day expHour hours</span> <span class="expired expired5 noDisplay" >Expires in 1 day 1 hour</span> <span class="expired expired6 noDisplay" >Expires in 1 day</span> <span class="expired expired7 noDisplay" >Expires in expHour hours</span> <span class="expired expired8 noDisplay" >Expires in 1 hour</span> {{/if}} </script> </body></html>