Complete WatchLink V1 realtime features
Some checks failed
Template Compliance / compliance (push) Successful in 7s
Release Dry Run / release-dry-run (push) Failing after 1m8s
Build / build (push) Failing after 1m15s

This commit is contained in:
MrSphay
2026-05-15 23:27:18 +02:00
parent 04d75c386f
commit c1ac6e4142
25 changed files with 1775 additions and 253 deletions

View File

@@ -14,5 +14,11 @@ describe("canEnterRoom", () => {
it("requires accepted friend or explicit membership for friends-only rooms", () => {
expect(canEnterRoom({ visibility: "FRIENDS" })).toBe(false);
expect(canEnterRoom({ visibility: "FRIENDS", isFriend: true })).toBe(true);
expect(canEnterRoom({ visibility: "FRIENDS", explicitMember: true })).toBe(true);
});
it("requires explicit membership for explicit rooms", () => {
expect(canEnterRoom({ visibility: "EXPLICIT", isFriend: true })).toBe(false);
expect(canEnterRoom({ visibility: "EXPLICIT", explicitMember: true })).toBe(true);
});
});

View File

@@ -6,6 +6,13 @@ describe("normalizeMediaUrl", () => {
const media = normalizeMediaUrl("https://www.youtube.com/watch?v=abc123");
expect(media.provider).toBe("YOUTUBE");
expect(media.playbackUrl).toContain("/embed/abc123");
expect(media.thumbnailUrl).toContain("img.youtube.com/vi/abc123");
});
it("normalizes YouTube shorts urls", () => {
const media = normalizeMediaUrl("https://www.youtube.com/shorts/short123");
expect(media.provider).toBe("YOUTUBE");
expect(media.playbackUrl).toContain("/embed/short123");
});
it("normalizes Twitch channels", () => {
@@ -14,6 +21,12 @@ describe("normalizeMediaUrl", () => {
expect(media.playbackUrl).toContain("channel=example");
});
it("normalizes Twitch VODs", () => {
const media = normalizeMediaUrl("https://www.twitch.tv/videos/12345");
expect(media.provider).toBe("TWITCH");
expect(media.playbackUrl).toContain("video=12345");
});
it("detects direct video sources", () => {
const media = normalizeMediaUrl("https://cdn.example.com/video.mp4");
expect(media.provider).toBe("DIRECT");