chore: update Angular cache and TypeScript build info
This commit is contained in:
parent
9ce4df93fd
commit
0e1f9d0bbd
2
.angular/cache/20.2.2/app/.tsbuildinfo
vendored
2
.angular/cache/20.2.2/app/.tsbuildinfo
vendored
File diff suppressed because one or more lines are too long
BIN
db/newtube.db
BIN
db/newtube.db
Binary file not shown.
@ -12,7 +12,7 @@ import { AuthService } from '../../../../services/auth.service';
|
||||
<div class="relative inline-block text-left" (click)="$event.stopPropagation();">
|
||||
<button (click)="toggleOpen($event)"
|
||||
[disabled]="!isAuthenticated()"
|
||||
class="transition-colors duration-200 p-1 rounded-full hover:bg-slate-700/50 flex items-center justify-center text-slate-300 disabled:opacity-60"
|
||||
class="flex items-center space-x-2 bg-slate-700 hover:bg-slate-600 disabled:opacity-60 disabled:cursor-not-allowed px-4 py-2 rounded-full transition text-slate-200 font-semibold"
|
||||
[attr.aria-expanded]="open()"
|
||||
[attr.aria-haspopup]="true"
|
||||
[attr.title]="!isAuthenticated() ? 'Connectez-vous pour gérer vos playlists' : 'Ajouter à une playlist'">
|
||||
@ -24,7 +24,7 @@ import { AuthService } from '../../../../services/auth.service';
|
||||
</button>
|
||||
|
||||
@if (open()) {
|
||||
<div class="absolute right-0 mt-2 w-72 origin-top-right rounded-md bg-slate-900 border border-slate-700 shadow-lg focus:outline-none z-50">
|
||||
<div class="fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 w-80 rounded-md bg-slate-900 border border-slate-700 shadow-2xl focus:outline-none z-50">
|
||||
<div class="p-3 space-y-3">
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="text-sm font-semibold text-slate-200">Vos playlists</div>
|
||||
|
@ -87,24 +87,34 @@
|
||||
[disabled]="likeBusy()"
|
||||
[class.bg-red-600]="liked()"
|
||||
[class.hover\:bg-red-500]="liked()"
|
||||
class="flex items-center space-x-2 bg-slate-700 hover:bg-slate-600 disabled:opacity-60 disabled:cursor-not-allowed px-4 py-2 rounded-full transition font-semibold">
|
||||
title="{{ liked() ? 'Liked' : 'Like' }}"
|
||||
class="flex items-center justify-center bg-slate-700 hover:bg-slate-600 disabled:opacity-60 disabled:cursor-not-allowed p-2 rounded-full transition">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 24 24" [attr.fill]="liked() ? 'currentColor' : 'none'" stroke="currentColor" stroke-width="2">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M12 21s-6.716-4.248-9.193-6.725A6 6 0 0112 5.414 6 6 0 0121.193 14.275C18.716 16.752 12 21 12 21z" />
|
||||
</svg>
|
||||
<span>{{ liked() ? 'Liked' : 'Like' }}</span>
|
||||
</button>
|
||||
}
|
||||
@if (isLoggedIn()) {
|
||||
<app-add-to-playlist [provider]="provider()" [videoId]="v.videoId" [title]="v.title" [thumbnail]="v.thumbnail"></app-add-to-playlist>
|
||||
}
|
||||
<button (click)="copyLink()" title="Copy link"
|
||||
class="flex items-center space-x-2 bg-slate-700 hover:bg-slate-600 px-4 py-2 rounded-full transition">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 24 24" fill="currentColor">
|
||||
<path d="M16 1a3 3 0 013 3v10a3 3 0 01-3 3H6a3 3 0 01-3-3V4a3 3 0 013-3h10zm0 2H6a1 1 0 00-1 1v10a1 1 0 001 1h10a1 1 0 001-1V4a1 1 0 00-1-1z"/>
|
||||
<path d="M18 7h2a3 3 0 013 3v10a3 3 0 01-3 3H10a3 3 0 01-3-3v-2h2v2a1 1 0 001 1h10a1 1 0 001-1V10a1 1 0 00-1-1h-2V7z"/>
|
||||
</svg>
|
||||
<span class="hidden sm:inline"></span>
|
||||
</button>
|
||||
@if (isLoggedIn()) {
|
||||
<button (click)="openDownloadPanel()"
|
||||
class="flex items-center space-x-2 bg-red-600 hover:bg-red-500 px-4 py-2 rounded-full transition font-semibold">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
|
||||
<path d="M3 14a1 1 0 011-1h3V3a1 1 0 112 0v10h3a1 1 0 110 2H4a1 1 0 01-1-1z" />
|
||||
<path d="M7 11l3 3 3-3H7z" />
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
||||
<!-- Arrow down -->
|
||||
<path d="M10 3a1 1 0 011 1v7l2.293-2.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 111.414-1.414L9 11V4a1 1 0 011-1z" />
|
||||
<!-- Tray -->
|
||||
<path d="M4 17a1 1 0 011-1h10a1 1 0 110 2H5a1 1 0 01-1-1z" />
|
||||
</svg>
|
||||
<span>Download</span>
|
||||
<span></span>
|
||||
</button>
|
||||
}
|
||||
</div>
|
||||
|
@ -564,6 +564,29 @@ export class WatchComponent implements OnDestroy, AfterViewInit {
|
||||
return dateIso ? formatAbsoluteFr(dateIso) : '';
|
||||
}
|
||||
|
||||
// Copy current page link to clipboard
|
||||
async copyLink(): Promise<void> {
|
||||
try {
|
||||
const href = typeof window !== 'undefined' && window.location ? window.location.href : '';
|
||||
if (!href) return;
|
||||
await navigator.clipboard.writeText(href);
|
||||
console.log('[Watch] Link copied to clipboard');
|
||||
} catch (e) {
|
||||
try {
|
||||
// Fallback if Clipboard API not available
|
||||
const href = typeof window !== 'undefined' && window.location ? window.location.href : '';
|
||||
if (!href) return;
|
||||
const ta = document.createElement('textarea');
|
||||
ta.value = href;
|
||||
document.body.appendChild(ta);
|
||||
ta.select();
|
||||
document.execCommand('copy');
|
||||
document.body.removeChild(ta);
|
||||
console.log('[Watch] Link copied to clipboard (fallback)');
|
||||
} catch {}
|
||||
}
|
||||
}
|
||||
|
||||
async onSummarizeComments(): Promise<void> {
|
||||
const currentVideo = this.video();
|
||||
if (!currentVideo || currentVideo.comments.length === 0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user