mirror of
https://github.com/schlagmichdoch/PairDrop.git
synced 2026-04-13 04:42:15 +00:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ae75cdbc62 | ||
|
|
e2299f1d0f | ||
|
|
e06fa47c96 | ||
|
|
09451caf86 | ||
|
|
16921cb855 | ||
|
|
9b8d824bfc | ||
|
|
211328c2f7 | ||
|
|
224e6f0db9 | ||
|
|
a3690994b8 | ||
|
|
866d8a0e16 | ||
|
|
132b2ffa65 | ||
|
|
b084a9b83b | ||
|
|
77f2866893 |
4
.github/ISSUE_TEMPLATE/bug-report.md
vendored
4
.github/ISSUE_TEMPLATE/bug-report.md
vendored
@@ -36,7 +36,7 @@ If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Bug occurs on official PairDrop instance https://pairdrop.net/**
|
||||
No | Yes
|
||||
Version: v1.10.0
|
||||
Version: v1.10.1
|
||||
|
||||
**Bug occurs on self-hosted PairDrop instance**
|
||||
No | Yes
|
||||
@@ -44,7 +44,7 @@ No | Yes
|
||||
**Self-Hosted Setup**
|
||||
Proxy: Nginx | Apache2
|
||||
Deployment: docker run | docker compose | npm run start:prod
|
||||
Version: v1.10.0
|
||||
Version: v1.10.1
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
|
||||
2
.github/workflows/zip-release.yml
vendored
2
.github/workflows/zip-release.yml
vendored
@@ -19,6 +19,8 @@ on:
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- name: Archive Release
|
||||
|
||||
@@ -419,6 +419,44 @@ SIGNALING_SERVER="pairdrop.net"
|
||||
>
|
||||
> `WS_SERVER` must be a valid url without the protocol prefix.
|
||||
> Examples of valid values: `pairdrop.net`, `pairdrop.your-domain.com:3000`, `your-domain.com/pairdrop`
|
||||
|
||||
<br>
|
||||
|
||||
### Customizable buttons for the _About PairDrop_ page
|
||||
|
||||
```bash
|
||||
DONATION_BUTTON_ACTIVE=true
|
||||
DONATION_BUTTON_LINK="https://www.buymeacoffee.com/pairdrop"
|
||||
DONATION_BUTTON_TITLE="Buy me a coffee"
|
||||
TWITTER_BUTTON_ACTIVE=true
|
||||
TWITTER_BUTTON_LINK="https://twitter.com/account"
|
||||
TWITTER_BUTTON_TITLE="Find me on Twitter"
|
||||
MASTODON_BUTTON_ACTIVE=true
|
||||
MASTODON_BUTTON_LINK="https://mastodon.social/account"
|
||||
MASTODON_BUTTON_TITLE="Find me on Mastodon"
|
||||
BLUESKY_BUTTON_ACTIVE=true
|
||||
BLUESKY_BUTTON_LINK="https://bsky.app/profile/account"
|
||||
BLUESKY_BUTTON_TITLE="Find me on Bluesky"
|
||||
CUSTOM_BUTTON_ACTIVE=true
|
||||
CUSTOM_BUTTON_LINK="https://your-custom-social-network.net/account"
|
||||
CUSTOM_BUTTON_TITLE="Find me on this custom social network"
|
||||
PRIVACYPOLICY_BUTTON_ACTIVE=true
|
||||
PRIVACYPOLICY_BUTTON_LINK="https://link-to-your-privacy-policy.net"
|
||||
PRIVACYPOLICY_BUTTON_TITLE="Open our privacy policy"
|
||||
```
|
||||
|
||||
> Default: unset
|
||||
>
|
||||
> By default, clients will show the default button configuration: GitHub, BuyMeACoffee, Twitter, and FAQ on GitHub.
|
||||
>
|
||||
> The GitHub and FAQ on GitHub buttons are essential, so they are always shown.
|
||||
>
|
||||
> The other buttons can be customized:
|
||||
>
|
||||
> * `*_BUTTON_ACTIVE`: set this to `true` to show a natively hidden button or to `false` to hide a normally shown button
|
||||
> * `*_BUTTON_LINK`: set this to any URL to overwrite the href attribute of the button
|
||||
> * `*_BUTTON_TITLE`: set this to overwrite the hover title of the button. This will prevent the title from being translated.
|
||||
|
||||
<br>
|
||||
|
||||
## Healthcheck
|
||||
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "pairdrop",
|
||||
"version": "1.10.0",
|
||||
"version": "1.10.1",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "pairdrop",
|
||||
"version": "1.10.0",
|
||||
"version": "1.10.1",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"express": "^4.18.2",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pairdrop",
|
||||
"version": "1.10.0",
|
||||
"version": "1.10.1",
|
||||
"type": "module",
|
||||
"description": "",
|
||||
"main": "server/index.js",
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
<meta property="og:image" content="images/logo_transparent_512x512.png">
|
||||
<!-- Resources -->
|
||||
<link rel="preload" href="lang/en.json" as="fetch">
|
||||
<link rel="preload" href="fonts/OpenSans/static/OpenSans-Medium.ttf" as="font" type="font/ttf" crossorigin>
|
||||
<link rel="stylesheet" type="text/css" href="styles/styles-main.css">
|
||||
<link rel="manifest" href="manifest.json">
|
||||
</head>
|
||||
@@ -191,6 +192,11 @@
|
||||
<span> - </span>
|
||||
<span>(Arabic)</span>
|
||||
</button>
|
||||
<button class="btn fw wrap" value="ca">
|
||||
<span>Català</span>
|
||||
<span> - </span>
|
||||
<span>(Catalan)</span>
|
||||
</button>
|
||||
<button class="btn fw wrap" value="de">
|
||||
<span>Deutsch</span>
|
||||
<span> - </span>
|
||||
@@ -571,7 +577,7 @@
|
||||
</svg>
|
||||
<div class="title-wrapper" dir="ltr">
|
||||
<h1>PairDrop</h1>
|
||||
<div class="font-subheading">v1.10.0</div>
|
||||
<div class="font-subheading">v1.10.1</div>
|
||||
</div>
|
||||
<div class="font-subheading" data-i18n-key="about.claim" data-i18n-attrs="text"></div>
|
||||
<div class="row">
|
||||
@@ -580,16 +586,36 @@
|
||||
<use xlink:href="#github"></use>
|
||||
</svg>
|
||||
</a>
|
||||
<a class="icon-button" target="_blank" href="https://www.buymeacoffee.com/pairdrop" rel="noreferrer" data-i18n-key="about.buy-me-a-coffee" data-i18n-attrs="title">
|
||||
<a class="icon-button" id="donation-btn" target="_blank" href="https://www.buymeacoffee.com/pairdrop" rel="noreferrer" data-i18n-key="about.buy-me-a-coffee" data-i18n-attrs="title">
|
||||
<svg class="icon">
|
||||
<use xlink:href="#monetarization"></use>
|
||||
<use xlink:href="#donation"></use>
|
||||
</svg>
|
||||
</a>
|
||||
<a class="icon-button" target="_blank" href="https://twitter.com/intent/tweet?text=https%3A%2F%2Fpairdrop.net%20by%20https%3A%2F%2Fgithub.com%2Fschlagmichdoch%2F&" rel="noreferrer" data-i18n-key="about.tweet" data-i18n-attrs="title">
|
||||
<a class="icon-button" id="twitter-btn" target="_blank" href="https://twitter.com/intent/tweet?text=https%3A%2F%2Fpairdrop.net%20by%20https%3A%2F%2Fgithub.com%2Fschlagmichdoch%2F&" rel="noreferrer" data-i18n-key="about.tweet" data-i18n-attrs="title">
|
||||
<svg class="icon">
|
||||
<use xlink:href="#twitter"></use>
|
||||
</svg>
|
||||
</a>
|
||||
<a class="icon-button" id="mastodon-btn" target="_blank" rel="noreferrer" data-i18n-key="about.mastodon" data-i18n-attrs="title" hidden>
|
||||
<svg class="icon">
|
||||
<use xlink:href="#mastodon"></use>
|
||||
</svg>
|
||||
</a>
|
||||
<a class="icon-button" id="bluesky-btn" target="_blank" rel="noreferrer" data-i18n-key="about.bluesky" data-i18n-attrs="title" hidden>
|
||||
<svg class="icon">
|
||||
<use xlink:href="#bluesky"></use>
|
||||
</svg>
|
||||
</a>
|
||||
<a class="icon-button" id="custom-btn" target="_blank" rel="noreferrer" data-i18n-key="about.custom" data-i18n-attrs="title" hidden>
|
||||
<svg class="icon">
|
||||
<use xlink:href="#custom"></use>
|
||||
</svg>
|
||||
</a>
|
||||
<a class="icon-button" id="privacypolicy-btn" target="_blank" rel="noreferrer" data-i18n-key="about.privacypolicy" data-i18n-attrs="title" hidden>
|
||||
<svg class="icon">
|
||||
<use xlink:href="#privacypolicy"></use>
|
||||
</svg>
|
||||
</a>
|
||||
<a class="icon-button" target="_blank" href="https://github.com/schlagmichdoch/pairdrop/blob/master/docs/faq.md" rel="noreferrer" data-i18n-key="about.faq" data-i18n-attrs="title">
|
||||
<svg class="icon">
|
||||
<use xlink:href="#help-outline"></use>
|
||||
@@ -637,7 +663,7 @@
|
||||
<path d="M18 1.01L8 1c-1.1 0-2 .9-2 2v3h2V5h10v14H8v-1H6v3c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V3c0-1.1-.9-1.99-2-1.99zM10 15h2V8H5v2h3.59L3 15.59 4.41 17 10 11.41z"></path>
|
||||
<path fill="none" d="M0 0h24v24H0V0z"></path>
|
||||
</symbol>
|
||||
<symbol id="monetarization">
|
||||
<symbol id="donation">
|
||||
<path d="M0 0h24v24H0z" fill="none"></path>
|
||||
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1.41 16.09V20h-2.67v-1.93c-1.71-.36-3.16-1.46-3.27-3.4h1.96c.1 1.05.82 1.87 2.65 1.87 1.96 0 2.4-.98 2.4-1.59 0-.83-.44-1.61-2.67-2.14-2.48-.6-4.18-1.62-4.18-3.67 0-1.72 1.39-2.84 3.11-3.21V4h2.67v1.95c1.86.45 2.79 1.86 2.85 3.39H14.3c-.05-1.11-.64-1.87-2.22-1.87-1.5 0-2.4.68-2.4 1.64 0 .84.65 1.39 2.67 1.91s4.18 1.39 4.18 3.91c-.01 1.83-1.38 2.83-3.12 3.16z"></path>
|
||||
</symbol>
|
||||
@@ -687,9 +713,25 @@
|
||||
<path d="M320 464c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64z"></path>
|
||||
</symbol>
|
||||
<symbol id="caret" viewBox="0 0 320 512">
|
||||
<!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2023 Fonticons, Inc.--><path d="M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"></path>
|
||||
<!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2023 Fonticons, Inc.-->
|
||||
<path d="M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"></path>
|
||||
</symbol>
|
||||
<symbol id="mastodon" viewBox="0 0 448 512">
|
||||
<!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2023 Fonticons, Inc.-->
|
||||
<path d="M433 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.6-28.4-290.5 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54a102.5 102.5 0 0 1 -.9-13.9c85.6 20.9 158.7 9.1 178.8 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H90.2c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z"></path>
|
||||
</symbol>
|
||||
<symbol id="bluesky" viewBox="0 0 448 512">
|
||||
<!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2023 Fonticons, Inc.-->
|
||||
<path d="M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z"></path>
|
||||
</symbol>
|
||||
<symbol id="custom" viewBox="0 0 512 512">
|
||||
<!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2023 Fonticons, Inc.-->
|
||||
<path d="M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z"></path>
|
||||
</symbol>
|
||||
<symbol id="privacypolicy" viewBox="0 0 512 512">
|
||||
<!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2023 Fonticons, Inc.-->
|
||||
<path d="M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8V444.8C394 378 431.1 230.1 432 141.4L256 66.8l0 0z"></path>
|
||||
</symbol>
|
||||
|
||||
</svg>
|
||||
<!-- Scripts -->
|
||||
<script src="scripts/localization.js"></script>
|
||||
|
||||
@@ -6,7 +6,16 @@
|
||||
"no-peers-title": "Obre PairDrop a altres dispositius per enviar arxius",
|
||||
"x-instructions_data-drop-peer": "Allibera per enviar a un company",
|
||||
"x-instructions_data-drop-bg": "Allibera per seleccionar recipient",
|
||||
"no-peers_data-drop-bg": "Allibera per seleccionar destinatari"
|
||||
"no-peers_data-drop-bg": "Allibera per seleccionar destinatari",
|
||||
"activate-share-mode-base": "Obre PairDrop a altres dispositius per enviar",
|
||||
"activate-share-mode-shared-files-plural": "{{count}} fitxers compartits",
|
||||
"x-instructions-share-mode_desktop": "Clica per enviar {{descriptor}}",
|
||||
"activate-share-mode-shared-file": "fitxer compartit",
|
||||
"activate-share-mode-and-other-file": "i 1 altre fitxer",
|
||||
"x-instructions-share-mode_mobile": "Toca per enviar {{descriptor}}",
|
||||
"activate-share-mode-and-other-files-plural": "i {{count}} fitxers més",
|
||||
"activate-share-mode-shared-text": "text compartit",
|
||||
"webrtc-requirement": "Per utilitzar aquesta instància de PairDrop cal habilitar WebRTC!"
|
||||
},
|
||||
"header": {
|
||||
"theme-auto_title": "Adapta el tema al del sistema automàticament",
|
||||
@@ -22,5 +31,149 @@
|
||||
"about_title": "Sobre PairDrop",
|
||||
"about_aria-label": "Obre Sobre PairDrop",
|
||||
"theme-light_title": "Utilitza sempre el mode clar"
|
||||
},
|
||||
"dialogs": {
|
||||
"message_placeholder": "Text",
|
||||
"base64-paste-to-send": "Enganxa el contingut del porta-retalls aquí per compartir {{type}}",
|
||||
"auto-accept-instructions-2": "per acceptar automàticament tots els fitxers enviats des d'aquell dispositiu.",
|
||||
"receive-text-title": "Missatge Rebut",
|
||||
"edit-paired-devices-title": "Edita els Dispositius Vinculats",
|
||||
"cancel": "Cancel·lar",
|
||||
"auto-accept-instructions-1": "Activar",
|
||||
"pair-devices-title": "Vincula Dispositius Permanentment",
|
||||
"download": "Descarregar",
|
||||
"title-file": "Fitxer",
|
||||
"close-toast_title": "Tanca notificació",
|
||||
"base64-processing": "Processant…",
|
||||
"decline": "Rebutjar",
|
||||
"receive-title": "{{descriptor}} Rebut",
|
||||
"share-text-checkbox": "Mostra sempre aquesta finestra de diàleg en compartir text",
|
||||
"leave": "Marxar",
|
||||
"message_title": "Introdueix el missatge a enviar",
|
||||
"join": "Unir-se",
|
||||
"title-image-plural": "Imatges",
|
||||
"send": "Enviar",
|
||||
"base64-title-files": "Compartir Fitxers",
|
||||
"base64-tap-to-paste": "Toca aquí per compartir {{type}}",
|
||||
"base64-text": "text",
|
||||
"copy": "Copiar",
|
||||
"file-other-description-image": "i 1 altra imatge",
|
||||
"pair-devices-qr-code_title": "Clica per copiar l'enllaç per vincular aquest dispositiu",
|
||||
"approve": "aprovar",
|
||||
"temporary-public-room-title": "Sala Pública Temporal",
|
||||
"base64-files": "fitxers",
|
||||
"paired-device-removed": "Dispositiu vinculat eliminat.",
|
||||
"has-sent": "ha enviat:",
|
||||
"share-text-title": "Compartir Missatge de Text",
|
||||
"file-other-description-file": "i 1 altre fitxer",
|
||||
"public-room-qr-code_title": "Clica per copiar l'enllaç a la sala pública",
|
||||
"close": "Tancar",
|
||||
"system-language": "Idioma del Sistema",
|
||||
"share-text-subtitle": "Edita el missatge abans d'enviar:",
|
||||
"unpair": "Desvincular",
|
||||
"title-image": "Imatge",
|
||||
"file-other-description-file-plural": "i {{count}} altres fitxers",
|
||||
"would-like-to-share": "voldria compartir",
|
||||
"base64-title-text": "Compartir Text",
|
||||
"send-message-to": "Per a:",
|
||||
"language-selector-title": "Establir idioma",
|
||||
"pair": "Vincular",
|
||||
"hr-or": "O",
|
||||
"scan-qr-code": "o escaneja el codi QR.",
|
||||
"input-key-on-this-device": "Introdueix aquesta clau a un altre dispositiu",
|
||||
"download-again": "Descarregar de nou",
|
||||
"accept": "Acceptar",
|
||||
"paired-devices-wrapper_data-empty": "No hi ha dispositius vinculats.",
|
||||
"enter-key-from-another-device": "Introdueix la clau d'un altre dispositiu aquí.",
|
||||
"share": "Compartir",
|
||||
"auto-accept": "auto-acceptar",
|
||||
"title-file-plural": "Fitxers",
|
||||
"send-message-title": "Enviar Missatge",
|
||||
"input-room-id-on-another-device": "Introdueix aquest ID de sala a un altre dispositiu",
|
||||
"file-other-description-image-plural": "i {{count}} altres imatges",
|
||||
"enter-room-id-from-another-device": "Introdueix l'ID de sala d'un altre dispositiu per unir-t'hi."
|
||||
},
|
||||
"footer": {
|
||||
"webrtc": "si WebRTC no està disponible.",
|
||||
"public-room-devices_title": "Pots ser descobert per dispositius en aquesta sala pública independentment de la xarxa.",
|
||||
"display-name_data-placeholder": "Carregant…",
|
||||
"display-name_title": "Edita el nom del teu dispositiu permanentment",
|
||||
"traffic": "El trànsit és",
|
||||
"paired-devices_title": "Pots ser descobert per dispositius emparellats en qualsevol moment, independentment de la xarxa.",
|
||||
"public-room-devices": "a la sala {{roomId}}",
|
||||
"paired-devices": "per dispositius vinculats",
|
||||
"on-this-network": "En aquesta xarxa",
|
||||
"routed": "encaminat a través del servidor",
|
||||
"discovery": "Pots ser descobert:",
|
||||
"on-this-network_title": "Pots ser descobert per qualsevol usuari en aquesta xarxa.",
|
||||
"known-as": "Ets conegut com a:"
|
||||
},
|
||||
"notifications": {
|
||||
"request-title": "{{name}} voldria transferir {{count}} {{descriptor}}",
|
||||
"unfinished-transfers-warning": "Hi ha transferències pendents. Estàs segur que vols tancar PairDrop?",
|
||||
"message-received": "Missatge rebut per {{name}} - Fes clic per copiar",
|
||||
"notifications-permissions-error": "El permís per notificacions ha estat bloquejat, ja que l'usuari ha refusat la sol·licitud diverses vegades. Això es pot restablir a Informació de Pàgina, a on es pot accedir clicant la icona amb el cadenat que hi ha al costat de la barra de l'URL.",
|
||||
"rate-limit-join-key": "S'ha arribat al límit de ràtio. Espera 10 segons i torna-ho a intentar.",
|
||||
"pair-url-copied-to-clipboard": "Enllaç per vincular aquest dispositiu copiat al porta-retalls",
|
||||
"connecting": "Connectant…",
|
||||
"pairing-key-invalidated": "Clau {{key}} invalidada",
|
||||
"pairing-key-invalid": "Clau no vàlida",
|
||||
"connected": "Connectat",
|
||||
"pairing-not-persistent": "Els dispositius vinculats no són persistents",
|
||||
"text-content-incorrect": "El contingut del text és incorrecte",
|
||||
"message-transfer-completed": "Transferència de missatge completada",
|
||||
"file-transfer-completed": "Transferència de fitxers completada",
|
||||
"file-content-incorrect": "El contingut del fitxer és incorrecte",
|
||||
"files-incorrect": "Els fitxers són incorrectes",
|
||||
"selected-peer-left": "L'usuari seleccionat ha marxat",
|
||||
"link-received": "Enllaç rebut per {{name}} - Fes clic per obrir",
|
||||
"online": "Tornes a estar en línia",
|
||||
"public-room-left": "Has sortit de la sala pública {{publicRoomId}}",
|
||||
"copied-text": "Text copiat al porta-retalls",
|
||||
"display-name-random-again": "El nom d'usuari ha estat generat novament generat aleatòriament",
|
||||
"display-name-changed-permanently": "El nom d'usuari està canviat permanentment",
|
||||
"copied-to-clipboard-error": "Còpia impossible. Copiar manualment.",
|
||||
"pairing-success": "Dispositius vinculats",
|
||||
"clipboard-content-incorrect": "El contingut del porta-retalls és incorrecte",
|
||||
"display-name-changed-temporarily": "El nom d'usuari està canviat només per aquesta sessió",
|
||||
"copied-to-clipboard": "Copiat al porta-retalls",
|
||||
"offline": "No estàs en línia",
|
||||
"pairing-tabs-error": "No es poden vincular dues pestanyes d'un navegador",
|
||||
"public-room-id-invalid": "ID de sala no vàlid",
|
||||
"click-to-download": "Clica per descarregar",
|
||||
"pairing-cleared": "Tots els dispositius desvinculats",
|
||||
"notifications-enabled": "Notificacions habilitades",
|
||||
"online-requirement-pairing": "Has d'estar en línia per vincular dispositius",
|
||||
"ios-memory-limit": "Tan sols és possible enviar fitxers de fins a 200 MB a iOS",
|
||||
"online-requirement-public-room": "Cal que estiguis en línia per poder crear una sala pública",
|
||||
"room-url-copied-to-clipboard": "Enllaç a la sala pública copiat al porta-retalls",
|
||||
"copied-text-error": "L'escriptura al porta-retalls ha fallat. Copiar manualment!",
|
||||
"download-successful": "{{descriptor}} descarregat",
|
||||
"click-to-show": "Clica per mostrar"
|
||||
},
|
||||
"peer-ui": {
|
||||
"processing": "Processant…",
|
||||
"click-to-send-share-mode": "Clica per enviar {{descriptor}}",
|
||||
"click-to-send": "Fes clic per enviar fitxers o fes clic dret per enviar un missatge",
|
||||
"waiting": "Esperant…",
|
||||
"connection-hash": "Per verificar la seguretat del xifratge de punta a punta, compara aquest número de seguretat en ambdós dispositius",
|
||||
"preparing": "Preparant…",
|
||||
"transferring": "Transferint…"
|
||||
},
|
||||
"about": {
|
||||
"claim": "La manera més fàcil de compartir fitxers entre dispositius",
|
||||
"tweet_title": "Tuiteja sobre PairDrop",
|
||||
"close-about_aria-label": "Tanca Sobre PairDrop",
|
||||
"buy-me-a-coffee_title": "Convida'm a un cafè!",
|
||||
"github_title": "PairDrop a GitHub",
|
||||
"faq_title": "Preguntes freqüents"
|
||||
},
|
||||
"document-titles": {
|
||||
"file-transfer-requested": "Transferència de Fitxers Sol·licitada",
|
||||
"image-transfer-requested": "Transferència d'Imatges Sol·licitada",
|
||||
"message-received-plural": "{{count}} Missatges Rebuts",
|
||||
"message-received": "Missatge Rebut",
|
||||
"file-received": "Fitxer Rebut",
|
||||
"file-received-plural": "{{count}} Fitxers Rebuts"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,8 @@
|
||||
"edit-paired-devices_title": "Edit paired devices",
|
||||
"join-public-room_title": "Join public room temporarily",
|
||||
"cancel-share-mode": "Cancel",
|
||||
"edit-share-mode": "Edit"
|
||||
"edit-share-mode": "Edit",
|
||||
"expand_title": "Expand header button row"
|
||||
},
|
||||
"instructions": {
|
||||
"no-peers_data-drop-bg": "Release to select recipient",
|
||||
@@ -114,6 +115,10 @@
|
||||
"github_title": "PairDrop on GitHub",
|
||||
"buy-me-a-coffee_title": "Buy me a coffee!",
|
||||
"tweet_title": "Tweet about PairDrop",
|
||||
"mastodon_title": "Write about PairDrop on Mastodon",
|
||||
"bluesky_title": "Follow us on BlueSky",
|
||||
"custom_title": "Follow us",
|
||||
"privacypolicy_title": "Open our privacy policy",
|
||||
"faq_title": "Frequently asked questions"
|
||||
},
|
||||
"notifications": {
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
"pair-device_title": "Emparelhar seus dispositivos permanentemente",
|
||||
"edit-paired-devices_title": "Editar dispositivos emparelhados",
|
||||
"join-public-room_title": "Entrar em uma sala pública temporariamente",
|
||||
"cancel-share-mode": "Concluído"
|
||||
"cancel-share-mode": "Concluído",
|
||||
"edit-share-mode": "Editar"
|
||||
},
|
||||
"instructions": {
|
||||
"no-peers_data-drop-bg": "Solte para selecionar o destinatário",
|
||||
@@ -25,7 +26,11 @@
|
||||
"x-instructions-share-mode_mobile": "Toque para enviar",
|
||||
"activate-share-mode-base": "Abra o PairDrop em outros dispositivos para enviar",
|
||||
"activate-share-mode-and-other-files-plural": "e {{count}} outros arquivos",
|
||||
"activate-share-mode-shared-text": "texto compartilhado"
|
||||
"activate-share-mode-shared-text": "texto compartilhado",
|
||||
"activate-share-mode-shared-files-plural": "{{count}} arquivos compartilhados",
|
||||
"activate-share-mode-shared-file": "arquivo compartilhado",
|
||||
"activate-share-mode-and-other-file": "e 1 outro arquivo",
|
||||
"webrtc-requirement": "Para usar essa instância do PairDrop, o WebRTC deve estar habilitado!"
|
||||
},
|
||||
"footer": {
|
||||
"known-as": "Você é conhecido como:",
|
||||
@@ -69,14 +74,14 @@
|
||||
"share": "Compartilhar",
|
||||
"download": "Baixar",
|
||||
"send-message-title": "Enviar Mensagem",
|
||||
"send-message-to": "Enviar uma Mensagem para",
|
||||
"send-message-to": "Para:",
|
||||
"message_title": "Insira a mensagem a ser enviada",
|
||||
"send": "Enviar",
|
||||
"receive-text-title": "Mensagem Recebida",
|
||||
"copy": "Copiar",
|
||||
"base64-processing": "Processando…",
|
||||
"base64-tap-to-paste": "Toque aqui para colar {{type}}",
|
||||
"base64-paste-to-send": "Cole aqui para enviar {{type}}",
|
||||
"base64-tap-to-paste": "Toque aqui para compartilhar {{type}}",
|
||||
"base64-paste-to-send": "Cole da área de transferência aqui para compartilhar {{type}}",
|
||||
"base64-text": "texto",
|
||||
"base64-files": "arquivos",
|
||||
"file-other-description-image": "e mais 1 imagem",
|
||||
@@ -92,7 +97,16 @@
|
||||
"language-selector-title": "Definir idioma",
|
||||
"system-language": "Idioma do sistema",
|
||||
"public-room-qr-code_title": "Clique para copiar o link da sala pública",
|
||||
"pair-devices-qr-code_title": "Clique para copiar o link para emparelhar este dispositivo"
|
||||
"pair-devices-qr-code_title": "Clique para copiar o link para emparelhar este dispositivo",
|
||||
"message_placeholder": "Texto",
|
||||
"close-toast_title": "Fechar notificação",
|
||||
"share-text-checkbox": "Sempre exibir essa mensagem ao compartilhar texto",
|
||||
"base64-title-files": "Compartilhar arquivos",
|
||||
"approve": "aprovar",
|
||||
"paired-device-removed": "Dispositivo pareado foi removido.",
|
||||
"share-text-title": "Compartilhar Mensagem de Texto",
|
||||
"share-text-subtitle": "Editar mensagem antes de enviar:",
|
||||
"base64-title-text": "Compartilhar texto"
|
||||
},
|
||||
"about": {
|
||||
"close-about_aria-label": "Fechar Sobre o PairDrop",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class Localization {
|
||||
constructor() {
|
||||
Localization.defaultLocale = "en";
|
||||
Localization.supportedLocales = ["ar", "de", "en", "es", "fr", "id", "it", "ja", "nb", "nl", "ro", "ru", "tr", "zh-CN","pt-BR"];
|
||||
Localization.supportedLocales = ["ar", "ca", "de", "en", "es", "fr", "id", "it", "ja", "nb", "nl", "pt-BR", "ro", "ru", "tr", "zh-CN"];
|
||||
Localization.supportedLocalesRtl = ["ar"];
|
||||
|
||||
Localization.translations = {};
|
||||
|
||||
@@ -7,7 +7,7 @@ class PairDrop {
|
||||
this.$headerInstallBtn = $('install');
|
||||
|
||||
this.deferredStyles = [
|
||||
"styles/deferred-styles.css"
|
||||
"styles/styles-deferred.css"
|
||||
];
|
||||
this.deferredScripts = [
|
||||
"scripts/browser-tabs-connector.js",
|
||||
@@ -155,6 +155,7 @@ class PairDrop {
|
||||
}
|
||||
|
||||
async hydrate() {
|
||||
this.aboutUI = new AboutUI();
|
||||
this.peersUI = new PeersUI();
|
||||
this.languageSelectDialog = new LanguageSelectDialog();
|
||||
this.receiveFileDialog = new ReceiveFileDialog();
|
||||
|
||||
@@ -2275,6 +2275,53 @@ class Base64Dialog extends Dialog {
|
||||
}
|
||||
}
|
||||
|
||||
class AboutUI {
|
||||
constructor() {
|
||||
this.$donationBtn = $('donation-btn');
|
||||
this.$twitterBtn = $('twitter-btn');
|
||||
this.$mastodonBtn = $('mastodon-btn');
|
||||
this.$blueskyBtn = $('bluesky-btn');
|
||||
this.$customBtn = $('custom-btn');
|
||||
this.$privacypolicyBtn = $('privacypolicy-btn');
|
||||
Events.on('config', e => this._onConfig(e.detail.buttons));
|
||||
}
|
||||
|
||||
async _onConfig(btnConfig) {
|
||||
await this._evaluateBtnConfig(this.$donationBtn, btnConfig.donation_button);
|
||||
await this._evaluateBtnConfig(this.$twitterBtn, btnConfig.twitter_button);
|
||||
await this._evaluateBtnConfig(this.$mastodonBtn, btnConfig.mastodon_button);
|
||||
await this._evaluateBtnConfig(this.$blueskyBtn, btnConfig.bluesky_button);
|
||||
await this._evaluateBtnConfig(this.$customBtn, btnConfig.custom_button);
|
||||
await this._evaluateBtnConfig(this.$privacypolicyBtn, btnConfig.privacypolicy_button);
|
||||
}
|
||||
|
||||
async _evaluateBtnConfig($btn, config) {
|
||||
// if config is not set leave everything as default
|
||||
if (!Object.keys(config).length) return;
|
||||
|
||||
if (config.active === "false") {
|
||||
$btn.setAttribute('hidden', true);
|
||||
} else {
|
||||
if (config.link) {
|
||||
$btn.setAttribute('href', config.link);
|
||||
}
|
||||
if (config.title) {
|
||||
$btn.setAttribute('title', config.title);
|
||||
// prevent overwriting of custom title when setting different language
|
||||
$btn.removeAttribute('data-i18n-key');
|
||||
$btn.removeAttribute('data-i18n-attrs');
|
||||
}
|
||||
if (config.icon) {
|
||||
$btn.setAttribute('title', config.title);
|
||||
// prevent overwriting of custom title when setting different language
|
||||
$btn.removeAttribute('data-i18n-key');
|
||||
$btn.removeAttribute('data-i18n-attrs');
|
||||
}
|
||||
$btn.removeAttribute('hidden');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Toast extends Dialog {
|
||||
constructor() {
|
||||
super('toast');
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const cacheVersion = 'v1.10.0';
|
||||
const cacheVersion = 'v1.10.1';
|
||||
const cacheTitle = `pairdrop-cache-${cacheVersion}`;
|
||||
const forceFetch = false; // FOR DEVELOPMENT: Set to true to always update assets instead of using cached versions
|
||||
const relativePathsToCache = [
|
||||
@@ -6,7 +6,7 @@ const relativePathsToCache = [
|
||||
'index.html',
|
||||
'manifest.json',
|
||||
'styles/styles-main.css',
|
||||
'styles/deferred-styles.css',
|
||||
'styles/styles-deferred.css',
|
||||
'scripts/localization.js',
|
||||
'scripts/main.js',
|
||||
'scripts/network.js',
|
||||
@@ -27,6 +27,7 @@ const relativePathsToCache = [
|
||||
'images/android-chrome-512x512-maskable.png',
|
||||
'images/apple-touch-icon.png',
|
||||
'lang/ar.json',
|
||||
'lang/ca.json',
|
||||
'lang/de.json',
|
||||
'lang/en.json',
|
||||
'lang/es.json',
|
||||
@@ -36,9 +37,10 @@ const relativePathsToCache = [
|
||||
'lang/ja.json',
|
||||
'lang/nb.json',
|
||||
'lang/nl.json',
|
||||
'lang/tr.json',
|
||||
'lang/pt-BR.json',
|
||||
'lang/ro.json',
|
||||
'lang/ru.json',
|
||||
'lang/tr.json',
|
||||
'lang/zh-CN.json'
|
||||
];
|
||||
const relativePathsNotToCache = [
|
||||
|
||||
@@ -252,6 +252,7 @@ html[dir="rtl"] #expand.flipped > .icon {
|
||||
@font-face {
|
||||
font-family: "Open Sans";
|
||||
src: url('../fonts/OpenSans/static/OpenSans-Medium.ttf') format('truetype');
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
|
||||
@@ -61,6 +61,38 @@ else {
|
||||
}
|
||||
}
|
||||
conf.rateLimit = rateLimit;
|
||||
conf.buttons = {
|
||||
"donation_button": {
|
||||
"active": process.env.DONATION_BUTTON_ACTIVE,
|
||||
"link": process.env.DONATION_BUTTON_LINK,
|
||||
"title": process.env.DONATION_BUTTON_TITLE
|
||||
},
|
||||
"twitter_button": {
|
||||
"active": process.env.TWITTER_BUTTON_ACTIVE,
|
||||
"link": process.env.TWITTER_BUTTON_LINK,
|
||||
"title": process.env.TWITTER_BUTTON_TITLE
|
||||
},
|
||||
"mastodon_button": {
|
||||
"active": process.env.MASTODON_BUTTON_ACTIVE,
|
||||
"link": process.env.MASTODON_BUTTON_LINK,
|
||||
"title": process.env.MASTODON_BUTTON_TITLE
|
||||
},
|
||||
"bluesky_button": {
|
||||
"active": process.env.BLUESKY_BUTTON_ACTIVE,
|
||||
"link": process.env.BLUESKY_BUTTON_LINK,
|
||||
"title": process.env.BLUESKY_BUTTON_TITLE
|
||||
},
|
||||
"custom_button": {
|
||||
"active": process.env.CUSTOM_BUTTON_ACTIVE,
|
||||
"link": process.env.CUSTOM_BUTTON_LINK,
|
||||
"title": process.env.CUSTOM_BUTTON_TITLE
|
||||
},
|
||||
"privacypolicy_button": {
|
||||
"active": process.env.PRIVACYPOLICY_BUTTON_ACTIVE,
|
||||
"link": process.env.PRIVACYPOLICY_BUTTON_LINK,
|
||||
"title": process.env.PRIVACYPOLICY_BUTTON_TITLE
|
||||
}
|
||||
};
|
||||
|
||||
// Evaluate arguments for deployment with Node.js only
|
||||
conf.autoStart = process.argv.includes('--auto-restart');
|
||||
|
||||
@@ -49,7 +49,8 @@ export default class PairDropServer {
|
||||
// By using `WS_SERVER`, you can host an instance that uses another signaling server.
|
||||
app.get('/config', (req, res) => {
|
||||
res.send({
|
||||
signalingServer: conf.signalingServer
|
||||
signalingServer: conf.signalingServer,
|
||||
buttons: conf.buttons
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user