namespace VideoDownloader.Mobile; /// 컴팠니언 루트: 큐 / 라이브러리 / 저장 / 연결 탭 + 공유 타겟 처리. public sealed class TabbedRootPage : TabbedPage { public TabbedRootPage() { ApiClient.Instance.Restore(); var queuePage = new QueuePage(); Children.Add(queuePage); Children.Add(new LibraryPage()); Children.Add(new DownloadsPage()); Children.Add(new ConnectPage()); Title = "VD 원격"; // M1 공유 타겟(U1): 어떤 탭에 있든/다른 앱에서 공유받으면 URL 을 PC 큐로 전송 후 큐 탭 표시 Device.StartTimer(TimeSpan.FromSeconds(2), () => { _ = HandleShareAsync(queuePage); return true; }); } private static async Task HandleShareAsync(QueuePage queuePage) { var shared = ShareTarget.Consume(); if (shared == null || !ApiClient.Instance.IsConfigured) return; var url = SharePayload.ExtractUrl(shared); if (url == null) { queuePage.ShowSharedResult("🔗 공유받은 텍스트에 URL 이 없습니다"); return; } var ok = await ApiClient.Instance.AddAsync(url); queuePage.ShowSharedResult(ok ? $"🔗 공유 링크 전송됨: {url}" : "❌ 공유 링크 전송 실패"); } }