-
Notifications
You must be signed in to change notification settings - Fork 1
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
セーフエリア対応 #383
Conversation
ウォークスルーこの変更では、 変更点
Uplevel your code reviews with CodeRabbit ProCodeRabbit ProIf 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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 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; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
100dvh
という単位はCSSに存在しません。おそらく、デバイスの高さを表すために100vh
を使用することを意図していると思われますが、これはブラウザのビューポートの高さを基準にします。もし、デバイスの安全領域(Safe Area)を考慮したい場合は、適切な方法を探す必要があります。例えば、CSS環境変数env()
を使用して、safe-area-inset-*
を利用することができます。
- min-height: 100dvh;
+ min-height: calc(100vh - env(safe-area-inset-bottom));
この修正により、デバイスの安全領域を考慮した高さを設定することが可能になります。ただし、env()
は一部のブラウザではサポートされていないため、対応ブラウザを確認するか、ポリフィルを使用することを検討してください。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2022/11/30に全てのブラウザでdvhはサポートされました。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@takecchi ご指摘ありがとうございます。私の知識は2021年9月までのもので、その時点ではdvh
という単位はCSSに存在しないという情報を持っていました。しかし、あなたのコメントにより、それが2022年11月30日以降に全てのブラウザでサポートされるようになったことを知りました。
そのため、100dvh
を使用することでデバイスの安全領域を考慮した高さを設定することが可能であると理解しました。この新しい情報に基づき、私の先程の提案は無視していただいて問題ありません。
今後ともよろしくお願いいたします。
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}`); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
この部分のエラーハンドリングが不十分です。現在、エラーが発生した場合には単にスローされていますが、これではアプリケーションがクラッシュしてしまいます。適切なエラーハンドリングを追加することで、エラーが発生した際でもアプリケーションが安定して動作し続けるようにすることが重要です。
- 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}`);
+ }
+ });
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}`); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
onProxyReq
とonProxyRes
の中でエラーハンドリングが行われていません。これらの関数内でエラーが発生した場合、アプリケーションがクラッシュする可能性があります。適切なエラーハンドリングを追加することで、エラーが発生した際でもアプリケーションが安定して動作し続けるようにすることが重要です。
また、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; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
min-height: calc( | ||
100vh - ${({ theme }) => theme.mixins.bottomMenu.height}px + | ||
100dvh - ${({ theme }) => theme.mixins.bottomMenu.height}px + |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
同様に、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; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
min-height: calc( | ||
100vh - ${({ theme }) => theme.mixins.bottomMenu.height}px + | ||
100dvh - ${({ theme }) => theme.mixins.bottomMenu.height}px + | ||
env(safe-area-inset-bottom) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
同様に、tablet
ブレークポイントでも100dvh
を100vh
に修正し、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)
+ );
Issue
変更内容
.env
,.env.local
を見るように変更100vh
を100dvh
にすることでデバイス差異を吸収Summary by CodeRabbit
proxy.js
が.env
と.env.local
を参照するように更新されました。これにより、環境設定の柔軟性が向上します。100vh
から100dvh
への変更により、デバイス間の表示差異を解消しました。これにより、ユーザーインターフェースの一貫性が向上します。README.md
が更新され、新たな環境設定方法について説明が追加されました。