diff --git a/package.json b/package.json index 8a0a0f3..34f6091 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Miru", - "version": "4.1.3", + "version": "4.1.4", "author": "ThaUnknown_ ", "description": "Stream anime torrents, real-time with no waiting for downloads.", "main": "build/main.js", diff --git a/src/renderer/App.svelte b/src/renderer/App.svelte index ba06cf4..2fa983d 100644 --- a/src/renderer/App.svelte +++ b/src/renderer/App.svelte @@ -20,7 +20,7 @@ import RSSView from './views/RSSView.svelte' import Menubar from './components/Menubar.svelte' import Toasts from './components/Toasts.svelte' - import CatBlock from './views/CatBlock.svelte' + import CatBlock from './views/CatBlock.svelte' // TODO: deprecate setContext('view', view) @@ -31,7 +31,7 @@
- + diff --git a/src/renderer/components/Search.svelte b/src/renderer/components/Search.svelte index f0c637b..fa46efe 100644 --- a/src/renderer/components/Search.svelte +++ b/src/renderer/components/Search.svelte @@ -10,6 +10,7 @@
@@ -187,8 +192,8 @@ {('' + badge).replace(/_/g, ' ').toLowerCase()} {/each} {/if} - grid_on - grid_view + changeCardMode('small')}>grid_on + changeCardMode('full')}>grid_view
@@ -197,11 +202,11 @@ color: var(--gray-color-light); } .input-group, - .container-fluid button { + .container-fluid button, .pointer { transition: scale 0.2s ease; } - .input-group:hover { + .input-group:hover, .pointer:hover { scale: 1.08; } diff --git a/src/renderer/components/cards/Card.svelte b/src/renderer/components/cards/Card.svelte index 03890a0..6da11ac 100644 --- a/src/renderer/components/cards/Card.svelte +++ b/src/renderer/components/cards/Card.svelte @@ -5,11 +5,14 @@ import FullCard from './FullCard.svelte' import EpisodeCard from './EpisodeCard.svelte' import FullSkeletonCard from './FullSkeletonCard.svelte' + import { set } from '../../views/Settings.svelte' export let card + + const type = card.type || set.cards -{#if card.type === 'episode'} +{#if type === 'episode'} {#await card.data} @@ -19,7 +22,7 @@ {/if} {/await} -{:else if card.type === 'full'} +{:else if type === 'full'} {#await card.data} @@ -29,7 +32,7 @@ {/if} {/await} -{:else} +{:else} {#await card.data} diff --git a/src/renderer/modules/providers/tosho.js b/src/renderer/modules/providers/tosho.js index a1ef05b..09f8712 100644 --- a/src/renderer/modules/providers/tosho.js +++ b/src/renderer/modules/providers/tosho.js @@ -211,8 +211,8 @@ function mapTosho2dDeDupedEntry (entries) { const dupe = deduped[entry.info_hash] dupe.title ??= entry.title || entry.torrent_name dupe.id ||= entry.nyaa_id - dupe.seeders ||= entry.seeders >= 100000 ? entry.leechers * 3 : entry.seeders - dupe.leechers ||= entry.leechers ?? 0 + dupe.seeders ||= entry.seeders >= 100000 ? 0 : entry.seeders + dupe.leechers ||= entry.leechers >= 100000 ? 0 : entry.leechers dupe.downloads ||= entry.torrent_downloaded_count dupe.size ||= entry.total_size && fastPrettyBytes(entry.total_size) dupe.date ||= entry.timestamp && new Date(entry.timestamp * 1000) @@ -221,8 +221,8 @@ function mapTosho2dDeDupedEntry (entries) { title: entry.title || entry.torrent_name, link: entry.magnet_uri, id: entry.nyaa_id, - seeders: entry.seeders >= 100000 ? entry.leechers * 3 : entry.seeders, // this is a REALLY bad assumption to make, but its a decent guess - leechers: entry.leechers, + seeders: entry.seeders >= 100000 ? 0 : entry.seeders, + leechers: entry.leechers >= 100000 ? 0 : entry.leechers, downloads: entry.torrent_downloaded_count, size: entry.total_size && fastPrettyBytes(entry.total_size), date: entry.timestamp && new Date(entry.timestamp * 1000) diff --git a/src/renderer/modules/rss.js b/src/renderer/modules/rss.js index ace3eac..dc24b9d 100644 --- a/src/renderer/modules/rss.js +++ b/src/renderer/modules/rss.js @@ -3,6 +3,7 @@ import { set } from '@/views/Settings.svelte' import { addToast } from '@/components/Toasts.svelte' import { add } from '@/modules/torrent.js' import { resolveFileMedia, getEpisodeMetadataForMedia } from './anime.js' +import { hasNextPage } from '@/modules/sections.js' export const exclusions = ['DTS'] const isDev = location.hostname === 'localhost' @@ -81,6 +82,7 @@ class RSSMediaManager { const index = (page - 1) * perPage const targetPage = [...content.querySelectorAll('item')].slice(index, index + perPage) const items = parseRSSNodes(targetPage) + hasNextPage.value = items.length === perPage const result = items.map(item => this.resolveAnimeFromRSSItem(item)) this.resultMap[url] = { date: pubDate, diff --git a/src/renderer/modules/sections.js b/src/renderer/modules/sections.js index 1950ad8..5867e6f 100644 --- a/src/renderer/modules/sections.js +++ b/src/renderer/modules/sections.js @@ -1,4 +1,7 @@ import { alRequest } from '@/modules/anilist.js' +import { writable } from 'simple-store-svelte' + +export const hasNextPage = writable(true) export default class Sections { constructor (data = []) { @@ -22,7 +25,7 @@ export default class Sections { static wrapResponse (res, length, type) { res.then(res => { - this.hasNext = res?.data?.Page.pageInfo.hasNextPage + hasNextPage.value = res?.data?.Page.pageInfo.hasNextPage }) return Array.from({ length }, (_, i) => ({ type, data: Sections.fromPending(res, i) })) } diff --git a/src/renderer/views/Home/Home.svelte b/src/renderer/views/Home/Home.svelte index c5c391a..00a8470 100644 --- a/src/renderer/views/Home/Home.svelte +++ b/src/renderer/views/Home/Home.svelte @@ -17,7 +17,7 @@ manager.add([ { title, - load: (page = 1, perPage = 12) => RSSManager.getMediaForRSS(page, perPage, url), + load: (page = 1, perPage = 6) => RSSManager.getMediaForRSS(page, perPage, url), preview: RSSManager.getMediaForRSS(1, 6, url), variables: { disableSearch: true } } diff --git a/src/renderer/views/Search.svelte b/src/renderer/views/Search.svelte index 9b5d5d5..956f2f0 100644 --- a/src/renderer/views/Search.svelte +++ b/src/renderer/views/Search.svelte @@ -10,37 +10,52 @@ -
+
update($search)} /> - {#each $items as card} - - {/each} + {#key $items} + {#each $items as card} + + {/each} + {/key}