releases/VideoDownloader.Mobile/TabbedRootPage.cs

33 lines
1.3 KiB
C#

namespace VideoDownloader.Mobile;
/// <summary>컴팠니언 루트: 큐 / 라이브러리 / 저장 / 연결 탭 + 공유 타겟 처리.</summary>
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}" : "❌ 공유 링크 전송 실패");
}
}