From 5f192d2f5d76ad1b6ab4e53eb42465c57124324c Mon Sep 17 00:00:00 2001 From: Nguyen Duc Toan Date: Wed, 13 Sep 2023 22:22:58 +0700 Subject: [PATCH] fall back to text if json provider is not available --- core/src/manager/preview/provider.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/src/manager/preview/provider.rs b/core/src/manager/preview/provider.rs index 4ac499db..44c6cf7a 100644 --- a/core/src/manager/preview/provider.rs +++ b/core/src/manager/preview/provider.rs @@ -1,8 +1,13 @@ -use std::{io::BufRead, path::Path, sync::atomic::{AtomicUsize, Ordering}}; +use std::{ + io::BufRead, + path::Path, + sync::atomic::{AtomicUsize, Ordering}, +}; use adaptor::ADAPTOR; use anyhow::anyhow; use config::{MANAGER, PREVIEW}; +use futures::TryFutureExt; use shared::{MimeKind, PeekError}; use syntect::{easy::HighlightFile, util::as_24_bit_terminal_escaped}; use tokio::fs; @@ -25,7 +30,10 @@ impl Provider { MimeKind::Archive => Provider::archive(path, skip).await.map(PreviewData::Text), MimeKind::Image => Provider::image(path).await, MimeKind::Video => Provider::video(path, skip).await, - MimeKind::JSON => Provider::json(path, skip).await.map(PreviewData::Text), + MimeKind::JSON => Provider::json(path, skip) + .or_else(|_| Provider::highlight(path, skip)) + .await + .map(PreviewData::Text), MimeKind::PDF => Provider::pdf(path, skip).await, MimeKind::Text => Provider::highlight(path, skip).await.map(PreviewData::Text), MimeKind::Others => Err("Unsupported mimetype".into()),