Skip to content

Commit 171e161

Browse files
committed
small fixes
1 parent 082edb6 commit 171e161

File tree

4 files changed

+17
-27
lines changed

4 files changed

+17
-27
lines changed

backend/app/schemas_pydantic/execution.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,12 @@ class ExecutionRequest(BaseModel):
7373

7474
@model_validator(mode="after")
7575
def validate_runtime_supported(self) -> "ExecutionRequest": # noqa: D401
76-
settings = get_settings()
77-
runtimes = settings.SUPPORTED_RUNTIMES or {}
78-
if self.lang not in runtimes:
76+
runtimes = get_settings().SUPPORTED_RUNTIMES
77+
if not (lang_info := runtimes.get(self.lang)):
7978
raise ValueError(f"Language '{self.lang}' not supported. Supported: {list(runtimes.keys())}")
80-
lang_info = runtimes[self.lang]
8179
if self.lang_version not in lang_info.versions:
82-
raise ValueError(f"Version '{self.lang_version}' not supported for {self.lang}. Supported: {lang_info.versions}")
80+
raise ValueError(f"Version '{self.lang_version}' not supported for {self.lang}. "
81+
f"Supported: {lang_info.versions}")
8382
return self
8483

8584

frontend/src/lib/__tests__/user-settings.test.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@ vi.mock('../api', () => ({
99
}));
1010

1111
const mockSetUserSettings = vi.fn();
12-
const mockUpdateSettings = vi.fn();
1312

1413
vi.mock('../../stores/userSettings', () => ({
1514
setUserSettings: (settings: unknown) => mockSetUserSettings(settings),
16-
updateSettings: (partial: unknown) => mockUpdateSettings(partial),
1715
}));
1816

1917
const mockSetThemeLocal = vi.fn();
@@ -38,7 +36,6 @@ describe('user-settings', () => {
3836
mockGetUserSettings.mockReset();
3937
mockUpdateUserSettings.mockReset();
4038
mockSetUserSettings.mockReset();
41-
mockUpdateSettings.mockReset();
4239
mockSetThemeLocal.mockReset();
4340

4441
mockIsAuthenticated = true;
@@ -170,16 +167,18 @@ describe('user-settings', () => {
170167
});
171168

172169
it('updates store on success', async () => {
173-
mockUpdateUserSettings.mockResolvedValue({ data: {}, error: null });
170+
const responseData = { user_id: '123', theme: 'system' };
171+
mockUpdateUserSettings.mockResolvedValue({ data: responseData, error: null });
174172

175173
const { saveUserSettings } = await import('../user-settings');
176174
await saveUserSettings({ theme: 'system' });
177175

178-
expect(mockUpdateSettings).toHaveBeenCalledWith({ theme: 'system' });
176+
expect(mockSetUserSettings).toHaveBeenCalledWith(responseData);
179177
});
180178

181179
it('applies theme locally when theme is saved', async () => {
182-
mockUpdateUserSettings.mockResolvedValue({ data: {}, error: null });
180+
const responseData = { user_id: '123', theme: 'dark' };
181+
mockUpdateUserSettings.mockResolvedValue({ data: responseData, error: null });
183182

184183
const { saveUserSettings } = await import('../user-settings');
185184
await saveUserSettings({ theme: 'dark' });
@@ -188,7 +187,8 @@ describe('user-settings', () => {
188187
});
189188

190189
it('does not apply theme when only editor settings saved', async () => {
191-
mockUpdateUserSettings.mockResolvedValue({ data: {}, error: null });
190+
const responseData = { user_id: '123', editor: { font_size: 16 } };
191+
mockUpdateUserSettings.mockResolvedValue({ data: responseData, error: null });
192192

193193
const { saveUserSettings } = await import('../user-settings');
194194
await saveUserSettings({ editor: { font_size: 16 } });

frontend/src/lib/user-settings.ts

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { get } from 'svelte/store';
22
import { isAuthenticated } from '../stores/auth';
33
import { setThemeLocal } from '../stores/theme';
4-
import { setUserSettings, updateSettings } from '../stores/userSettings';
4+
import { setUserSettings } from '../stores/userSettings';
55
import {
66
getUserSettingsApiV1UserSettingsGet,
77
updateUserSettingsApiV1UserSettingsPut,
88
type UserSettings,
99
type UserSettingsUpdate,
1010
} from './api';
11+
import { unwrap } from './api-interceptors';
1112

1213
export async function loadUserSettings(): Promise<UserSettings | undefined> {
1314
try {
@@ -34,17 +35,11 @@ export async function saveUserSettings(partial: UserSettingsUpdate): Promise<boo
3435
if (!get(isAuthenticated)) return false;
3536

3637
try {
37-
const { error } = await updateUserSettingsApiV1UserSettingsPut({ body: partial });
38-
39-
if (error) {
40-
console.error('Failed to save user settings:', error);
41-
return false;
42-
}
43-
44-
updateSettings(partial as Partial<UserSettings>);
38+
const data = unwrap(await updateUserSettingsApiV1UserSettingsPut({ body: partial }));
39+
setUserSettings(data);
4540

46-
if (partial.theme) {
47-
setThemeLocal(partial.theme);
41+
if (data.theme) {
42+
setThemeLocal(data.theme);
4843
}
4944

5045
return true;

frontend/src/stores/userSettings.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@ export function setUserSettings(settings: UserSettings | null): void {
2121
userSettings.set(settings);
2222
}
2323

24-
export function updateSettings(partial: Partial<UserSettings>): void {
25-
userSettings.update(current => current ? { ...current, ...partial } : null);
26-
}
27-
2824
export function clearUserSettings(): void {
2925
userSettings.set(null);
3026
}

0 commit comments

Comments
 (0)