From 5ef28324dfae59e0c8c766f8a09c7e922e117cb3 Mon Sep 17 00:00:00 2001 From: NoCrypt <57245077+NoCrypt@users.noreply.github.com> Date: Fri, 9 Aug 2024 23:55:52 +0700 Subject: [PATCH] feat: secondary RSS click action long press or right click will go to anime episodes list --- README.md | 1 + common/components/cards/EpisodeCard.svelte | 9 ++++++-- common/modules/longpress.js | 27 ++++++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 common/modules/longpress.js diff --git a/README.md b/README.md index 2476bd4..1764181 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,7 @@ Includes all original Miru features, plus: - Moved toast close button to the bottom for better reachability on Android - Disabled smooth scrolling by default due to poor performance on my device - Gesture lock on Android to prevent misclick +- Right click or long press on RSS Section will open the anime episode list ## **Building and Development** diff --git a/common/components/cards/EpisodeCard.svelte b/common/components/cards/EpisodeCard.svelte index cfebd61..29c22cf 100644 --- a/common/components/cards/EpisodeCard.svelte +++ b/common/components/cards/EpisodeCard.svelte @@ -7,6 +7,7 @@ import { liveAnimeEpisodeProgress } from '@/modules/animeprogress.js' import { anilistClient } from '@/modules/anilist.js' import { SUPPORTS } from '@/modules/support.js'; + import { longpress } from '@/modules/longpress.js' export let data @@ -18,8 +19,8 @@ const view = getContext('view') function viewMedia () { - if (SUPPORTS.isAndroid) document.querySelector('.content-wrapper').requestFullscreen() if (data.onclick) { + if (SUPPORTS.isAndroid) document.querySelector('.content-wrapper').requestFullscreen() data.onclick() return } @@ -29,6 +30,10 @@ preview = state } + function viewEpisodes(){ + $view = media + } + let thisElement; onMount(() => { @@ -43,7 +48,7 @@ const progress = liveAnimeEpisodeProgress(media?.id, data?.episode) -
+
{#if preview} {#if !SUPPORTS.isAndroid} diff --git a/common/modules/longpress.js b/common/modules/longpress.js new file mode 100644 index 0000000..3b60cb5 --- /dev/null +++ b/common/modules/longpress.js @@ -0,0 +1,27 @@ +export function longpress(node, cb = () => {}) { + const threshold = 500 + const handle_mousedown = () => { + let start = Date.now(); + + const timeout = setTimeout(() => { + cb(); + }, threshold); + + const cancel = () => { + clearTimeout(timeout); + node.removeEventListener('mousemove', cancel); + node.removeEventListener('mouseup', cancel); + }; + + node.addEventListener('mousemove', cancel); + node.addEventListener('mouseup', cancel); + } + + node.addEventListener('mousedown', handle_mousedown); + + return { + destroy() { + node.removeEventListener('mousedown', handle_mousedown); + } + }; +} \ No newline at end of file