Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MyAnimeList Support, Profiles, and List Editor. #527

Open
wants to merge 114 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
f22b497
fix: better userList caching and sorting
RockinChaos May 30, 2024
13fa10f
feat: tags and multiple genres
RockinChaos May 30, 2024
acf5bee
fix: section title visibility
RockinChaos May 30, 2024
8ebbab1
feat: hide-my-anime search filter
RockinChaos May 30, 2024
755039c
feat: hide-my-anime interface setting
RockinChaos May 30, 2024
ec91cc4
Merge branch 'ThaUnknown:master' into master
RockinChaos May 30, 2024
0d53446
feat: tags and their ranks to anime view
RockinChaos May 31, 2024
9367679
feat: sub, dub, partial dub audio labels
RockinChaos May 31, 2024
e406565
feat: audio label icon toggle
RockinChaos May 31, 2024
2d0fd83
fix: search tags being auto selected
RockinChaos May 31, 2024
7b3ed60
chore: css cleanup
RockinChaos May 31, 2024
ced891e
fix: fetching wrong anime season
RockinChaos Jun 1, 2024
ccb3225
fix: interval dub cache
RockinChaos Jun 1, 2024
ceb2eb6
fix: audio label
RockinChaos Jun 2, 2024
4087a24
fix: audio label refresh
RockinChaos Jun 5, 2024
47c8eb0
feat: list editor
RockinChaos Jun 5, 2024
a6616dc
chore: unused imports
RockinChaos Jun 5, 2024
130d30b
fix: genre and tag filters
RockinChaos Jun 14, 2024
695f6a8
Merge branch 'master' of https://github.com/RockinChaos/miru
RockinChaos Jun 18, 2024
c588f83
Merge branch 'master' of https://github.com/RockinChaos/miru
RockinChaos Jun 26, 2024
222e57c
Merge branch 'master' of https://github.com/RockinChaos/miru
RockinChaos Jul 1, 2024
5c9926e
Merge branch 'master' of https://github.com/RockinChaos/miru
RockinChaos Jul 4, 2024
3bd6cb8
Merge branch 'master' of https://github.com/RockinChaos/miru
RockinChaos Jul 4, 2024
9b6b4e7
Merge branch 'master' of https://github.com/RockinChaos/miru
RockinChaos Jul 13, 2024
9d479e4
Merge branch 'master' of https://github.com/RockinChaos/miru
RockinChaos Jul 13, 2024
aecfbb7
Merge branch 'master' of https://github.com/RockinChaos/miru
RockinChaos Jul 26, 2024
16e6a68
Merge branch 'master' of https://github.com/RockinChaos/miru
RockinChaos Jul 29, 2024
b970ed6
feat: MyAnimeList login
RockinChaos Aug 1, 2024
08c56ef
fix: Sidebar overlay
RockinChaos Aug 1, 2024
05483ed
fix: Banner image
RockinChaos Aug 1, 2024
ba85e9a
fix: favorite button
RockinChaos Aug 1, 2024
b4bc024
feat: Title Language setting
RockinChaos Aug 1, 2024
841fe72
feat: 18+ (Adult) labeling
RockinChaos Aug 1, 2024
656e1ff
feat: RSS Episode dimming
RockinChaos Aug 1, 2024
0d48aae
fix: RSS Episode progress bar
RockinChaos Aug 1, 2024
283107f
fix: Missing RSS Episode format
RockinChaos Aug 1, 2024
33a405f
feat: RSS Episode Audio Label
RockinChaos Aug 1, 2024
83d84bd
chore: reworked scoring
RockinChaos Aug 1, 2024
5ee6818
chore: reworked audio label
RockinChaos Aug 1, 2024
ada79a8
feat: Country Of Origin detail
RockinChaos Aug 1, 2024
035f94a
chore: reworked search
RockinChaos Aug 1, 2024
81f4d03
feat: Dubbed Audio search filter
RockinChaos Aug 1, 2024
ea1c3e2
feat: Better relations cards
RockinChaos Aug 1, 2024
68737c1
feat: Recommended list
RockinChaos Aug 1, 2024
5594d54
fix: ToggleList text offset
RockinChaos Aug 1, 2024
07edc11
fix: episodes list
RockinChaos Aug 1, 2024
3249344
feat: Reviews count
RockinChaos Aug 1, 2024
7e890bc
fix: card details
RockinChaos Aug 1, 2024
ac7a374
fix: Airing Schedule filters
RockinChaos Aug 1, 2024
2d5e373
chore: dynamic settings check
RockinChaos Aug 1, 2024
58d08db
fix: RSS Episode gradient
RockinChaos Aug 1, 2024
e91f65b
chore: cleanup
RockinChaos Aug 1, 2024
445ab91
fix: anilist query complexity, improves load times
RockinChaos Aug 5, 2024
44d6105
chore: improvements
RockinChaos Aug 5, 2024
84026da
feat: RSS Episode prompt
RockinChaos Aug 5, 2024
a70cfde
fix: last ditch attempt for resolver
RockinChaos Aug 5, 2024
32f973d
fix: deleting from lists
RockinChaos Aug 5, 2024
81e6c65
feat: back button
RockinChaos Aug 7, 2024
8d07e4d
fix: duplicate following entries
RockinChaos Aug 7, 2024
b0cf836
chore: improved search visuals
RockinChaos Aug 7, 2024
78191be
fix: update notification spam
RockinChaos Aug 7, 2024
c4887b8
chore: removed async
RockinChaos Aug 7, 2024
d576ccd
Merge branch 'master' of https://github.com/RockinChaos/miru
RockinChaos Aug 7, 2024
76e79e6
feat: Profiles
RockinChaos Aug 16, 2024
9a8deb0
feat: custom genre/tags search
RockinChaos Aug 16, 2024
9ef524d
fix: studios property
RockinChaos Aug 16, 2024
3be6c72
fix: episode list
RockinChaos Aug 16, 2024
b41fc89
fix: user lists entries
RockinChaos Aug 16, 2024
3d23fa8
Merge branch 'master' of https://github.com/RockinChaos/miru
RockinChaos Aug 16, 2024
e909980
fix: updater nagging
RockinChaos Aug 18, 2024
3895bc8
fix: sequels you missed
RockinChaos Aug 19, 2024
529ed94
fix: episodes list
RockinChaos Aug 19, 2024
6c7032a
fix: scoring
RockinChaos Aug 19, 2024
859c894
Merge branch 'master' of https://github.com/RockinChaos/miru
RockinChaos Aug 20, 2024
78f84f7
chore: merge
RockinChaos Aug 20, 2024
be80348
Merge branch 'master' of https://github.com/RockinChaos/miru
RockinChaos Aug 25, 2024
a973dd0
chore: merge
RockinChaos Aug 25, 2024
1de33a7
Merge branch 'master' of https://github.com/RockinChaos/miru
RockinChaos Aug 28, 2024
f34f97b
chore: merge
RockinChaos Aug 28, 2024
65b7e61
fix: icons
RockinChaos Aug 28, 2024
196ba8b
fix: profiles
RockinChaos Aug 28, 2024
8e969f1
fix: null debug
RockinChaos Aug 28, 2024
92a1683
fix: myanimelist refresh token
RockinChaos Aug 28, 2024
05f1bf5
fix: myanimelist rate limit
RockinChaos Aug 28, 2024
3ea0356
chore: entity code
RockinChaos Aug 28, 2024
d0c6b01
fix: w2g mal
RockinChaos Aug 28, 2024
1d38de0
feat: video reload
RockinChaos Aug 28, 2024
0092672
fix: search query
RockinChaos Aug 29, 2024
342f3d6
fix: magnet links
RockinChaos Aug 31, 2024
6768d67
fix: undefined debug
RockinChaos Aug 31, 2024
a0599b2
chore: higher res avatar
RockinChaos Aug 31, 2024
c3383db
chore: disable button
RockinChaos Aug 31, 2024
f262e35
feat: discord RPC toggle
RockinChaos Sep 7, 2024
fe7f926
fix: refresh icon
RockinChaos Sep 7, 2024
f37ffe2
fix: search tags
RockinChaos Sep 8, 2024
8f286e1
Fix line feed at the end of state returned from MAL and undefined sym…
Sep 9, 2024
0277b17
fix trailing 'state' on line 58
Sep 9, 2024
f165ba8
Replace the line that removes the linefeed to somewhere that makes mo…
Sep 9, 2024
1ff02a6
fix: code linefeed
RockinChaos Sep 9, 2024
7804dfe
fix: MyAnimeList Linux Clipboard
RockinChaos Sep 9, 2024
8f144f4
Merge branch 'ThaUnknown:master' into master
RockinChaos Sep 9, 2024
8f5ee34
fix: mal refresh
RockinChaos Sep 11, 2024
b67546e
chore: navigation improvements
RockinChaos Sep 27, 2024
d98f566
fix: user sort options
RockinChaos Sep 27, 2024
a62c635
chore: hide watching and rewatching
RockinChaos Sep 27, 2024
0468f34
feat: Stories You Missed
RockinChaos Sep 27, 2024
83e4d30
fix: unnecessary list queries
RockinChaos Sep 27, 2024
1b1d07b
chore: magnet link toast
RockinChaos Sep 27, 2024
219ed45
chore: major discord-rpc improvments
RockinChaos Sep 27, 2024
b4da5f0
chore: player toast duration
RockinChaos Sep 29, 2024
d20f0de
fix: mal refresh typo
RockinChaos Sep 29, 2024
b0fb2a8
fix: sorting
RockinChaos Sep 29, 2024
3425d6c
fix: total reviewers
RockinChaos Oct 8, 2024
fff6cf6
chore: typos
RockinChaos Oct 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions capacitor/src/capacitor.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ IPC.on('dialog', async () => {
// schema: miru://key/value
const protocolMap = {
auth: token => sendToken(token),
malauth: token => sendMalToken(token),
anime: id => IPC.emit('open-anime', id),
w2g: link => IPC.emit('w2glink', link),
schedule: () => IPC.emit('schedule'),
Expand All @@ -106,6 +107,17 @@ function sendToken (line) {
}
}

function sendMalToken (line) {
let code = line.split('code=')[1].split('&state')[0]
let state = line.split('&state=')[1]
if (code && state) {
if (code.endsWith('/')) code = code.slice(0, -1)
if (state.endsWith('/')) state = state.slice(0, -1)
if (state.includes('%')) state = decodeURIComponent(state)
IPC.emit('maltoken', code, state)
}
}

App.getLaunchUrl().then(res => {
if (location.hash !== '#skipAlLogin') {
location.hash = '#skipAlLogin'
Expand Down
16 changes: 9 additions & 7 deletions common/App.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import { rss } from './views/TorrentSearch/TorrentModal.svelte'

export const page = writable('home')
export const overlay = writable('none')
export const view = writable(null)
export async function handleAnime (anime) {
view.set(null)
Expand Down Expand Up @@ -55,28 +56,29 @@
import TorrentModal from './views/TorrentSearch/TorrentModal.svelte'
import Menubar from './components/Menubar.svelte'
import { Toaster } from 'svelte-sonner'
import Logout from './components/Logout.svelte'
import Profiles from './components/Profiles.svelte'
import Navbar from './components/Navbar.svelte'

setContext('view', view)
</script>

<div class='page-wrapper with-transitions bg-dark position-relative' data-sidebar-type='overlayed-all'>
<Menubar bind:page={$page} />
<ViewAnime />
<Logout />
<Sidebar bind:page={$page} />
<Toaster visibleToasts={6} position='top-right' theme='dark' richColors duration={10000} closeButton />
<div class='overflow-hidden content-wrapper h-full z-10'>
<TorrentModal />
<Router bind:page={$page} />
<div class='overflow-hidden content-wrapper h-full'>
<Toaster visibleToasts={6} position='top-right' theme='dark' richColors duration={10000} closeButton />
<Profiles />
<ViewAnime bind:overlay={$overlay} />
<TorrentModal bind:overlay={$overlay} />
<Router bind:page={$page} bind:overlay={$overlay} />
</div>
<Navbar bind:page={$page} />
</div>

<style>
.content-wrapper {
will-change: width;
white-space: pre-line;
top: 0 !important;
}

Expand Down
8 changes: 5 additions & 3 deletions common/Router.svelte
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<script context='module'>
import { readable } from 'simple-store-svelte'

const mql = matchMedia('(min-width: 769px)')
const isMobile = readable(!mql.matches, set => {
const check = ({ matches }) => set(!matches)
Expand All @@ -15,17 +17,17 @@
import Miniplayer from 'svelte-miniplayer'
import Search from './views/Search.svelte'
import AiringSchedule from './views/AiringSchedule.svelte'
import { readable } from 'simple-store-svelte'

export let page = 'home'
export let overlay = 'none'

$: minwidth = $isMobile ? '200px' : '35rem'
$: maxwidth = $isMobile ? '200px' : '60rem'
</script>

<div class='w-full h-full position-absolute overflow-hidden'>
<Miniplayer active={page !== 'player'} class='bg-dark-light z-10 {page === 'player' ? 'h-full' : ''}' {minwidth} {maxwidth} width='300px' padding='2rem' resize={!$isMobile}>
<MediaHandler miniplayer={page !== 'player'} bind:page />
<Miniplayer active={(page !== 'player' && overlay !== 'torrent') || overlay === 'viewanime'} class='bg-dark-light z-100 {(page === "player" && overlay !== "viewanime") ? "h-full" : ""}' {minwidth} {maxwidth} width='300px' padding='2rem' resize={!$isMobile}>
<MediaHandler miniplayer={page !== 'player' || overlay === 'viewanime'} bind:page bind:overlay />
</Miniplayer>
</div>
{#if page === 'settings'}
Expand Down
49 changes: 0 additions & 49 deletions common/components/Logout.svelte

This file was deleted.

28 changes: 16 additions & 12 deletions common/components/Navbar.svelte
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<script>
import { getContext } from 'svelte'
import { media } from '../views/Player/MediaHandler.svelte'
import { rss } from '@/views/TorrentSearch/TorrentModal.svelte'
import { media } from '@/views/Player/MediaHandler.svelte'
import { profileView } from './Profiles.svelte'
import { click } from '@/modules/click.js'
import IPC from '@/modules/ipc.js'
import NavbarLink from './NavbarLink.svelte'
Expand All @@ -17,25 +19,27 @@
<nav class='navbar navbar-fixed-bottom d-block d-md-none border-0 bg-dark'>
<div class='navbar-menu h-full d-flex flex-row justify-content-center align-items-center m-0 pb-5' class:animate={page !== 'player'}>
<img src='./logo_filled.png' class='w-50 h-50 m-10 pointer p-5' alt='ico' use:click={close} />
<NavbarLink click={() => { page = 'search' }} _page='search' css='ml-auto' icon='search' {page} let:active>
<MagnifyingGlass size='2rem' class='flex-shrink-0 p-5 w-30 h-30 m-5 rounded' stroke-width={active ? '2' : '0'} stroke='currentColor' />
<NavbarLink click={() => { page = 'search'; if ($view) $view = null }} _page='search' css='ml-auto' icon='search' {page} overlay={($view || $profileView || $rss) && 'active'} let:active>
<MagnifyingGlass size='2rem' class='flex-shrink-0 p-5 w-30 h-30 m-5 rounded' stroke-width={active ? '1' : '0'} stroke='currentColor' />
</NavbarLink>
<NavbarLink click={() => { page = 'schedule' }} _page='schedule' icon='schedule' {page} let:active>
<Clock size='2rem' class='flex-shrink-0 p-5 w-30 h-30 m-5 rounded' strokeWidth={active ? '3.5' : '2'} />
<NavbarLink click={() => { page = 'schedule' }} _page='schedule' icon='schedule' {page} overlay={($view || $profileView || $rss) && 'active'} let:active>
<Clock size='2rem' class='flex-shrink-0 p-5 w-30 h-30 m-5 rounded' strokeWidth={active ? '3' : '2'} />
</NavbarLink>
{#if $media?.media}
<NavbarLink click={() => { $view = $media.media }} icon='queue_music' {page} let:active>
<ListVideo size='2rem' class='flex-shrink-0 p-5 w-30 h-30 m-5 rounded' strokeWidth={active ? '3.5' : '2'} />
{@const currentMedia = $view}
{@const active = $view && !$profileView && 'active'}
<NavbarLink click={() => { $view = (currentMedia?.id === $media.media.id && active ? null : $media.media) }} icon='queue_music' {page} overlay={active} nowPlaying={$view === $media.media} let:active>
<ListVideo size='2rem' class='flex-shrink-0 p-5 w-30 h-30 m-5 rounded' strokeWidth={active ? '3' : '2'} />
</NavbarLink>
{/if}
<NavbarLink click={() => { page = 'watchtogether' }} _page='watchtogether' icon='groups' {page} let:active>
<Users size='2rem' class='flex-shrink-0 p-5 w-30 h-30 m-5 rounded' strokeWidth={active ? '3.5' : '2'} />
<NavbarLink click={() => { page = 'watchtogether' }} _page='watchtogether' icon='groups' {page} overlay={($view || $profileView || $rss) && 'active'} let:active>
<Users size='2rem' class='flex-shrink-0 p-5 w-30 h-30 m-5 rounded' strokeWidth={active ? '3' : '2'} />
</NavbarLink>
<NavbarLink click={() => { IPC.emit('open', 'https://github.com/sponsors/ThaUnknown/') }} icon='favorite' css='ml-auto donate' {page} let:active>
<Heart size='2rem' class='flex-shrink-0 p-5 w-30 h-30 m-5 rounded donate' strokeWidth={active ? '3.5' : '2'} fill='currentColor' />
<Heart size='2rem' class='flex-shrink-0 p-5 w-30 h-30 m-5 rounded donate' strokeWidth={active ? '3' : '2'} fill='currentColor' />
</NavbarLink>
<NavbarLink click={() => { page = 'settings' }} _page='settings' icon='settings' {page} let:active>
<Settings size='2rem' class='flex-shrink-0 p-5 w-30 h-30 m-5 rounded' strokeWidth={active ? '3.5' : '2'} />
<NavbarLink click={() => { page = 'settings' }} _page='settings' icon='settings' {page} overlay={($view || $profileView || $rss) && 'active'} let:active>
<Settings size='2rem' class='flex-shrink-0 p-5 w-30 h-30 m-5 rounded' strokeWidth={active ? '3' : '2'} />
</NavbarLink>
</div>
</nav>
Expand Down
6 changes: 4 additions & 2 deletions common/components/NavbarLink.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@
export let _page = ''
export let css = ''
export let icon = ''
export let nowPlaying = false
export let overlay = ''
</script>

<div
class='navbar-link navbar-link-with-icon pointer overflow-hidden {css}'
use:click={_click}>
use:click={() => { if (!icon.includes("favorite")) { window.dispatchEvent(new Event('overlay-check')) } _click() } }>

<span class='rounded d-flex'>
<slot active={page === _page}>{icon}</slot>
<slot active={(page === _page && overlay !== 'active') || (overlay === 'active' && nowPlaying)}>{icon}</slot>
</span>
</div>

Expand Down
Loading