1.1.8
注目すべき点
バージョン番号については、
package.json
ファイルのversion
フィールドを確認してください。
LanguageDetectionAlert
多言語対応の修正
アップデートレベル:1.1.7+ は修正必須、1.1.7- は修正不要。
1.1.7での多言語構造のアップグレード後、
LanguageDetectionAlert
が多言語テキストを取得する場所が更新されていなかったため、これを修正します。
// const messages = require(`@/i18n/messages/${currentLocale}.json`); // 削除
const messages = require(`@/i18n/messages/${currentLocale}/common.json`); // 追加
ログイン検証用の isValidRedirectUrl の共有
アップデートレベル:任意修正。
この変更は、異なるログイン方法間での検証プロセスを同期するためのものです。
URL検証メソッド isValidRedirectUrl
を app/auth/confirm/route.ts
から独立したファイル app/auth/utils.ts
に移動します。
const ALLOWED_REDIRECT_HOSTS = (
process.env.NODE_ENV === 'development'
? (process.env.ALLOWED_REDIRECT_HOSTS?.split(',') || [])
: []
).concat(process.env.NEXT_PUBLIC_SITE_URL!).filter(Boolean) as string[]
export function isValidRedirectUrl(url: string): boolean {
try {
if (url.startsWith('/api/')) {
return false;
}
if (url.startsWith('/')) {
return true;
}
const parsedUrl = new URL(url)
return ALLOWED_REDIRECT_HOSTS.includes(parsedUrl.host)
} catch {
return false
}
}
app/auth/callback/route.ts
と app/auth/confirm/route.ts
の両方で同じURL検証を使用します:
let next = searchParams.get('next') ?? '/'
next = next == 'null' ? '/' : next
// 追加
if (!isValidRedirectUrl(next)) {
console.error('Invalid redirect URL')
return NextResponse.redirect(new URL(`/redirect-error?code=invalid_redirect`, origin))
}
画像アップロード失敗時の処理を最適化
アップデートレベル:任意修正。
この変更は、画像アップロード失敗後に選択された画像をクリアするためのものです。
if (
!presignedUrlActionResponse.success ||
!presignedUrlActionResponse.data
) {
setPreviewUrl(null); // 追加、70行目
toast.error(t("uploadError"), {
description:
presignedUrlActionResponse.error || t("presignedUrlError"),
});
return "";
}
// ...
try {
// ...
} catch (error) {
setPreviewUrl(null); // 追加、107行目
console.error("MDX Image Upload failed:", error);
toast.error(getErrorMessage(error) || t("upload.uploadErrorUnexpected"));
} finally {
// ...
}
orders テーブルから period_start と period_end フィールドを削除
アップデートレベル:修正不要。
この変更は意味のないフィールドを削除するものです。残しても削除しても機能に影響はありません。複製されたコードは修正不要とすることをお勧めします。
-
data/orders.sql
からperiod_start
とperiod_end
の定義を削除します -
lib/stripe/webhook-handlers.ts
内のhandleInvoicePaid
関数でperiod_start
とperiod_end
フィールドに関連する行を削除します:
// period_start: invoice.period_start ? new Date(invoice.period_start * 1000).toISOString() : null, // 削除
// period_end: invoice.period_end ? new Date(invoice.period_end * 1000).toISOString() : null, // 削除
-
Supabase Console Table Editor で
period_start
とperiod_end
フィールドを削除します -
ローカルの Supabase 型定義を更新します:
supabase gen types typescript --project-id <your-project-id> --schema public > lib/supabase/types.ts
年間サブスクリプションの例
サンプルコード:subscription-yearly ブランチ
ドキュメント:https://nexty.dev/docs/guide/payment/yearly-subscription