Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
4e0e7d0
Fix app workflows
kqito Mar 22, 2025
7a390ed
Fix version of kqito/manage-heroku-review-app temporary
kqito Mar 22, 2025
4628cbc
localで起動できる
ooyoshi00 Mar 22, 2025
1f47c9e
metafileを出力する
ooyoshi00 Mar 22, 2025
92f579b
Pin version of kqito/manage-heroku-review-app to specific commit hash
kqito Mar 22, 2025
e7a1975
画像の読み込みを遅延させる最適化を実施
ooyoshi00 Mar 22, 2025
db2e4a6
lodashの依存関係を削除し、deepmergeを使用するように変更
ooyoshi00 Mar 22, 2025
eb6251a
useMemoを使用してflipKeyをメモ化
ooyoshi00 Mar 22, 2025
016d2d8
RecommendedSectionを遅延読み込みするためにlazyとSuspenseを追加
ooyoshi00 Mar 22, 2025
a0768d5
CarouselSectionとその子コンポーネントをメモ化し、パフォーマンスを最適化
ooyoshi00 Mar 23, 2025
28875f9
不必要な依存関係を削除し、SeriesItemコンポーネントの画像読み込みを最適化。シードツールにファイル一覧のログを追加
ooyoshi00 Mar 23, 2025
70336d9
不要なファイルを削除
ooyoshi00 Mar 23, 2025
0c79ea7
p-min-delay依存関係を削除し、ルート作成での遅延読み込みを最適化
ooyoshi00 Mar 23, 2025
1233dfc
webpack configを元に戻す
ooyoshi00 Mar 23, 2025
a7847cc
ts-deepmergeを使う
ooyoshi00 Mar 23, 2025
3d829a2
色々設定を元に戻す
ooyoshi00 Mar 23, 2025
95b9b6e
ルート作成での遅延読み込みを最適化し、Suspenseを使用してローディング状態を管理。AspectRatioコンポーネントを簡素化し、不…
ooyoshi00 Mar 23, 2025
7a1a1e5
HomePageコンポーネントにローディング状態を追加し、SuspenseのフォールバックをカスタムLoadingコンポーネントに変更
ooyoshi00 Mar 23, 2025
4118817
Documentコンポーネントをmemoでラップし、LayoutおよびEpisodeItem、SeriesItemコンポーネントの画像にa…
ooyoshi00 Mar 23, 2025
c1d981d
JumbotronSectionコンポーネントをリファクタリングし、LinkItemコンポーネントを追加。NotFoundPageでのRe…
ooyoshi00 Mar 23, 2025
03d9a63
Merge remote-tracking branch 'upstream/main' into feature/okamune
ooyoshi00 Mar 23, 2025
6e4b3c7
core-jsの依存関係を削除し、関連するインポートを整理
ooyoshi00 Mar 23, 2025
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
2 changes: 1 addition & 1 deletion .github/workflows/create_heroku_review_app.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
create-review-app:
runs-on: ubuntu-latest
steps:
- uses: fastruby/manage-heroku-review-app@9fa49f0320460f278c3687bc348dd0cbb18555dc # v1.3
- uses: kqito/manage-heroku-review-app@55e434ad5ac86f21cf2f7654de1566973fbc7046
with:
action: create
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/destroy_heroku_review_app.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ jobs:
destroy-review-app:
runs-on: ubuntu-latest
steps:
- uses: fastruby/manage-heroku-review-app@9fa49f0320460f278c3687bc348dd0cbb18555dc # v1.3
- uses: kqito/manage-heroku-review-app@55e434ad5ac86f21cf2f7654de1566973fbc7046
with:
action: destroy
env:
Expand Down
1,748 changes: 846 additions & 902 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

Binary file removed public/images/001.jpeg
Binary file not shown.
Binary file added public/images/001.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/002.jpeg
Binary file not shown.
Binary file added public/images/002.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/003.jpeg
Binary file not shown.
Binary file added public/images/003.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/004.jpeg
Binary file not shown.
Binary file added public/images/004.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/005.jpeg
Binary file not shown.
Binary file added public/images/005.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/006.jpeg
Binary file not shown.
Binary file added public/images/006.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/007.jpeg
Binary file not shown.
Binary file added public/images/007.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/008.jpeg
Binary file not shown.
Binary file added public/images/008.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/009.jpeg
Binary file not shown.
Binary file added public/images/009.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/010.jpeg
Binary file not shown.
Binary file added public/images/010.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/011.jpeg
Binary file not shown.
Binary file added public/images/011.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/012.jpeg
Binary file not shown.
Binary file added public/images/012.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/images/013.jpeg
Binary file not shown.
Binary file added public/images/013.webp
Binary file removed public/images/014.jpeg
Diff not rendered.
Binary file added public/images/014.webp
Binary file removed public/images/015.jpeg
Diff not rendered.
Binary file added public/images/015.webp
Binary file removed public/images/016.jpeg
Diff not rendered.
Binary file added public/images/016.webp
Binary file removed public/images/017.jpeg
Diff not rendered.
Binary file added public/images/017.webp
Binary file removed public/images/018.jpeg
Diff not rendered.
Binary file added public/images/018.webp
Binary file removed public/images/019.jpeg
Diff not rendered.
Binary file added public/images/019.webp
Binary file removed public/images/020.jpeg
Diff not rendered.
Binary file added public/images/020.webp
Binary file removed public/images/021.jpeg
Diff not rendered.
Binary file added public/images/021.webp
Binary file removed public/images/022.jpeg
Diff not rendered.
Binary file added public/images/022.webp
Binary file removed public/images/023.jpeg
Diff not rendered.
Binary file added public/images/023.webp
Binary file removed public/images/024.jpeg
Diff not rendered.
Binary file added public/images/024.webp
Binary file removed public/images/025.jpeg
Diff not rendered.
Binary file added public/images/025.webp
Binary file removed public/images/026.jpeg
Diff not rendered.
Binary file added public/images/026.webp
Binary file removed public/images/027.jpeg
Diff not rendered.
Binary file added public/images/027.webp
Binary file removed public/images/028.jpeg
Diff not rendered.
Binary file added public/images/028.webp
Binary file removed public/images/029.jpeg
Diff not rendered.
Binary file added public/images/029.webp
Binary file removed public/images/030.jpeg
Diff not rendered.
Binary file added public/images/030.webp
Binary file removed public/images/031.jpeg
Diff not rendered.
Binary file added public/images/031.webp
Binary file removed public/images/032.jpeg
Diff not rendered.
Binary file added public/images/032.webp
Binary file removed public/images/033.jpeg
Diff not rendered.
Binary file added public/images/033.webp
Binary file removed public/images/034.jpeg
Diff not rendered.
Binary file added public/images/034.webp
Binary file removed public/images/035.jpeg
Diff not rendered.
Binary file added public/images/035.webp
Binary file removed public/images/036.jpeg
Diff not rendered.
Binary file added public/images/036.webp
Binary file removed public/images/037.jpeg
Diff not rendered.
Binary file added public/images/037.webp
5 changes: 1 addition & 4 deletions workspaces/client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,8 @@
"classnames": "2.5.1",
"final-form": "4.20.10",
"immer": "10.1.1",
"lodash": "4.17.21",
"luxon": "3.5.0",
"m3u8-parser": "7.2.0",
"p-min-delay": "4.0.2",
"react": "19.0.0",
"react-dom": "19.0.0",
"react-ellipsis-component": "1.1.11",
Expand All @@ -36,6 +34,7 @@
"react-use": "17.6.0",
"setimmediate": "1.0.5",
"tiny-invariant": "1.3.3",
"ts-deepmerge": "7.0.2",
"type-fest": "4.29.1",
"use-callback-ref": "1.3.3",
"use-sync-external-store": "1.4.0",
Expand All @@ -54,7 +53,6 @@
"@ffmpeg/util": "0.12.2",
"@iconify/json": "2.2.317",
"@iconify/types": "2.0.0",
"@types/lodash": "4.17.16",
"@types/luxon": "3.4.2",
"@types/m3u8-parser": "7.2.0",
"@types/react": "19.0.1",
Expand All @@ -67,7 +65,6 @@
"@wsh-2025/configs": "workspace:*",
"arraybuffer-loader": "1.0.8",
"babel-loader": "9.2.1",
"core-js": "3.41.0",
"hls.js": "1.5.17",
"shaka-player": "4.12.5",
"typescript": "5.7.2",
Expand Down
8 changes: 4 additions & 4 deletions workspaces/client/src/app/Document.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Suspense } from 'react';
import { memo, Suspense } from 'react';
import { Outlet, ScrollRestoration } from 'react-router';

import { createStore } from '@wsh-2025/client/src/app/createStore';
Expand All @@ -9,9 +9,9 @@ export const prefetch = async (store: ReturnType<typeof createStore>) => {
return { user };
};

export const Document = () => {
export const Document = memo(function Document() {
return (
<html className="size-full" lang="ja">
<html lang="ja">
<head>
<meta charSet="UTF-8" />
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
Expand All @@ -27,4 +27,4 @@ export const Document = () => {
</body>
</html>
);
};
});
69 changes: 40 additions & 29 deletions workspaces/client/src/app/createRoutes.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import lazy from 'p-min-delay';
import { Suspense } from 'react';
import { RouteObject } from 'react-router';

import { Document, prefetch } from '@wsh-2025/client/src/app/Document';
import { createStore } from '@wsh-2025/client/src/app/createStore';
import { Loading } from '@wsh-2025/client/src/features/layout/components/Loading';

export function createRoutes(store: ReturnType<typeof createStore>): RouteObject[] {
return [
Expand All @@ -11,12 +12,13 @@ export function createRoutes(store: ReturnType<typeof createStore>): RouteObject
{
index: true,
async lazy() {
const { HomePage, prefetch } = await lazy(
import('@wsh-2025/client/src/pages/home/components/HomePage'),
1000,
);
const { HomePage, prefetch } = await import('@wsh-2025/client/src/pages/home/components/HomePage');
return {
Component: HomePage,
Component: () => (
<Suspense fallback={<Loading />}>
<HomePage />
</Suspense>
),
async loader() {
return await prefetch(store);
},
Expand All @@ -25,12 +27,13 @@ export function createRoutes(store: ReturnType<typeof createStore>): RouteObject
},
{
async lazy() {
const { EpisodePage, prefetch } = await lazy(
import('@wsh-2025/client/src/pages/episode/components/EpisodePage'),
1000,
);
const { EpisodePage, prefetch } = await import('@wsh-2025/client/src/pages/episode/components/EpisodePage');
return {
Component: EpisodePage,
Component: () => (
<Suspense fallback={<Loading />}>
<EpisodePage />
</Suspense>
),
async loader({ params }) {
return await prefetch(store, params);
},
Expand All @@ -40,12 +43,13 @@ export function createRoutes(store: ReturnType<typeof createStore>): RouteObject
},
{
async lazy() {
const { prefetch, ProgramPage } = await lazy(
import('@wsh-2025/client/src/pages/program/components/ProgramPage'),
1000,
);
const { prefetch, ProgramPage } = await import('@wsh-2025/client/src/pages/program/components/ProgramPage');
return {
Component: ProgramPage,
Component: () => (
<Suspense fallback={<Loading />}>
<ProgramPage />
</Suspense>
),
async loader({ params }) {
return await prefetch(store, params);
},
Expand All @@ -55,12 +59,13 @@ export function createRoutes(store: ReturnType<typeof createStore>): RouteObject
},
{
async lazy() {
const { prefetch, SeriesPage } = await lazy(
import('@wsh-2025/client/src/pages/series/components/SeriesPage'),
1000,
);
const { prefetch, SeriesPage } = await import('@wsh-2025/client/src/pages/series/components/SeriesPage');
return {
Component: SeriesPage,
Component: () => (
<Suspense fallback={<Loading />}>
<SeriesPage />
</Suspense>
),
async loader({ params }) {
return await prefetch(store, params);
},
Expand All @@ -70,12 +75,15 @@ export function createRoutes(store: ReturnType<typeof createStore>): RouteObject
},
{
async lazy() {
const { prefetch, TimetablePage } = await lazy(
import('@wsh-2025/client/src/pages/timetable/components/TimetablePage'),
1000,
const { prefetch, TimetablePage } = await import(
'@wsh-2025/client/src/pages/timetable/components/TimetablePage'
);
return {
Component: TimetablePage,
Component: () => (
<Suspense fallback={<Loading />}>
<TimetablePage />
</Suspense>
),
async loader() {
return await prefetch(store);
},
Expand All @@ -85,12 +93,15 @@ export function createRoutes(store: ReturnType<typeof createStore>): RouteObject
},
{
async lazy() {
const { NotFoundPage, prefetch } = await lazy(
import('@wsh-2025/client/src/pages/not_found/components/NotFoundPage'),
1000,
const { NotFoundPage, prefetch } = await import(
'@wsh-2025/client/src/pages/not_found/components/NotFoundPage'
);
return {
Component: NotFoundPage,
Component: () => (
<Suspense fallback={<Loading />}>
<NotFoundPage />
</Suspense>
),
async loader() {
return await prefetch(store);
},
Expand Down
4 changes: 2 additions & 2 deletions workspaces/client/src/app/createStore.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { withLenses } from '@dhmk/zustand-lens';
import _ from 'lodash';
import { merge } from 'ts-deepmerge';
import { createStore as createZustandStore } from 'zustand/vanilla';

import { createAuthStoreSlice } from '@wsh-2025/client/src/features/auth/stores/createAuthStoreSlice';
Expand Down Expand Up @@ -39,7 +39,7 @@ export const createStore = ({ hydrationData }: Props) => {
})),
);

store.setState((s) => _.merge(s, hydrationData));
store.setState((s) => merge(s, hydrationData ?? {}));

return store;
};
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export const SignInDialog = ({ isOpen, onClose, onOpenSignUp }: Props) => {
<Dialog isOpen={isOpen} onClose={onClose}>
<div className="size-full">
<div className="mb-[16px] flex w-full flex-row justify-center">
<img className="object-contain" height={36} src="/public/arema.svg" width={98} />
<img className="object-contain" height={36} loading="lazy" src="/public/arema.svg" width={98} />
</div>

<h2 className="mb-[24px] text-center text-[24px] font-bold">ログイン</h2>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export const SignOutDialog = ({ isOpen, onClose }: Props) => {
<Dialog isOpen={isOpen} onClose={onClose}>
<div className="size-full">
<div className="mb-[16px] flex w-full flex-row justify-center">
<img className="object-contain" height={36} src="/public/arema.svg" width={98} />
<img className="object-contain" height={36} loading="lazy" src="/public/arema.svg" width={98} />
</div>

<h2 className="mb-[24px] text-center text-[24px] font-bold">ログアウト</h2>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export const SignUpDialog = ({ isOpen, onClose, onOpenSignIn }: Props) => {
<Dialog isOpen={isOpen} onClose={onClose}>
<div className="size-full">
<div className="mb-[16px] flex w-full flex-row justify-center">
<img className="object-contain" height={36} src="/public/arema.svg" width={98} />
<img className="object-contain" height={36} loading="lazy" src="/public/arema.svg" width={98} />
</div>

<h2 className="mb-[24px] text-center text-[24px] font-bold">会員登録</h2>
Expand Down
28 changes: 3 additions & 25 deletions workspaces/client/src/features/layout/components/AspectRatio.tsx
Original file line number Diff line number Diff line change
@@ -1,31 +1,9 @@
import { ReactNode, useEffect, useRef } from 'react';
import { useUpdate } from 'react-use';
import { ReactNode } from 'react';

interface Props {
children: ReactNode;
ratioHeight: number;
ratioWidth: number;
}

export const AspectRatio = ({ children, ratioHeight, ratioWidth }: Props) => {
const forceUpdate = useUpdate();
const containerRef = useRef<HTMLDivElement>(null);

useEffect(() => {
const interval = setInterval(function tick() {
forceUpdate();
}, 1000);
return () => {
clearInterval(interval);
};
}, []);

const width = containerRef.current?.getBoundingClientRect().width ?? 0;
const height = (width * ratioHeight) / ratioWidth;

return (
<div ref={containerRef} className={`h-[${height}px] relative w-full`}>
{children}
</div>
);
export const AspectRatio = ({ children }: Props) => {
return <div className={'relative aspect-video'}>{children}</div>;
};
Loading