TryGhost/Ghost

View on GitHub
apps/admin-x-framework/src/api/apiKeys.ts

Summary

Maintainability
A
3 hrs
Test Coverage
import {createMutation} from '../utils/api/hooks';
import {IntegrationsResponseType, integrationsDataType} from './integrations';

// Types

export type APIKey = {
    id: string;
    type: 'admin' | 'content';
    secret: string;
    role_id: string;
    integration_id: string;
    user_id: string | null;
    last_seen_at: string | null;
    last_seen_version: string | null;
    created_at: string;
    updated_at: string;
}

// Requests

export const useRefreshAPIKey = createMutation<IntegrationsResponseType, {integrationId: string, apiKeyId: string}>({
    method: 'POST',
    path: ({integrationId, apiKeyId}) => `/integrations/${integrationId}/api_key/${apiKeyId}/refresh/`,
    body: ({integrationId}) => ({integrations: [{id: integrationId}]}),
    updateQueries: {
        emberUpdateType: 'createOrUpdate',
        dataType: integrationsDataType,
        update: (newData, currentData) => (currentData && {
            ...(currentData as IntegrationsResponseType),
            integrations: (currentData as IntegrationsResponseType).integrations.map((integration) => {
                const newIntegration = newData.integrations.find(({id}) => id === integration.id);
                return newIntegration || integration;
            })
        })
    }
});