aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-02-19 01:05:23 +0100
committermetamuffin <metamuffin@disroot.org>2026-02-19 01:05:23 +0100
commitcc31d1b1a35d356dad044f24b3104f74a50277be (patch)
treee9e8ff5ae783e84db17c33b6918acdf3f300c965
parent696f4e060b932c5987c4796dae560fe95754aaa1 (diff)
downloadjellything-cc31d1b1a35d356dad044f24b3104f74a50277be.tar
jellything-cc31d1b1a35d356dad044f24b3104f74a50277be.tar.bz2
jellything-cc31d1b1a35d356dad044f24b3104f74a50277be.tar.zst
load node data in jsp
-rw-r--r--server/src/ui_responder.rs6
-rw-r--r--ui/client-scripts/src/player/mod.ts11
-rw-r--r--ui/client-scripts/src/player/types_node.ts76
3 files changed, 8 insertions, 85 deletions
diff --git a/server/src/ui_responder.rs b/server/src/ui_responder.rs
index 7333175..eb503a1 100644
--- a/server/src/ui_responder.rs
+++ b/server/src/ui_responder.rs
@@ -5,9 +5,7 @@
*/
use crate::request_info::RequestInfo;
-use jellycommon::{
- jellyobject::{ObjectBuffer, json::object_to_json},
-};
+use jellycommon::jellyobject::{ObjectBuffer, json::object_to_json};
use jellyui::render_view;
use rocket::response::{
Responder,
@@ -22,7 +20,7 @@ pub enum UiResponse {
impl RequestInfo<'_> {
pub fn respond_ui(&self, view: ObjectBuffer) -> UiResponse {
- if self.debug == "json" {
+ if self.accept.is_json() || self.debug == "json" {
let value = object_to_json(view.as_object());
UiResponse::Json(serde_json::to_string(&value).unwrap())
} else if self.debug == "raw" {
diff --git a/ui/client-scripts/src/player/mod.ts b/ui/client-scripts/src/player/mod.ts
index 6f09ede..9b32c26 100644
--- a/ui/client-scripts/src/player/mod.ts
+++ b/ui/client-scripts/src/player/mod.ts
@@ -10,7 +10,7 @@ import { Logger } from "../jshelper/src/log.ts";
import { Player } from "./player.ts";
import { Popup } from "./popup.ts";
import { Playersync, playersync_controls } from "./sync.ts"
-import { Chapter, NodePublic, NodeUserData } from "./types_node.ts";
+import { Chapter } from "./types_node.ts";
import { FormatInfo, TrackKind } from "./types_stream.ts";
globalThis.addEventListener("DOMContentLoaded", () => {
@@ -65,10 +65,11 @@ function initialize_player(node_id: string): HTMLElement {
return res.json()
})
.catch(() => logger.log_persistent("Node data failed to download"))
- .then(ndata_ => {
- const ndata = ndata_ as { node: NodePublic, userdata: NodeUserData }
- console.log(ndata.node.media!.chapters);
- chapters.value = ndata.node.media!.chapters
+ .then(view => {
+ console.log("got node page view", view);
+ // const ndata = ndata_ as { node: NodePublic, userdata: NodeUserData }
+ // console.log(ndata.node.media!.chapters);
+ // chapters.value = ndata.node.media!.chapters
})
//@ts-ignore for debugging
diff --git a/ui/client-scripts/src/player/types_node.ts b/ui/client-scripts/src/player/types_node.ts
deleted file mode 100644
index 64f01e5..0000000
--- a/ui/client-scripts/src/player/types_node.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- This file is part of jellything (https://codeberg.org/metamuffin/jellything)
- which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
- Copyright (C) 2026 metamuffin <metamuffin.org>
-*/
-
-export interface NodePublic {
- kind: NodeKind,
- title?: string,
- tagline?: string,
- description?: string,
- id?: string,
- path: string[],
- children: string[],
- release_date?: string,
- index?: number,
- media?: MediaInfo,
- ratings: { [key in Rating]: number },
- // might be incomplete
-}
-
-export type NodeKind = "movie"
- | "video"
- | "collection"
- | "channel"
- | "show"
- | "series"
- | "season"
- | "episode"
-
-export type Rating = "imdb"
- | "tmdb"
- | "rotten_tomatoes"
- | "metacritic"
- | "youtube_views"
- | "youtube_likes"
- | "youtube_followers"
-
-export interface MediaInfo {
- duration: number,
- tracks: SourceTrack[],
- chapters: Chapter[],
-}
-
-export interface Chapter {
- time_start?: number,
- time_end?: number,
- labels: { [key: string]: string }
-}
-
-export interface SourceTrack {
- kind: SourceTrackKind,
- name: string,
- codec: string,
- language: string,
-}
-export type SourceTrackKind = {
- video: {
- width: number,
- height: number,
- fps: number,
- }
-}
- | {
- audio: {
- channels: number,
- sample_rate: number,
- bit_depth: number,
- }
- } | "subtitle";
-
-export interface NodeUserData {
- watched: WatchedState
-}
-export type WatchedState = "none" | "watched" | "pending" | { progress: number }
-