Skip to content

Commit 780ac69

Browse files
committed
Add graceful error handling for subscription mode wallet dependency
- Detect wallet service unavailable errors and show clear user message - Explain Bitcoin payment requirement and wallet service dependency - Automatically revert to previous mode when subscription mode fails - Prevent UI from getting stuck in inconsistent state - Increase error message duration for better readability
1 parent 765e03a commit 780ac69

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

src/components/allowed-users/layouts/AllowedUsersLayout.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,16 @@ export const AllowedUsersLayout: React.FC = () => {
7777
try {
7878
await updateSettings(localSettings);
7979
setHasChanges(false);
80+
} catch (error) {
81+
// If save fails due to wallet service, reset to previous mode
82+
if (localSettings.mode === 'subscription' &&
83+
error instanceof Error &&
84+
error.message.includes('wallet service')) {
85+
console.log('Reverting to previous mode due to wallet service error');
86+
setLocalSettings(settings);
87+
setCurrentMode(settings.mode);
88+
setHasChanges(false);
89+
}
8090
} finally {
8191
setSaving(false);
8292
}

src/hooks/useAllowedUsers.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,19 @@ export const useAllowedUsersSettings = () => {
5050
message.success('Settings updated successfully');
5151
} catch (err) {
5252
const errorMessage = err instanceof Error ? err.message : 'Failed to update settings';
53-
setError(errorMessage);
54-
message.error(errorMessage);
53+
54+
// Handle specific wallet service error for subscription mode
55+
if (errorMessage.includes('wallet service is not available') ||
56+
errorMessage.includes('cannot switch to subscription mode')) {
57+
setError('Subscription mode requires active wallet service');
58+
message.error({
59+
content: 'Subscription mode requires Bitcoin payments, but the relay wallet service is not running. Please start the wallet service to generate Bitcoin addresses for user payments before enabling subscription mode.',
60+
duration: 8
61+
});
62+
} else {
63+
setError(errorMessage);
64+
message.error(errorMessage);
65+
}
5566
throw err;
5667
} finally {
5768
setLoading(false);

0 commit comments

Comments
 (0)