mirror of
https://github.com/unraid/api.git
synced 2026-01-26 02:18: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 -->
41 lines
941 B
TypeScript
41 lines
941 B
TypeScript
import { ref } from 'vue';
|
|
import { createPinia, defineStore, setActivePinia } from 'pinia';
|
|
|
|
import type { ApiKeyFragment, ApiKeyWithKeyFragment } from '~/composables/gql/graphql';
|
|
|
|
setActivePinia(createPinia());
|
|
|
|
export const useApiKeyStore = defineStore('apiKey', () => {
|
|
const modalVisible = ref(false);
|
|
const editingKey = ref<ApiKeyFragment | null>(null);
|
|
const createdKey = ref<ApiKeyWithKeyFragment | null>(null);
|
|
|
|
function showModal(key: ApiKeyFragment | null = null) {
|
|
editingKey.value = key;
|
|
modalVisible.value = true;
|
|
}
|
|
|
|
function hideModal() {
|
|
modalVisible.value = false;
|
|
editingKey.value = null;
|
|
}
|
|
|
|
function setCreatedKey(key: ApiKeyWithKeyFragment | null) {
|
|
createdKey.value = key;
|
|
}
|
|
|
|
function clearCreatedKey() {
|
|
createdKey.value = null;
|
|
}
|
|
|
|
return {
|
|
modalVisible,
|
|
editingKey,
|
|
createdKey,
|
|
showModal,
|
|
hideModal,
|
|
setCreatedKey,
|
|
clearCreatedKey,
|
|
};
|
|
});
|