mirror of
https://github.com/unraid/api.git
synced 2026-01-05 16:09:49 -06:00
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added ability to update existing API keys, including name, description, roles, and permissions, through the UI and GraphQL API. - Introduced a modal-based interface for creating and editing API keys with improved role and permission selection. - Added a new API Key Manager page and custom element for centralized API key management. - Enhanced API key listing with detailed views, role badges, permission counters, and copy-to-clipboard functionality. - Introduced reusable dialog components for consistent modal experiences. - Added plugin management capabilities with mutations to add or remove plugins. - Added comprehensive support for managing remote access, network URLs, and API key updates within the GraphQL schema. - **Bug Fixes** - Improved error handling and display for API key creation and update operations. - **Refactor** - Centralized API key modal and editing state management using a dedicated store. - Updated GraphQL queries and mutations to use reusable fragments for API key data. - Removed deprecated or redundant remote access and allowed origins configuration components and queries. - Simplified and updated input types for connect settings and remote access. - **Tests** - Added comprehensive tests for API key update logic and improved coverage for API key loading. - **Chores** - Updated configuration files and cleaned up unused schema and component files. - Added new dialog components and centralized exports for dialogs. - Improved ESLint configuration and import statements for better type handling. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
21 lines
1021 B
TypeScript
21 lines
1021 B
TypeScript
/** Output key + value as string for each item in the object. Adds new line after each item. */
|
|
export const OBJ_TO_STR = (obj: object): string => Object.entries(obj).reduce((str, [p, val]) => `${str}${p}: ${val}\n`, '');
|
|
|
|
/**
|
|
* Extracts a meaningful error message from a GraphQL error or generic error object.
|
|
*/
|
|
export function extractGraphQLErrorMessage(err: unknown): string {
|
|
let message = 'An unknown error occurred.';
|
|
const e = err as { graphQLErrors?: unknown; message?: string };
|
|
const graphQLErrors = Array.isArray(e?.graphQLErrors) ? e.graphQLErrors : undefined;
|
|
if (graphQLErrors && graphQLErrors.length) {
|
|
const gqlError = graphQLErrors[0] as { extensions?: { originalError?: { message?: string[] } }; message?: string };
|
|
message =
|
|
gqlError?.extensions?.originalError?.message?.[0] ||
|
|
gqlError?.message ||
|
|
message;
|
|
} else if (typeof err === 'object' && err !== null && 'message' in err && typeof e.message === 'string') {
|
|
message = e.message;
|
|
}
|
|
return message;
|
|
} |