MCPcopy
hub / github.com/simstudioai/sim / useUpdateGeneralSetting

Function useUpdateGeneralSetting

apps/sim/hooks/queries/general-settings.ts:157–197  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

155}[keyof GeneralSettings]
156
157export function useUpdateGeneralSetting() {
158 const queryClient = useQueryClient()
159
160 return useMutation({
161 mutationFn: async ({ key, value }: UpdateSettingParams) => {
162 return requestJson(updateUserSettingsContract, { body: { [key]: value } })
163 },
164 onMutate: async ({ key, value }) => {
165 await queryClient.cancelQueries({ queryKey: generalSettingsKeys.settings() })
166
167 const previousSettings = queryClient.getQueryData<GeneralSettings>(
168 generalSettingsKeys.settings()
169 )
170
171 if (previousSettings) {
172 const newSettings = {
173 ...previousSettings,
174 [key]: value,
175 }
176
177 queryClient.setQueryData<GeneralSettings>(generalSettingsKeys.settings(), newSettings)
178
179 if (key === 'theme') {
180 syncThemeToNextThemes(value as GeneralSettings['theme'])
181 }
182 }
183
184 return { previousSettings }
185 },
186 onError: (err, _variables, context) => {
187 if (context?.previousSettings) {
188 queryClient.setQueryData(generalSettingsKeys.settings(), context.previousSettings)
189 syncThemeToNextThemes(context.previousSettings.theme)
190 }
191 logger.error('Failed to update setting:', err)
192 },
193 onSettled: () => {
194 return queryClient.invalidateQueries({ queryKey: generalSettingsKeys.settings() })
195 },
196 })
197}

Callers 4

GeneralFunction · 0.90
BillingFunction · 0.90
AdminFunction · 0.90

Calls 3

requestJsonFunction · 0.90
syncThemeToNextThemesFunction · 0.90
errorMethod · 0.80

Tested by

no test coverage detected