diff --git a/static/js/functions.js b/static/js/functions.js index 1ec3dd0..9c39b67 100644 --- a/static/js/functions.js +++ b/static/js/functions.js @@ -92,6 +92,24 @@ function submitExpense(listId) { } function copyLink(link) { + // Najpierw sprawdź Web Share API (działa na większości urządzeń mobilnych) + if (navigator.share) { + navigator.share({ + title: 'Udostępnij link', + text: 'Sprawdź ten link:', + url: link + }).then(() => { + showToast('Link udostępniony!'); + }).catch((err) => { + // Użytkownik anulował lub wystąpił błąd – próbujemy dalej + tryClipboard(link); + }); + return; + } + tryClipboard(link); +} + +function tryClipboard(link) { if (navigator.clipboard && window.isSecureContext) { navigator.clipboard.writeText(link).then(() => { showToast('Link skopiowany do schowka!'); @@ -104,6 +122,36 @@ function copyLink(link) { } } +function fallbackCopyText(text) { + const textarea = document.createElement('textarea'); + textarea.value = text; + textarea.style.position = 'fixed'; + textarea.style.top = 0; + textarea.style.left = 0; + textarea.style.opacity = 0; + document.body.appendChild(textarea); + textarea.focus(); + textarea.select(); + + try { + const successful = document.execCommand('copy'); + if (successful) { + showToast('Link skopiowany do schowka!'); + } else { + showToast('Nie udało się skopiować linku', 'warning'); + } + } catch (err) { + console.error('Fallback błąd kopiowania:', err); + showToast('Nie udało się skopiować linku', 'warning'); + } + + document.body.removeChild(textarea); +} + +function openList(link) { + window.open(link, '_blank'); +} + function applyHidePurchased(isInit = false) { console.log("applyHidePurchased: wywołana, isInit =", isInit); const toggle = document.getElementById('hidePurchasedToggle'); @@ -142,36 +190,6 @@ function applyHidePurchased(isInit = false) { }); } -function openList(link) { - window.open(link, '_blank'); -} - -function fallbackCopyText(text) { - const textarea = document.createElement('textarea'); - textarea.value = text; - textarea.style.position = 'fixed'; - textarea.style.top = 0; - textarea.style.left = 0; - textarea.style.opacity = 0; - document.body.appendChild(textarea); - textarea.focus(); - textarea.select(); - - try { - const successful = document.execCommand('copy'); - if (successful) { - showToast('Link skopiowany do schowka!'); - } else { - showToast('Nie udało się skopiować linku', 'warning'); - } - } catch (err) { - console.error('Fallback błąd kopiowania:', err); - showToast('Nie udało się skopiować linku', 'warning'); - } - - document.body.removeChild(textarea); -} - function toggleVisibility(listId) { fetch('/toggle_visibility/' + listId, {method: 'POST'}) .then(response => response.json()) diff --git a/templates/list.html b/templates/list.html index 66fd81b..7c95566 100644 --- a/templates/list.html +++ b/templates/list.html @@ -80,7 +80,7 @@ Lista: {{ list.title }}