diff --git a/materialious/src/lib/Api/index.ts b/materialious/src/lib/Api/index.ts index 8c16fc0a..83faa47f 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 { invidiousInstance, returnYTDislikesInstance } from '../../store'; -import type { Channel, Comments, ReturnYTDislikes, Video, VideoPlay } from './model'; +import type { Channel, Comments, ReturnYTDislikes, SearchSuggestion, Video, VideoPlay } from './model'; export function buildPath(path: string): string { return `${get(invidiousInstance)}/api/v1/${path}`; @@ -31,4 +31,11 @@ export async function getComments(videoId: string, parameters: { sortBy: "top" | export async function getChannel(channelId: string): Promise { const resp = await fetch(buildPath(`channels/${channelId}`)); return await resp.json(); +} + +export async function getSearchSuggestions(search: string): Promise { + const path = new URL(buildPath("search/suggestions")); + path.search = new URLSearchParams({ q: search }).toString(); + const resp = await fetch(path); + return await resp.json(); } \ No newline at end of file diff --git a/materialious/src/lib/Api/model.ts b/materialious/src/lib/Api/model.ts index 5d931bf8..e3618081 100644 --- a/materialious/src/lib/Api/model.ts +++ b/materialious/src/lib/Api/model.ts @@ -149,4 +149,9 @@ export interface Channel { allowedRegions: string[]; tabs: string[]; latestVideos: Video[]; +} + +export interface SearchSuggestion { + query: string; + suggestions: string[]; } \ No newline at end of file diff --git a/materialious/src/routes/+layout.svelte b/materialious/src/routes/+layout.svelte index 7c659b3c..d5ab9207 100644 --- a/materialious/src/routes/+layout.svelte +++ b/materialious/src/routes/+layout.svelte @@ -1,4 +1,5 @@ diff --git a/materialious/src/store.ts b/materialious/src/store.ts index 5293ee14..ca1db23a 100644 --- a/materialious/src/store.ts +++ b/materialious/src/store.ts @@ -14,3 +14,7 @@ export const playerProxyVideos = persisted("proxyVideos", false); export const playerListenByDefault = persisted("listenByDefault", false); export const playerSavePlaybackPosition = persisted("savePlaybackPosition", true); export const playerDash = persisted("dash", true); + +export const interfaceSearchSuggestions = persisted("searchSuggestions", true); + +export const authToken = persisted("authToken", ""); \ No newline at end of file