From 4fd59e8c26801195f5c315ded9baf7af95d1763b Mon Sep 17 00:00:00 2001 From: WardPearce Date: Tue, 12 Mar 2024 07:50:04 +1300 Subject: [PATCH] Added subscription status --- materialious/src/lib/Api/index.ts | 12 +++++++++++- materialious/src/lib/Api/model.ts | 5 +++++ materialious/src/routes/watch/[slug]/+page.svelte | 8 +++++++- materialious/src/routes/watch/[slug]/+page.ts | 10 ++++++++-- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/materialious/src/lib/Api/index.ts b/materialious/src/lib/Api/index.ts index b25e0326..71140d2b 100644 --- a/materialious/src/lib/Api/index.ts +++ b/materialious/src/lib/Api/index.ts @@ -1,6 +1,6 @@ import { get } from 'svelte/store'; import { auth, invidiousInstance, returnYTDislikesInstance } from '../../store'; -import type { Channel, Comments, ReturnYTDislikes, SearchSuggestion, Video, VideoPlay } from './model'; +import type { Channel, Comments, ReturnYTDislikes, SearchSuggestion, Subscription, Video, VideoPlay } from './model'; export function buildPath(path: string): string { return `${get(invidiousInstance)}/api/v1/${path}`; @@ -63,4 +63,14 @@ export async function getFeed(maxResults: number, page: number) { path.search = new URLSearchParams({ max_results: maxResults.toString(), page: page.toString() }).toString(); const resp = await fetch(path, buildAuthHeaders()); return await resp.json(); +} + +export async function getSubscriptions(): Promise { + const resp = await fetch(buildPath("auth/subscriptions"), buildAuthHeaders()); + return await resp.json(); +} + +export async function amSubscribed(authorId: string): Promise { + const subscriptions = (await getSubscriptions()).filter(sub => sub.authorId === authorId); + return subscriptions.length === 1; } \ No newline at end of file diff --git a/materialious/src/lib/Api/model.ts b/materialious/src/lib/Api/model.ts index c52052ff..203919cb 100644 --- a/materialious/src/lib/Api/model.ts +++ b/materialious/src/lib/Api/model.ts @@ -163,4 +163,9 @@ export interface Notification extends VideoBase { export interface Feed { notifications: Notification[]; videos: Video[]; +} + +export interface Subscription { + author: string; + authorId: string; } \ No newline at end of file diff --git a/materialious/src/routes/watch/[slug]/+page.svelte b/materialious/src/routes/watch/[slug]/+page.svelte index 5ef20308..78896e96 100644 --- a/materialious/src/routes/watch/[slug]/+page.svelte +++ b/materialious/src/routes/watch/[slug]/+page.svelte @@ -33,7 +33,13 @@ - +