From 7b3249791ecf1fd5267239a1184a1ca64cff4bf8 Mon Sep 17 00:00:00 2001 From: Ponshu Developer Date: Sat, 11 Apr 2026 06:42:35 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=E3=82=BB=E3=83=AB=E3=83=95=E3=82=B3?= =?UTF-8?q?=E3=83=BC=E3=83=89=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=20=E2=80=94=20=E3=83=A9=E3=82=A4=E3=82=BB=E3=83=B3?= =?UTF-8?q?=E3=82=B9=E7=AE=A1=E7=90=86=E3=83=90=E3=82=B04=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - license_service.dart: オフライン時にProキャッシュを上書きしないよう修正 (offline statusを受け取ったらキャッシュフォールバックを使う) - license_service.dart: activate()でoffline状態を明示的にハンドル (「キーが見つかりません」ではなく「接続できません」と表示) - license_service.dart: ライセンスキーのバイト数コメントを修正 (16→6バイト) - license_screen.dart: Pro画面の誤ったテキスト修正 (「AI解析無制限」→「すべてのPro機能」) Co-Authored-By: Claude Sonnet 4.6 --- lib/screens/license_screen.dart | 2 +- lib/services/license_service.dart | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/screens/license_screen.dart b/lib/screens/license_screen.dart index 4671f85..8242c46 100644 --- a/lib/screens/license_screen.dart +++ b/lib/screens/license_screen.dart @@ -102,7 +102,7 @@ class _LicenseScreenState extends ConsumerState { ), const SizedBox(height: 16), Text( - 'AI解析を無制限にご利用いただけます。\nご購入ありがとうございました。', + 'すべてのPro機能をご利用いただけます。\nご購入ありがとうございました。', textAlign: TextAlign.center, style: TextStyle(color: colors.textSecondary, height: 1.5), ), diff --git a/lib/services/license_service.dart b/lib/services/license_service.dart index 1a0e34a..9807b6e 100644 --- a/lib/services/license_service.dart +++ b/lib/services/license_service.dart @@ -27,7 +27,7 @@ enum LicenseStatus { /// 2. オフライン時: SharedPreferencesのキャッシュを使用 (Pro状態を維持) /// /// ## ライセンスキー形式 -/// PONSHU-XXXX-XXXX-XXXX (16バイト hex, 大文字) +/// PONSHU-XXXX-XXXX-XXXX (6バイト = 12hex文字, 大文字) class LicenseService { static const _prefLicenseKey = 'ponshu_license_key'; static const _prefCachedStatus = 'ponshu_license_status_cache'; @@ -45,6 +45,11 @@ class LicenseService { if (savedKey.isNotEmpty) { try { final status = await _validateKeyWithServer(savedKey); + if (status == LicenseStatus.offline) { + // ネットワーク不通: キャッシュを上書きせずに返す + debugPrint('[License] Server unreachable, using cache'); + return _getCachedStatus(prefs); + } await _cacheStatus(prefs, status); return status; } catch (e) { @@ -82,6 +87,10 @@ class LicenseService { return (success: false, message: 'このライセンスは無効化されています。\nサポートにお問い合わせください。'); } + if (status == LicenseStatus.offline) { + return (success: false, message: 'サーバーに接続できませんでした。\nネットワーク接続を確認してください。'); + } + return (success: false, message: 'ライセンスキーが見つかりません。\nご購入時のメールをご確認ください。'); }