Updated QR code on dashboard share menu

This commit is contained in:
Julian Prieber 2023-12-05 21:22:05 +01:00
parent aab11565c0
commit 335cf79d93
2 changed files with 39 additions and 19 deletions

View File

@ -7,7 +7,6 @@
"require": { "require": {
"php": ">=8.0", "php": ">=8.0",
"awssat/laravel-visits": "^6.0", "awssat/laravel-visits": "^6.0",
"bacon/bacon-qr-code": "^2.0",
"codedge/laravel-selfupdater": "^3.6", "codedge/laravel-selfupdater": "^3.6",
"cohensive/oembed": "^0.17", "cohensive/oembed": "^0.17",
"doctrine/dbal": "^3.0", "doctrine/dbal": "^3.0",
@ -20,6 +19,7 @@
"laravel/tinker": "^2.5", "laravel/tinker": "^2.5",
"livewire/livewire": "^2.12", "livewire/livewire": "^2.12",
"rappasoft/laravel-livewire-tables": "^2.15", "rappasoft/laravel-livewire-tables": "^2.15",
"simplesoftwareio/simple-qrcode": "~4",
"spatie/laravel-backup": "^8.17" "spatie/laravel-backup": "^8.17"
}, },
"require-dev": { "require-dev": {

View File

@ -1,9 +1,5 @@
@php @php
use BaconQrCode\Renderer\ImageRenderer; use SimpleSoftwareIO\QrCode\Facades\QrCode;
use BaconQrCode\Renderer\Image\ImagickImageBackEnd;
use BaconQrCode\Renderer\RendererStyle\RendererStyle;
use BaconQrCode\Writer;
use BaconQrCode\Renderer\Image\SvgImageBackEnd;
use App\Models\User; use App\Models\User;
$usrhandl = Auth::user()->littlelink_name; $usrhandl = Auth::user()->littlelink_name;
@endphp @endphp
@ -685,33 +681,57 @@ $usrhandl = Auth::user()->littlelink_name;
</div> </div>
@php @php
try { try {
$qrCodeData = url('@'.Auth::user()->littlelink_name); $redirectURL = url('').'/'.'u/'.Auth::user()->id;
$renderer = new ImageRenderer( if (extension_loaded('imagick')) {
new RendererStyle(400), $imgSrc = QrCode::format('png')->size(1000)->generate($redirectURL);
new SvgImageBackEnd() $imgSrc = base64_encode($imgSrc);
); $imgSrc = 'data:image/png;base64,' . $imgSrc;
$writer = new Writer($renderer); $imgType = 'png';
} else {
$imgSrc = QrCode::size(1000)->generate($redirectURL);
$imgSrc = base64_encode($imgSrc);
$imgSrc = 'data:image/svg+xml;base64,' . $imgSrc;
$imgType = 'svg';
}
$svgImageData = $writer->writeString($qrCodeData); } catch(exception $e) {
$imgSrc = url('/assets/linkstack/images/themes/no-preview.png');
$svgImageBase64 = base64_encode($svgImageData); $imgType = NULL;
}
$imgSrc = 'data:image/svg+xml;base64,' . $svgImageBase64;
} catch(exception $e) {echo '<p class="text-center pt-5">{{__("messages.QR code could not be generated")}}</p>'; if(auth()->user()->role == 'admin'){echo "<p class='ps-3'>{{__('messages.Reason:')}} <pre class='ps-4'>".$e->getMessage()."</pre></p>";}}
@endphp @endphp
<div class="modal-body"> <div class="modal-body">
<div class="bd-example"> <div class="bd-example">
<img draggable="false" src="@php if(isset($imgSrc)){echo $imgSrc;} @endphp" style="width:100%;height:auto;" class="bd-placeholder-img img-thumbnail"> <img id="generatedImage" draggable="false" src="@php if(isset($imgSrc)){echo $imgSrc;} @endphp" style="width:100%;height:auto;" class="bd-placeholder-img img-thumbnail">
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
@if($imgType == 'png')
<button type="button" class="btn btn-info" id="downloadButton">{{__('messages.Download')}}</button>
@endif
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{__('messages.Close')}}</button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{__('messages.Close')}}</button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<script>
document.addEventListener("DOMContentLoaded", function() {
var downloadButton = document.getElementById("downloadButton");
var generatedImage = document.getElementById("generatedImage");
downloadButton.addEventListener("click", function() {
var format = generatedImage.getAttribute("data-format") || "png";
var downloadLink = document.createElement("a");
downloadLink.href = generatedImage.src;
downloadLink.download = "generated_image." + format;
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
});
});
</script>
<!-- Library Bundle Script --> <!-- Library Bundle Script -->
<script src="{{asset('assets/js/core/libs.min.js')}}"></script> <script src="{{asset('assets/js/core/libs.min.js')}}"></script>