Skip to content

Commit 186d33d

Browse files
committed
Redesign fetch image logic to fix not working with local archives
Signed-off-by: Luis Garcia <git@luigi311.com>
1 parent 6c615da commit 186d33d

File tree

19 files changed

+117
-167
lines changed

19 files changed

+117
-167
lines changed

crates/tanoshi-schema/graphql/fetch_chapter.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ query FetchChapter($chapterId:Int) {
55
prev
66
next
77
source {
8+
id
89
url
910
}
1011
manga {
Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,23 @@
11
query FetchHistories($first: Int, $cursor: String) {
2-
recentChapters(first: $first, after: $cursor) {
3-
edges {
4-
node {
5-
mangaId
6-
mangaTitle
7-
coverUrl
8-
chapterId
9-
chapterTitle
10-
readAt
11-
lastPageRead
12-
}
13-
cursor
14-
}
15-
pageInfo {
16-
hasNextPage
17-
hasPreviousPage
18-
}
19-
}
20-
}
2+
recentChapters(first: $first, after: $cursor) {
3+
edges {
4+
node {
5+
mangaId
6+
mangaTitle
7+
coverUrl
8+
chapterId
9+
chapterTitle
10+
readAt
11+
lastPageRead
12+
source {
13+
id
14+
}
15+
}
16+
cursor
17+
}
18+
pageInfo {
19+
hasNextPage
20+
hasPreviousPage
21+
}
22+
}
23+
}
Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
query FetchRecentUpdates($first: Int, $cursor: String) {
2-
recentUpdates(first: $first, after: $cursor) {
3-
edges {
4-
node {
5-
mangaId
6-
mangaTitle
7-
coverUrl
8-
chapterId
9-
chapterTitle
10-
uploaded
11-
}
12-
cursor
13-
}
14-
pageInfo {
15-
hasNextPage
16-
hasPreviousPage
17-
}
18-
}
19-
}
2+
recentUpdates(first: $first, after: $cursor) {
3+
edges {
4+
node {
5+
mangaId
6+
mangaTitle
7+
coverUrl
8+
chapterId
9+
chapterTitle
10+
uploaded
11+
source {
12+
id
13+
}
14+
}
15+
cursor
16+
}
17+
pageInfo {
18+
hasNextPage
19+
hasPreviousPage
20+
}
21+
}
22+
}

crates/tanoshi-schema/graphql/schema.graphql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,7 @@ type RecentChapter {
335335
chapterTitle: String!
336336
readAt: NaiveDateTime!
337337
lastPageRead: Int!
338+
source: Source!
338339
}
339340

340341
type RecentChapterConnection {
@@ -364,6 +365,7 @@ type RecentUpdate {
364365
coverUrl: String!
365366
chapterTitle: String!
366367
uploaded: NaiveDateTime!
368+
source: Source!
367369
}
368370

369371
type RecentUpdateConnection {

crates/tanoshi-tauri/src/server.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,9 @@ impl<R: Runtime> Plugin<R> for Server {
160160
let tracker_repo = TrackerRepositoryImpl::new(pool.clone(), mal_client.clone(), al_client);
161161
let tracker_svc = TrackerService::new(tracker_repo.clone());
162162

163-
let image_repo = ImageRepositoryImpl::new();
163+
let image_repo = ImageRepositoryImpl::new(extension_manager.clone());
164164
let image_cache_repo = ImageCacheRepositoryImpl::new(&config.cache_path);
165-
let image_svc = ImageService::new(image_repo, image_cache_repo, extension_manager.clone());
165+
let image_svc = ImageService::new(image_repo, image_cache_repo);
166166

167167
let loader = DatabaseLoader::new(
168168
history_repo,

crates/tanoshi-web/src/common/cover.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ impl Cover {
3030
last_read_at: Option<NaiveDateTime>,
3131
unread_chapter_count: i64,
3232
) -> Self {
33-
let cover_url = proxied_image_url(&cover_url);
33+
let cover_url = proxied_image_url(&cover_url, source_id);
3434
Self {
3535
id,
3636
source_id,

crates/tanoshi-web/src/histories.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ pub struct Entry {
2222
read_at: chrono::NaiveDateTime,
2323
last_page_read: i64,
2424
cursor: String,
25+
source_id: i64
2526
}
2627

2728
pub struct Histories {
@@ -57,6 +58,7 @@ impl Histories {
5758
read_at: chrono::NaiveDateTime::parse_from_str(&edge.node.read_at, "%Y-%m-%dT%H:%M:%S%.f").unwrap_throw(),
5859
last_page_read: edge.node.last_page_read,
5960
cursor: edge.cursor.clone(),
61+
source_id: edge.node.source.id,
6062
})
6163
}
6264
histories.is_entries_empty.set(histories.entries.lock_ref().is_empty());
@@ -100,7 +102,7 @@ impl Histories {
100102
.class("update-item-thumbnail")
101103
.children(&mut [
102104
html!("img", {
103-
.attr("src", &proxied_image_url(&entry.cover_url))
105+
.attr("src", &proxied_image_url(&entry.cover_url, entry.source_id))
104106
})
105107
])
106108
}),

crates/tanoshi-web/src/manga.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -529,14 +529,14 @@ impl Manga {
529529
// .class_signal("animate-pulse", manga.loader.is_loading())
530530
.children(&mut [
531531
html!("div", {
532-
.child_signal(manga.cover_url.signal_cloned().map(|x| {
532+
.child_signal(manga.cover_url.signal_cloned().map(clone!(manga => move |x| {
533533
x.map(|cover_url| html!("img", {
534534
.style("border-radius", "0.375rem")
535535
.style("width", "8rem")
536536
.style("height", "auto")
537-
.attr("src", &proxied_image_url(&cover_url))
537+
.attr("src", &proxied_image_url(&cover_url, manga.source_id.get()))
538538
}))
539-
}))
539+
})))
540540
}),
541541
html!("div", {
542542
.style("display", "flex")

crates/tanoshi-web/src/reader.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ pub struct Reader {
6666
spinner: Rc<Spinner>,
6767
timeout: Mutable<Option<Timeout>>,
6868
is_zooming: Mutable<bool>,
69+
source_id: Mutable<i64>,
6970
}
7071

7172
impl Reader {
@@ -94,6 +95,7 @@ impl Reader {
9495
spinner,
9596
timeout: Mutable::new(None),
9697
is_zooming: Mutable::new(false),
98+
source_id: Mutable::new(0),
9799
})
98100
}
99101

@@ -199,14 +201,15 @@ impl Reader {
199201
this.loader.load(clone!(this => async move {
200202
match query::fetch_chapter(chapter_id).await {
201203
Ok(result) => {
204+
this.source_id.set_neq(result.source.id);
202205
this.manga_id.set_neq(result.manga.id);
203206
this.manga_title.set_neq(result.manga.title.clone());
204207
this.chapter_title.set_neq(format_number_title(result.number, &result.title));
205208
this.next_chapter.set_neq(result.next);
206209
this.prev_chapter.set_neq(result.prev);
207210

208211
// Update the number of pages so the correct page can be loaded
209-
let pages = result.pages.iter().map(|page| (format!("{page}?referer={}", result.source.url), PageStatus::Initial)).collect();
212+
let pages = result.pages.iter().map(|page| (format!("{page}"), PageStatus::Initial)).collect();
210213
this.pages.lock_mut().replace_cloned(pages);
211214

212215
this.reader_settings.load_by_manga_id(result.manga.id);
@@ -261,8 +264,7 @@ impl Reader {
261264

262265
this.pages_loaded.set(ContinousLoaded::Initial);
263266

264-
let source_url = result.source.url;
265-
let pages = result.pages.iter().map(|page| (format!("{page}?referer={source_url}"), PageStatus::Initial)).collect();
267+
let pages = result.pages.iter().map(|page| (format!("{page}"), PageStatus::Initial)).collect();
266268
this.pages.lock_mut().replace_cloned(pages);
267269

268270
Self::replace_state_with_url(chapter_id, page + 1);
@@ -814,9 +816,10 @@ impl Reader {
814816
}
815817

816818
fn image_src_signal(&self, index: usize, preload_prev: usize, preload_next: usize, page: String, status: PageStatus)-> impl Signal<Item = Option<String>> + use<> {
819+
let source_id = self.source_id.get();
817820
self.current_page.signal_cloned().map(move |current_page| {
818821
if (index >= current_page.saturating_sub(preload_prev) && index <= current_page + preload_next) || matches!(status, PageStatus::Loaded) {
819-
Some(proxied_image_url(&page))
822+
Some(proxied_image_url(&page, source_id))
820823
} else {
821824
None
822825
}

crates/tanoshi-web/src/updates.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ pub struct Entry {
2121
chapter_title: String,
2222
uploaded: chrono::NaiveDateTime,
2323
cursor: String,
24+
source_id: i64,
2425
}
2526

2627
pub struct Updates {
@@ -65,6 +66,7 @@ impl Updates {
6566
chapter_title: edge.node.chapter_title.clone(),
6667
uploaded: chrono::NaiveDateTime::parse_from_str(&edge.node.uploaded, "%Y-%m-%dT%H:%M:%S%.f").unwrap_throw(),
6768
cursor: edge.cursor.clone(),
69+
source_id: edge.node.source.id,
6870
})
6971
}
7072
updates.is_entries_empty.set(updates.entries.lock_ref().is_empty());
@@ -136,7 +138,7 @@ impl Updates {
136138
.class("update-item-thumbnail")
137139
.children(&mut [
138140
html!("img", {
139-
.attr("src", &proxied_image_url(&entry.cover_url))
141+
.attr("src", &proxied_image_url(&entry.cover_url, entry.source_id))
140142
})
141143
])
142144
}),

0 commit comments

Comments
 (0)