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

セーフエリア対応 #383

Merged
merged 4 commits into from
Mar 22, 2024
Merged

セーフエリア対応 #383

merged 4 commits into from
Mar 22, 2024

Conversation

takecchi
Copy link
Member

@takecchi takecchi commented Mar 22, 2024

Issue

変更内容

  • proxy.jsが.env,.env.localを見るように変更
  • README.mdの更新
  • 100vh100dvhにすることでデバイス差異を吸収

Summary by CodeRabbit


  • 新機能: proxy.js.env.env.localを参照するように更新されました。これにより、環境設定の柔軟性が向上します。
  • バグ修正: 100vhから100dvhへの変更により、デバイス間の表示差異を解消しました。これにより、ユーザーインターフェースの一貫性が向上します。
  • ドキュメンテーション: README.mdが更新され、新たな環境設定方法について説明が追加されました。

Copy link

github-actions bot commented Mar 22, 2024

Image description CodeRabbit

ウォークスルー

この変更では、.env.env.localへの参照を追加し、デバイス間の高さ差異を吸収するために100vhから100dvhへの変更が行われました。これにより、アプリケーションは様々なデバイスで一貫したビューポートの高さを提供します。

変更点

ファイル 要約
README.md, proxy.js .env.env.localへの参照を追加し、README.mdを更新しました。
src/app/(menu)/_components/main/PrimaryColumn.tsx, src/app/(menu)/layout.tsx 100vhから100dvhへの変更を行い、デバイス間の高さ差異を吸収しました。
src/app/(menu)/(public)/[username]/_components/layouts/ProfileSettingModal.tsx, src/app/(menu)/_components/main/Loading.tsx DialogおよびCropContainerの高さを100vhから100dvhに変更し、デバイス間の差異を吸収しました。

🐇

さあ、新たなる道へと進もう、

高さの違いを越えて、

どんなデバイスでも一貫したビューを提供しよう。

🎉 変更を祝して、ハッピーホッピング! 🎉


Uplevel your code reviews with CodeRabbit Pro

CodeRabbit Pro

If you like this project, please support us by purchasing the Pro version. The Pro version has advanced context, superior noise reduction and several proprietary improvements compared to the open source version. Moreover, CodeRabbit Pro is free for open source projects.

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image description CodeRabbit

Commits Files that changed from the base of the PR and between c9eb21b and a809bb2 commits.
Files selected (6)
  • README.md (1)
  • proxy.js (6)
  • src/app/(menu)/(public)/[username]/_components/layouts/ProfileSettingModal.tsx (3)
  • src/app/(menu)/_components/main/Loading.tsx (1)
  • src/app/(menu)/_components/main/PrimaryColumn.tsx (1)
  • src/app/(menu)/layout.tsx (1)
Files ignored due to filter (2)
  • package-lock.json
  • package.json
Files not reviewed due to errors (1)
  • src/app/(menu)/(public)/[username]/_components/layouts/ProfileSettingModal.tsx (no response)
Review comments generated (12)
  • Review: 7
  • LGTM: 5

Tips

Chat with Image description CodeRabbit Bot (@coderabbitai)

  • Reply on review comments left by this bot to ask follow-up questions. A review comment is a comment on a diff or a file.
  • Invite the bot into a review comment chain by tagging @coderabbitai in a reply.

Code suggestions

  • The bot may make code suggestions, but please review them carefully before committing since the line number ranges may be misaligned.
  • You can edit the comment made by the bot and manually tweak the suggestion if it is slightly off.

Pausing incremental reviews

  • Add @coderabbitai: ignore anywhere in the PR description to pause further reviews from the bot.

@@ -13,7 +13,7 @@ const Layout = styled('div')`
7fr
);
margin: 0 auto;
min-height: 100vh;
min-height: 100dvh;
Copy link

@github-actions github-actions bot Mar 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image description CodeRabbit

100dvhという単位はCSSに存在しません。おそらく、デバイスの高さを表すために100vhを使用することを意図していると思われますが、これはブラウザのビューポートの高さを基準にします。もし、デバイスの安全領域(Safe Area)を考慮したい場合は、適切な方法を探す必要があります。例えば、CSS環境変数env()を使用して、safe-area-inset-*を利用することができます。

-   min-height: 100dvh;
+   min-height: calc(100vh - env(safe-area-inset-bottom));

この修正により、デバイスの安全領域を考慮した高さを設定することが可能になります。ただし、env()は一部のブラウザではサポートされていないため、対応ブラウザを確認するか、ポリフィルを使用することを検討してください。

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2022/11/30に全てのブラウザでdvhはサポートされました。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image description CodeRabbit

@takecchi ご指摘ありがとうございます。私の知識は2021年9月までのもので、その時点ではdvhという単位はCSSに存在しないという情報を持っていました。しかし、あなたのコメントにより、それが2022年11月30日以降に全てのブラウザでサポートされるようになったことを知りました。

そのため、100dvhを使用することでデバイスの安全領域を考慮した高さを設定することが可能であると理解しました。この新しい情報に基づき、私の先程の提案は無視していただいて問題ありません。

今後ともよろしくお願いいたします。

Comment on lines +64 to +74
target: API_URL,
changeOrigin: true,
}),
);

server.all('*', (req, res) => {
return handle(req, res);
});
server.listen(3000, (err) => {
server.listen(siteUrl.port, (err) => {
if (err) throw err;
console.log('> Ready on http://localhost:3000');
console.log(`> Ready on ${SITE_URL}`);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image description CodeRabbit

この部分のエラーハンドリングが不十分です。現在、エラーが発生した場合には単にスローされていますが、これではアプリケーションがクラッシュしてしまいます。適切なエラーハンドリングを追加することで、エラーが発生した際でもアプリケーションが安定して動作し続けるようにすることが重要です。

-  server.listen(siteUrl.port, (err) => {
-    if (err) throw err;
-    console.log(`> Ready on ${SITE_URL}`);
-  });
+  server.listen(siteUrl.port, (err) => {
+    if (err) {
+      console.error(`Failed to start server: ${err.message}`);
+      process.exit(1);
+    } else {
+      console.log(`> Ready on ${SITE_URL}`);
+    }
+  });

Comment on lines +87 to +107
proxyReq.setHeader('host', siteUrl.hostname);
},
onProxyRes: (proxyRes) => {
proxyRes.headers['Access-Control-Allow-Origin'] = 'http://localhost:3000';
proxyRes.headers['Access-Control-Allow-Origin'] = SITE_URL;
proxyRes.headers['Access-Control-Allow-Credentials'] = 'true';
// Set-Cookieが返却された際、Domain=.localhost;に変更
const setCookie = proxyRes.headers['set-cookie'] ?? undefined;
if (setCookie) {
const pattern = /Domain=\.[a-zA-Z0-9-]*\.cuculus\.jp;/;
const cookies = [];
setCookie.forEach((value) => {
cookies.push(value.replace(pattern, 'Domain=.localhost;'));
cookies.push(value.replace(pattern, `Domain=.${siteUrl.hostname};`));
});
proxyRes.headers['set-cookie'] = cookies;
}
},
}),
);
proxy.listen(8080, (err) => {
proxy.listen(apiUrl.port, (err) => {
if (err) throw err;
console.log('> Proxy server ready on http://localhost:8080');
console.log(`> Proxy server ready on ${API_URL}`);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image description CodeRabbit

onProxyReqonProxyResの中でエラーハンドリングが行われていません。これらの関数内でエラーが発生した場合、アプリケーションがクラッシュする可能性があります。適切なエラーハンドリングを追加することで、エラーが発生した際でもアプリケーションが安定して動作し続けるようにすることが重要です。

また、set-cookieヘッダーの値を変更する際に正規表現を使用していますが、この正規表現は特定のドメイン名(.cuculus.jp)に固定されています。これでは他のドメインでアプリケーションを実行した場合に問題が発生する可能性があります。代わりに、siteUrl.hostnameを使用して動的にドメイン名を設定するように修正することをお勧めします。

-  proxy.listen(apiUrl.port, (err) => {
-    if (err) throw err;
-    console.log(`> Proxy server ready on ${API_URL}`);
-  });
+  proxy.listen(apiUrl.port, (err) => {
+    if (err) {
+      console.error(`Failed to start proxy server: ${err.message}`);
+      process.exit(1);
+    } else {
+      console.log(`> Proxy server ready on ${API_URL}`);
+    }
+  });

-  const pattern = /Domain=\.[a-zA-Z0-9-]*\.cuculus\.jp;/;
+  const pattern = new RegExp(`Domain=\\.[a-zA-Z0-9-]*\\.${siteUrl.hostname.replace('.', '\\.')};`);

@@ -9,11 +9,11 @@ const Main = styled('main')`
flex-direction: column;
border-left: 1px solid ${({ theme }) => theme.palette.grey[100]};
border-right: 1px solid ${({ theme }) => theme.palette.grey[100]};
min-height: 100vh;
min-height: 100dvh;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image description CodeRabbit

100dvhという単位はCSSに存在しません。おそらく100vhを意図しているのではないでしょうか?ただし、100vhはモバイルブラウザのアドレスバーの高さを含むため、期待通りの表示にならないことがあります。その場合は、100%を使用することを検討してみてください。

-   min-height: 100dvh;
+   min-height: 100%;

Comment on lines 15 to +16
min-height: calc(
100vh - ${({ theme }) => theme.mixins.bottomMenu.height}px +
100dvh - ${({ theme }) => theme.mixins.bottomMenu.height}px +

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image description CodeRabbit

同様に、100dvhは存在しない単位です。ここでも100%を使用することを検討してみてください。ただし、env(safe-area-inset-bottom)を引き算することで、安全領域を考慮した高さを計算していますので、その部分はそのままにしておくべきです。

-      min-height: calc(
-       100dvh - ${({ theme }) => theme.mixins.bottomMenu.height}px +
-         env(safe-area-inset-bottom)
-     );
+      min-height: calc(
+       100% - ${({ theme }) => theme.mixins.bottomMenu.height}px +
+         env(safe-area-inset-bottom)
+     );

@@ -7,12 +7,12 @@ const Root = styled('div')`
flex-direction: column;
border-left: 1px solid ${({ theme }) => theme.palette.grey[100]};
border-right: 1px solid ${({ theme }) => theme.palette.grey[100]};
min-height: 100vh;
min-height: 100dvh;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image description CodeRabbit

100dvhという単位は存在しません。おそらく100vhを意図しているのではないでしょうか? ただし、vh単位はモバイルデバイスのアドレスバーの高さを含むため、期待通りの動作をしない場合があります。そのため、セーフエリアを考慮に入れる場合は、CSS変数env(safe-area-inset-bottom)を使用することを検討してみてください。

-   min-height: 100dvh;
+   min-height: calc(100vh - env(safe-area-inset-bottom));

Comment on lines 14 to 16
min-height: calc(
100vh - ${({ theme }) => theme.mixins.bottomMenu.height}px +
100dvh - ${({ theme }) => theme.mixins.bottomMenu.height}px +
env(safe-area-inset-bottom)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image description CodeRabbit

同様に、tabletブレークポイントでも100dvh100vhに修正し、safe-area-inset-bottomを考慮に入れるように修正することを提案します。

-      min-height: calc(
-       100dvh - ${({ theme }) => theme.mixins.bottomMenu.height}px +
-         env(safe-area-inset-bottom)
-     );
+      min-height: calc(
+       100vh - ${({ theme }) => theme.mixins.bottomMenu.height}px -
+         env(safe-area-inset-bottom)
+     );

@takecchi takecchi merged commit 7dfb671 into main Mar 22, 2024
6 checks passed
@takecchi takecchi deleted the feature/fix-100vh branch March 22, 2024 02:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant