Skip to content

Commit f23eee1

Browse files
committed
feat(checkin): open panels on checkin click
1 parent 08f2705 commit f23eee1

File tree

7 files changed

+75
-47
lines changed

7 files changed

+75
-47
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"@dvcol/base-http-client": "^1.10.0",
5555
"@dvcol/common-utils": "^1.4.0",
5656
"@dvcol/tmdb-http-client": "^1.2.3",
57-
"@dvcol/trakt-http-client": "^1.4.0",
57+
"@dvcol/trakt-http-client": "^1.4.1",
5858
"@dvcol/tvdb-http-client": "^1.1.3",
5959
"@dvcol/web-extension-utils": "^3.0.1",
6060
"@vue/devtools": "^7.0.15",

pnpm-lock.yaml

+12-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/AppComponent.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ const onBack = () => {
8888
width="100%"
8989
class="panel"
9090
close-on-esc
91-
:on-after-leave="onAfterLeave"
9291
auto-focus
92+
:on-after-leave="onAfterLeave"
9393
>
9494
<NDrawerContent :native-scrollbar="false">
9595
<!-- Header -->

src/components/views/checkin/CheckinComponent.vue

+22-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { computed, defineProps } from 'vue';
66
import IconCancel from '~/components/icons/IconCancel.vue';
77
import IconMovie from '~/components/icons/IconMovie.vue';
88
import IconScreen from '~/components/icons/IconScreen.vue';
9+
import { usePanelItem } from '~/components/views/panel/use-panel-item';
910
import { useMovieStore } from '~/stores/data/movie.store';
1011
import { useShowStore } from '~/stores/data/show.store';
1112
import { useWatchingStore, useWatchingStoreRefs } from '~/stores/data/watching.store';
@@ -89,17 +90,36 @@ const { onCancel: onCancelWatching } = useCancelWatching(cancel, watching.value?
8990
const { clearShowWatchedProgress } = useShowStore();
9091
const { clearMovieWatchedProgress } = useMovieStore();
9192
92-
const onCancel = async () => {
93+
const onCancel = async (event: MouseEvent) => {
94+
event.stopPropagation();
9395
const cancelled = await onCancelWatching();
9496
if (!cancelled) return;
9597
clearShowWatchedProgress();
9698
clearMovieWatchedProgress();
9799
};
100+
101+
const { onItemClick } = usePanelItem();
102+
const onClick = () => {
103+
if (!watching.value) return;
104+
if (isWatchingMovie(watching.value))
105+
onItemClick({
106+
type: 'movie',
107+
id: watching.value.movie.ids.trakt,
108+
});
109+
if (isWatchingShow(watching.value))
110+
onItemClick({
111+
type: 'episode',
112+
id: watching.value.episode.ids.trakt,
113+
showId: watching.value.show.ids.trakt,
114+
seasonNumber: watching.value.episode.season,
115+
episodeNumber: watching.value.episode.number,
116+
});
117+
};
98118
</script>
99119

100120
<template>
101121
<div class="wrapper">
102-
<div class="container" :class="{ watching: isWatching }">
122+
<div class="container" :class="{ watching: isWatching }" @click="onClick">
103123
<span class="left">
104124
<NIcon class="icon" :component="icon" />
105125
<div class="column">

src/components/views/panel/use-panel-item.ts

+35-20
Original file line numberDiff line numberDiff line change
@@ -5,41 +5,56 @@ import type { ListScrollItem } from '~/models/list-scroll.model';
55
export const usePanelItem = () => {
66
const { push, currentRoute } = useRouter();
77

8-
const onItemClick = ({ item }: { item: ListScrollItem }) => {
9-
const type = item?.type;
10-
if (!type) return;
8+
const onItemClick = ({
9+
type,
10+
id,
11+
showId,
12+
seasonNumber,
13+
episodeNumber,
14+
item,
15+
}: {
16+
type?: 'person' | 'movie' | 'show' | 'season' | 'episode';
17+
id?: number;
18+
showId?: number;
19+
seasonNumber?: number;
20+
episodeNumber?: number;
21+
22+
item?: ListScrollItem;
23+
}) => {
24+
const _type = type ?? item?.type;
25+
if (!_type) return;
1126
const base = currentRoute.value.name?.toString();
1227
if (!base) return;
13-
const id = item?.meta?.ids?.[type]?.trakt;
14-
const showId = item?.meta?.ids?.show?.trakt;
15-
const seasonNumber = item?.meta?.number?.season;
16-
const episodeNumber = item?.meta?.number?.episode;
17-
switch (type) {
28+
const _id = id ?? item?.meta?.ids?.[_type]?.trakt;
29+
const _showId = showId ?? item?.meta?.ids?.show?.trakt;
30+
const _seasonNumber = seasonNumber ?? item?.meta?.number?.season;
31+
const _episodeNumber = episodeNumber ?? item?.meta?.number?.episode;
32+
switch (_type) {
1833
case 'person':
1934
case 'movie':
2035
case 'show':
21-
if (!id) return;
36+
if (!_id) return;
2237
return push({
23-
name: `${base}-${type}`,
24-
params: { [`${type}Id`]: id },
38+
name: `${base}-${_type}`,
39+
params: { [`${_type}Id`]: _id },
2540
});
2641
case 'season':
27-
if (showId === undefined || seasonNumber === undefined) return;
42+
if (_showId === undefined || _seasonNumber === undefined) return;
2843
return push({
29-
name: `${base}-${type}`,
44+
name: `${base}-${_type}`,
3045
params: {
31-
showId,
32-
seasonNumber,
46+
showId: _showId,
47+
seasonNumber: _seasonNumber,
3348
},
3449
});
3550
case 'episode':
36-
if (showId === undefined || seasonNumber === undefined || episodeNumber === undefined) return;
51+
if (_showId === undefined || _seasonNumber === undefined || _episodeNumber === undefined) return;
3752
return push({
38-
name: `${base}-${type}`,
53+
name: `${base}-${_type}`,
3954
params: {
40-
showId,
41-
seasonNumber,
42-
episodeNumber,
55+
showId: _showId,
56+
seasonNumber: _seasonNumber,
57+
episodeNumber: _episodeNumber,
4358
},
4459
});
4560
default:

src/components/views/releases/ReleasesComponent.vue

+2-13
Original file line numberDiff line numberDiff line change
@@ -60,19 +60,8 @@ const onMovieClick = async ({ item }: { item: ListScrollItem }) => {
6060
type: 'movie',
6161
});
6262
onItemClick({
63-
item: {
64-
...item,
65-
meta: {
66-
...item.meta,
67-
ids: {
68-
...item.meta?.ids,
69-
movie: {
70-
...item.meta?.ids?.movie,
71-
trakt: lookup.pop()?.movie?.ids?.trakt,
72-
},
73-
},
74-
},
75-
},
63+
item,
64+
id: lookup.pop()?.movie?.ids?.trakt,
7665
});
7766
};
7867
</script>

src/router/routes.ts

+2
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,12 @@ export const routes: RouteRecordRaw[] = [
105105
path: `/${Route.Settings}`,
106106
name: Route.Settings,
107107
component: () => import('../components/views/settings/SettingsComponent.vue'),
108+
children: panelRoutes(Route.Settings),
108109
},
109110
{
110111
path: `/${Route.About}`,
111112
name: Route.About,
112113
component: () => import('../components/views/about/AboutComponent.vue'),
114+
children: panelRoutes(Route.About),
113115
},
114116
];

0 commit comments

Comments
 (0)