Skip to content

Commit d5ea2ac

Browse files
committed
fix PR review findings for status contract and storage utils
1 parent c05985b commit d5ea2ac

11 files changed

Lines changed: 45 additions & 22 deletions

File tree

frontend/src/__tests__/feedSessionStorage.test.ts renamed to frontend/src/__tests__/feedWorkflowStorage.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ import {
77
loadFeedResultState,
88
saveFeedDraftState,
99
saveFeedResultSnapshot,
10-
} from '../utils/feedSessionStorage';
10+
} from '../utils/feedWorkflowStorage';
1111

12-
describe('feedSessionStorage', () => {
12+
describe('feedWorkflowStorage', () => {
1313
beforeEach(() => {
1414
globalThis.localStorage.clear();
1515
globalThis.sessionStorage.clear();

frontend/src/api/generated/sdk.gen.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export const renderFeedByToken = <ThrowOnError extends boolean = false>(options:
5252
*
5353
* Get feed status
5454
*/
55-
export const getFeedStatus = <ThrowOnError extends boolean = false>(options?: Options<GetFeedStatusData, ThrowOnError>) => (options?.client ?? client).get<GetFeedStatusResponses, unknown, ThrowOnError>({ url: '/feeds/{token}/status', ...options });
55+
export const getFeedStatus = <ThrowOnError extends boolean = false>(options: Options<GetFeedStatusData, ThrowOnError>) => (options.client ?? client).get<GetFeedStatusResponses, unknown, ThrowOnError>({ url: '/feeds/{token}/status', ...options });
5656

5757
/**
5858
* Authenticated health check

frontend/src/api/generated/types.gen.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,9 @@ export type RenderFeedByTokenResponse = RenderFeedByTokenResponses[keyof RenderF
153153

154154
export type GetFeedStatusData = {
155155
body?: never;
156-
path?: never;
156+
path: {
157+
token: string;
158+
};
157159
query?: never;
158160
url: '/feeds/{token}/status';
159161
};

frontend/src/components/App.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
loadFeedDraftState,
1212
loadFeedResultState,
1313
saveFeedDraftState,
14-
} from '../utils/feedSessionStorage';
14+
} from '../utils/feedWorkflowStorage';
1515
import { normalizeUserUrl } from '../utils/url';
1616
import type { WorkflowState } from './AppPanels';
1717
import type { CreatedFeedResult, FeedCreationError } from '../api/contracts';

frontend/src/hooks/useFeedConversion.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import type {
1212
FeedRetryState,
1313
FeedStatusWarning,
1414
} from '../api/contracts';
15-
import { saveFeedResultSnapshot } from '../utils/feedSessionStorage';
15+
import { saveFeedResultSnapshot } from '../utils/feedWorkflowStorage';
1616
import { normalizeUserUrl } from '../utils/url';
1717

1818
interface ConversionState {

frontend/src/utils/persistentStorage.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@ const memoryStorage = (() => {
66
return store.size;
77
},
88
clear: () => store.clear(),
9-
getItem: (key: string) => store.get(key),
10-
key: (index: number) => [...store.keys()][index],
9+
// Storage#getItem returns null when a key is missing.
10+
// eslint-disable-next-line unicorn/no-null
11+
getItem: (key: string) => store.get(key) ?? null,
12+
// Storage#key returns null when the index is out of range.
13+
// eslint-disable-next-line unicorn/no-null
14+
key: (index: number) => [...store.keys()][index] ?? null,
1115
removeItem: (key: string) => {
1216
store.delete(key);
1317
},

public/openapi.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,12 @@ paths:
318318
get:
319319
description: Get feed status
320320
operationId: getFeedStatus
321+
parameters:
322+
- in: path
323+
name: token
324+
required: true
325+
schema:
326+
type: string
321327
responses:
322328
'200':
323329
content:

spec/html2rss/web/api/v1_spec.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -451,11 +451,19 @@ def expected_featured_feeds
451451
)
452452
end
453453

454-
describe 'GET /api/v1/feeds/{token}/status', openapi: {
454+
describe 'GET /api/v1/feeds/:token/status', openapi: {
455455
summary: 'Get feed status',
456456
description: 'Returns readiness and degradation metadata for a generated feed.',
457457
operation_id: 'getFeedStatus',
458458
tags: ['Feeds'],
459+
parameters: [
460+
{
461+
name: :token,
462+
in: :path,
463+
required: true,
464+
schema: { type: :string }
465+
}
466+
],
459467
security: []
460468
} do
461469
it 'documents structured feed status for ready feeds', :aggregate_failures do

spec/support/api_contract_helpers.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ def expect_error_response(response, code:, **expected)
3535
def expect_feed_payload(json)
3636
feed = json.fetch('data').fetch('feed')
3737
expect_feed_identifier_payload(feed)
38+
expect_feed_source_payload(feed)
3839
expect(feed).not_to have_key('strategy')
3940
feed
4041
end

0 commit comments

Comments
 (0)