-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathfiles_downloadlimit-public.mjs.map
More file actions
1 lines (1 loc) · 3.86 KB
/
files_downloadlimit-public.mjs.map
File metadata and controls
1 lines (1 loc) · 3.86 KB
1
{"version":3,"file":"files_downloadlimit-public.mjs","sources":["../src/public.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { translatePlural as n, translate as t } from '@nextcloud/l10n'\nimport { logger } from './logger.ts'\n\nimport '../css/public.css'\n\nconst { limit, downloads } = loadState('files_downloadlimit', 'download_limit', { limit: -1, downloads: 0 })\nlogger.debug('Download limit', { limit, downloads })\n\n// Global variables init on page load\nlet count = limit - downloads\nlet clicks = 0\n\n/**\n * Update the span counter message\n *\n * @param span html span element to update\n * @param count number of remaining downloads allowed\n */\nfunction updateCounter(span: HTMLSpanElement, count: number) {\n\tif (count === 0) {\n\t\tspan.innerText = t('files_downloadlimit', 'You have reached the maximum amount of downloads allowed')\n\t} else {\n\t\tspan.innerText = n('files_downloadlimit', '1 remaining download allowed', '{count} remaining downloads allowed', count, { count })\n\t}\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n\tif (limit < 1) {\n\t\treturn\n\t}\n\n\tconst container = document.getElementById('header-primary-action')\n\tif (!container) {\n\t\treturn\n\t}\n\n\tconst span = document.createElement('span')\n\tspan.setAttribute('style', 'color: var(--color-background-plain-text, var(--color-primary-text)); padding: 0 10px;')\n\tupdateCounter(span, count)\n\tcontainer.prepend(span)\n\n\tconst publicContent = document.querySelector<HTMLElement>('#files-public-content')\n\tif (!publicContent) {\n\t\treturn\n\t}\n\n\t// Preventing mouse interaction\n\tpublicContent.oncontextmenu = (event) => {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\treturn false\n\t}\n\n\t// Adding double-download warning\n\tconst downloadButtons = Array.from(document.querySelectorAll<HTMLAnchorElement>('a[href*=\"/download/\"]'))\n\tnew Set(downloadButtons).forEach((button: HTMLAnchorElement) => {\n\t\tbutton.addEventListener('click', (event) => {\n\t\t\t// Warn about download limits\n\t\t\tif (clicks > 0) {\n\t\t\t\tif (!confirm(t('files_downloadlimit', 'This share has a limited number of downloads. Are you sure you want to trigger a new download?'))) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle counts changes\n\t\t\tcount--\n\t\t\tclicks++\n\t\t\tupdateCounter(span, count)\n\n\t\t\t// Remove the buttons if share is now expired\n\t\t\tif (count === 0) {\n\t\t\t\t[...downloadButtons].forEach((button) => button.remove())\n\t\t\t}\n\t\t})\n\t})\n})\n"],"names":["limit","downloads","loadState","logger","count","clicks","updateCounter","span","t","n","container","publicContent","event","downloadButtons","button"],"mappings":"qEAWA,KAAM,CAAE,MAAAA,EAAO,UAAAC,GAAcC,EAAU,sBAAuB,iBAAkB,CAAE,MAAO,GAAI,UAAW,CAAA,CAAG,EAC3GC,EAAO,MAAM,iBAAkB,CAAE,MAAAH,EAAO,UAAAC,EAAW,EAGnD,IAAIG,EAAQJ,EAAQC,EAChBI,EAAS,EAQb,SAASC,EAAcC,EAAuBH,EAAe,CACxDA,IAAU,EACbG,EAAK,UAAYC,EAAE,sBAAuB,0DAA0D,EAEpGD,EAAK,UAAYE,EAAE,sBAAuB,+BAAgC,sCAAuCL,EAAO,CAAE,MAAAA,EAAO,CAEnI,CAEA,OAAO,iBAAiB,mBAAoB,IAAM,CACjD,GAAIJ,EAAQ,EACX,OAGD,MAAMU,EAAY,SAAS,eAAe,uBAAuB,EACjE,GAAI,CAACA,EACJ,OAGD,MAAMH,EAAO,SAAS,cAAc,MAAM,EAC1CA,EAAK,aAAa,QAAS,wFAAwF,EACnHD,EAAcC,EAAMH,CAAK,EACzBM,EAAU,QAAQH,CAAI,EAEtB,MAAMI,EAAgB,SAAS,cAA2B,uBAAuB,EACjF,GAAI,CAACA,EACJ,OAIDA,EAAc,cAAiBC,IAC9BA,EAAM,eAAA,EACNA,EAAM,gBAAA,EACC,IAIR,MAAMC,EAAkB,MAAM,KAAK,SAAS,iBAAoC,uBAAuB,CAAC,EACxG,IAAI,IAAIA,CAAe,EAAE,QAASC,GAA8B,CAC/DA,EAAO,iBAAiB,QAAUF,GAAU,CAE3C,GAAIP,EAAS,GACR,CAAC,QAAQG,EAAE,sBAAuB,gGAAgG,CAAC,EAAG,CACzII,EAAM,eAAA,EACNA,EAAM,gBAAA,EACN,MACD,CAIDR,IACAC,IACAC,EAAcC,EAAMH,CAAK,EAGrBA,IAAU,GACb,CAAC,GAAGS,CAAe,EAAE,QAASC,GAAWA,EAAO,QAAQ,CAE1D,CAAC,CACF,CAAC,CACF,CAAC"}