{"version":3,"file":"updateAppPluginSettings.mjs","sources":["../../../../src/services/pluginSettings/updateAppPluginSettings.ts"],"sourcesContent":["import { compare, type Operation } from 'fast-json-patch';\n\nimport { type PluginMeta } from '@grafana/data';\n\nimport { getFeatureFlagClient } from '../../internal/openFeature';\nimport { FlagKeys } from '../../internal/openFeature/openfeature.gen';\nimport { replaceCachedPromise } from '../../utils/getCachedPromise';\nimport { getBackendSrv } from '../backendSrv';\nimport { refetchPluginMeta } from '../pluginMeta/plugins';\n\nimport { logPluginSettingsDebug, logPluginSettingsError } from './logging';\nimport { getSettingsMapper } from './mappers/mappers';\nimport { inlineSecureValuesMapper, settingsSpecMapper } from './mappers/v0alpha1SettingsMapper';\nimport { refetchCachedAppSettings, refetchCachedLegacySettings } from './refetchPluginSettings';\nimport { type Settings as v0alpha1Settings } from './types';\nimport { getApiVersion, getCacheKey, getNamespace } from './utils';\n\nfunction updateLegacySettings(pluginId: string, data: Partial<PluginMeta>): Promise<void> {\n  logPluginSettingsDebug('PluginSettings: updating legacy plugin settings', { pluginId });\n  return getBackendSrv()\n    .post<void>(`/api/plugins/${pluginId}/settings`, data, { validatePath: true })\n    .catch((err) => {\n      logPluginSettingsError('PluginSettings: updating legacy plugin settings failed', err, { pluginId });\n      return Promise.reject(err);\n    });\n}\n\nasync function internalUpdateAppPluginSettings(pluginId: string, data: Partial<PluginMeta>): Promise<v0alpha1Settings> {\n  const spec = settingsSpecMapper(data);\n  const secure = inlineSecureValuesMapper(data);\n  const update = {\n    apiVersion: `${pluginId}/${getApiVersion()}`,\n    kind: 'Settings',\n    spec,\n    secure,\n  };\n\n  const { metadata, ...stored } = await refetchCachedAppSettings(pluginId, false);\n  const test: Operation = { op: 'test', path: '/metadata/resourceVersion', value: metadata.resourceVersion };\n  const patch = [test, ...compare(stored, update)];\n  logPluginSettingsDebug('PluginSettings: updating plugin settings', { pluginId });\n\n  const updated = await getBackendSrv()\n    .patch<v0alpha1Settings>(`/apis/${pluginId}/${getApiVersion()}/namespaces/${getNamespace()}/app/instance`, patch, {\n      validatePath: true,\n      headers: {\n        'Content-Type': 'application/json-patch+json',\n      },\n    })\n    .catch((err) => {\n      logPluginSettingsError('PluginSettings: updating plugin settings failed', err, { pluginId });\n      return Promise.reject(err);\n    });\n\n  return updated;\n}\n\n/**\n * Update the settings for an app plugin.\n * @param pluginId - The id of the plugin.\n * @param data - The partial `PluginMeta` to apply to the stored settings.\n * @returns The updated plugin's `PluginMeta`.\n */\nexport async function updateAppPluginSettings(pluginId: string, data: Partial<PluginMeta>): Promise<PluginMeta> {\n  if (!getFeatureFlagClient().getBooleanValue(FlagKeys.PluginsUseMTPluginSettings, false)) {\n    await updateLegacySettings(pluginId, data);\n    return refetchCachedLegacySettings(pluginId, false);\n  }\n\n  const meta = await refetchPluginMeta(pluginId);\n  if (!meta) {\n    logPluginSettingsDebug('PluginSettings: falling back to updating legacy plugin settings', { pluginId });\n    await updateLegacySettings(pluginId, data);\n    return refetchCachedLegacySettings(pluginId, false);\n  }\n\n  if (meta.spec.pluginJson.type !== 'app') {\n    const mapper = getSettingsMapper();\n    return mapper(meta.spec);\n  }\n\n  const updatedSettings = await internalUpdateAppPluginSettings(pluginId, data);\n  const cacheKey = getCacheKey(pluginId);\n  replaceCachedPromise(cacheKey, updatedSettings); // add updated settings to cache\n  const mapper = getSettingsMapper();\n  return mapper(meta.spec, updatedSettings);\n}\n"],"names":["mapper"],"mappings":"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"}