Merge pull request #31413 from drodil/user_settings_nfs

feat(user-settings): add storage api blueprint for nfs
This commit is contained in:
Ben Lambert
2025-10-14 13:18:37 +01:00
committed by GitHub
3 changed files with 57 additions and 3 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-user-settings': patch
---
Added user settings storage API blueprint
+18
View File
@@ -3,8 +3,11 @@
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { AnyApiFactory } from '@backstage/frontend-plugin-api';
import { AnyRouteRefParams } from '@backstage/frontend-plugin-api';
import { ApiFactory } from '@backstage/frontend-plugin-api';
import { ConfigurableExtensionDataRef } from '@backstage/frontend-plugin-api';
import { ExtensionBlueprintParams } from '@backstage/frontend-plugin-api';
import { ExtensionDataRef } from '@backstage/frontend-plugin-api';
import { ExtensionDefinition } from '@backstage/frontend-plugin-api';
import { ExtensionInput } from '@backstage/frontend-plugin-api';
@@ -21,6 +24,21 @@ const _default: OverridableFrontendPlugin<
},
{},
{
'api:user-settings/storage': ExtensionDefinition<{
kind: 'api';
name: 'storage';
config: {};
configInput: {};
output: ExtensionDataRef<AnyApiFactory, 'core.api.factory', {}>;
inputs: {};
params: <
TApi,
TImpl extends TApi,
TDeps extends { [name in string]: unknown },
>(
params: ApiFactory<TApi, TImpl, TDeps>,
) => ExtensionBlueprintParams<AnyApiFactory>;
}>;
'nav-item:user-settings': ExtensionDefinition<{
kind: 'nav-item';
name: undefined;
+34 -3
View File
@@ -14,22 +14,53 @@
* limitations under the License.
*/
import {
ApiBlueprint,
coreExtensionData,
createExtensionInput,
createFrontendPlugin,
PageBlueprint,
discoveryApiRef,
errorApiRef,
fetchApiRef,
identityApiRef,
NavItemBlueprint,
PageBlueprint,
storageApiRef,
} from '@backstage/frontend-plugin-api';
import {
compatWrapper,
convertLegacyRouteRef,
convertLegacyRouteRefs,
compatWrapper,
} from '@backstage/core-compat-api';
import SettingsIcon from '@material-ui/icons/Settings';
import { settingsRouteRef } from './plugin';
import { UserSettingsStorage } from './apis';
import { signalApiRef } from '@backstage/plugin-signals-react';
export * from './translation';
const userSettingsStorageApi = ApiBlueprint.make({
name: 'storage',
params: defineParams =>
defineParams({
api: storageApiRef,
deps: {
fetchApi: fetchApiRef,
discoveryApi: discoveryApiRef,
errorApi: errorApiRef,
identityApi: identityApiRef,
signalApi: signalApiRef,
},
factory: ({ fetchApi, discoveryApi, errorApi, identityApi, signalApi }) =>
UserSettingsStorage.create({
fetchApi,
discoveryApi,
errorApi,
identityApi,
signalApi,
}),
}),
});
const userSettingsPage = PageBlueprint.makeWithOverrides({
inputs: {
providerSettings: createExtensionInput([coreExtensionData.reactElement], {
@@ -70,7 +101,7 @@ export const settingsNavItem = NavItemBlueprint.make({
export default createFrontendPlugin({
pluginId: 'user-settings',
info: { packageJson: () => import('../package.json') },
extensions: [userSettingsPage, settingsNavItem],
extensions: [userSettingsStorageApi, userSettingsPage, settingsNavItem],
routes: convertLegacyRouteRefs({
root: settingsRouteRef,
}),