diff --git a/js/files_downloadlimit-public.mjs b/js/files_downloadlimit-public.mjs index 8e96153b..3c5578ea 100644 --- a/js/files_downloadlimit-public.mjs +++ b/js/files_downloadlimit-public.mjs @@ -1,2 +1,2 @@ -import{l as w,b as f,t as m,a as p}from"./logger-Bt8zOUpV.chunk.mjs";const{limit:a,downloads:c}=w("files_downloadlimit","download_limit",{limit:-1,downloads:0});f.debug("Download limit",{limit:a,downloads:c});let t=a-c,r=0;function s(e,o){o===0?e.innerText=m("files_downloadlimit","You have reached the maximum amount of downloads allowed"):e.innerText=p("files_downloadlimit","1 remaining download allowed","{count} remaining downloads allowed",o,{count:o})}window.addEventListener("DOMContentLoaded",()=>{if(a<1)return;const e=document.getElementById("header-primary-action");if(!e)return;const o=document.createElement("span");o.setAttribute("style","color: var(--color-primary-text); padding: 0 10px;"),s(o,t),e.prepend(o);const i=document.querySelector("#files-public-content");if(!i)return;i.oncontextmenu=n=>(n.preventDefault(),n.stopPropagation(),!1);const d=Array.from(document.querySelectorAll('a[href*="/download/"]'));new Set(d).forEach(n=>{n.addEventListener("click",l=>{if(r>0&&!confirm(m("files_downloadlimit","This share has a limited number of downloads. Are you sure you want to trigger a new download?"))){l.preventDefault(),l.stopPropagation();return}t--,r++,s(o,t),t===0&&[...d].forEach(u=>u.remove())})})}); +import{l as w,b as f,t as m,a as p}from"./logger-Bt8zOUpV.chunk.mjs";const{limit:a,downloads:c}=w("files_downloadlimit","download_limit",{limit:-1,downloads:0});f.debug("Download limit",{limit:a,downloads:c});let t=a-c,r=0;function s(e,o){o===0?e.innerText=m("files_downloadlimit","You have reached the maximum amount of downloads allowed"):e.innerText=p("files_downloadlimit","1 remaining download allowed","{count} remaining downloads allowed",o,{count:o})}window.addEventListener("DOMContentLoaded",()=>{if(a<1)return;const e=document.getElementById("header-primary-action");if(!e)return;const o=document.createElement("span");o.setAttribute("style","color: var(--color-background-plain-text, var(--color-primary-text)); padding: 0 10px;"),s(o,t),e.prepend(o);const i=document.querySelector("#files-public-content");if(!i)return;i.oncontextmenu=n=>(n.preventDefault(),n.stopPropagation(),!1);const l=Array.from(document.querySelectorAll('a[href*="/download/"]'));new Set(l).forEach(n=>{n.addEventListener("click",d=>{if(r>0&&!confirm(m("files_downloadlimit","This share has a limited number of downloads. Are you sure you want to trigger a new download?"))){d.preventDefault(),d.stopPropagation();return}t--,r++,s(o,t),t===0&&[...l].forEach(u=>u.remove())})})}); //# sourceMappingURL=files_downloadlimit-public.mjs.map diff --git a/js/files_downloadlimit-public.mjs.map b/js/files_downloadlimit-public.mjs.map index d71cd4c5..9e9cb8a6 100644 --- a/js/files_downloadlimit-public.mjs.map +++ b/js/files_downloadlimit-public.mjs.map @@ -1 +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-primary-text); padding: 0 10px;')\n\tupdateCounter(span, count)\n\tcontainer.prepend(span)\n\n\tconst publicContent = document.querySelector('#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('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,oDAAoD,EAC/ED,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"} \ No newline at end of file +{"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('#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('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"} \ No newline at end of file diff --git a/src/public.ts b/src/public.ts index 7dc7d0b1..69f1654a 100644 --- a/src/public.ts +++ b/src/public.ts @@ -41,7 +41,7 @@ window.addEventListener('DOMContentLoaded', () => { } const span = document.createElement('span') - span.setAttribute('style', 'color: var(--color-primary-text); padding: 0 10px;') + span.setAttribute('style', 'color: var(--color-background-plain-text, var(--color-primary-text)); padding: 0 10px;') updateCounter(span, count) container.prepend(span)