diff --git a/http-client/lib/repo/commit.ts b/http-client/lib/repo/commit.ts index 6b4147bff..1937c16f9 100644 --- a/http-client/lib/repo/commit.ts +++ b/http-client/lib/repo/commit.ts @@ -66,7 +66,7 @@ export type CommitBlob = z.infer; type AdditionHunkLine = z.infer; const additionHunkLineSchema = object({ - line: string(), + line: string().nullable(), lineNo: number(), type: literal("addition"), }); @@ -74,7 +74,7 @@ const additionHunkLineSchema = object({ type DeletionHunkLine = z.infer; const deletionHunkLineSchema = object({ - line: string(), + line: string().nullable(), lineNo: number(), type: literal("deletion"), }); @@ -95,7 +95,7 @@ const diffFileSchema = object({ type ContextHunkLine = z.infer; const contextHunkLineSchema = object({ - line: string(), + line: string().nullable(), lineNoNew: number(), lineNoOld: number(), type: literal("context"), diff --git a/radicle-httpd/src/api/json/diff.rs b/radicle-httpd/src/api/json/diff.rs index 95cc25601..4c50d168b 100644 --- a/radicle-httpd/src/api/json/diff.rs +++ b/radicle-httpd/src/api/json/diff.rs @@ -1,4 +1,4 @@ -use radicle_surf as surf; +use radicle_surf::{self as surf}; use serde_json::{json, Value}; use radicle::cob; @@ -194,14 +194,14 @@ impl<'a> Modification<'a> { surf::diff::Modification::Addition(addition) => { json!({ "type": "addition", - "line": addition.line, + "line": addition.line.clone().from_utf8().ok(), "lineNo": addition.line_no }) } surf::diff::Modification::Deletion(deletion) => { json!({ "type": "deletion", - "line": deletion.line, + "line": deletion.line.clone().from_utf8().ok(), "lineNo": deletion.line_no }) } @@ -212,7 +212,7 @@ impl<'a> Modification<'a> { } => { json!({ "type": "context", - "line": line, + "line": line.clone().from_utf8().ok(), "lineNoOld": line_no_old, "lineNoNew": line_no_new }) diff --git a/radicle-httpd/src/api/json/thread.rs b/radicle-httpd/src/api/json/thread.rs index 3810c3f4b..ec4384687 100644 --- a/radicle-httpd/src/api/json/thread.rs +++ b/radicle-httpd/src/api/json/thread.rs @@ -12,7 +12,7 @@ pub(crate) enum Comment<'a> { Issue(&'a cob::thread::Comment), } -impl<'a> Comment<'a> { +impl Comment<'_> { pub fn as_json(&self, id: &Oid, aliases: &impl AliasStore) -> Value { match self { Comment::Issue(c) => json!({ diff --git a/src/views/repos/Changeset/FileDiff.svelte b/src/views/repos/Changeset/FileDiff.svelte index 8b686286d..3cc72ce4b 100644 --- a/src/views/repos/Changeset/FileDiff.svelte +++ b/src/views/repos/Changeset/FileDiff.svelte @@ -39,6 +39,9 @@ let highlighting: { new?: string[]; old?: string[] } | undefined = undefined; let syntaxHighlightingLoading: boolean = false; let preview = false; + const binaryLines = + fileDiff.type === "plain" && + fileDiff.hunks.some(h => h.lines.some(l => !l.line)); $: extension = filePath.split(".").pop(); onMount(() => { @@ -449,7 +452,7 @@
- {#if fileDiff.type === "plain"} + {#if fileDiff.type === "plain" && !binaryLines} {#if fileDiff.hunks.length > 0 && !preview}