Skip to content
This repository was archived by the owner on Dec 27, 2024. It is now read-only.

Commit 1a7b0eb

Browse files
authored
feat: migrate AnnouncementsApi (#215)
Signed-off-by: Kurt King <[email protected]>
1 parent d29a587 commit 1a7b0eb

File tree

9 files changed

+503
-279
lines changed

9 files changed

+503
-279
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = require('@backstage/cli/config/eslint-factory')(__dirname);
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# @procore-oss/plugin-announcements-react
2+
3+
Welcome to the web library package for the announcements plugin!
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
{
2+
"name": "@procore-oss/plugin-announcements-react",
3+
"description": "Web library for the announcements plugin",
4+
"version": "0.1.0",
5+
"main": "src/index.ts",
6+
"types": "src/index.ts",
7+
"license": "MIT",
8+
"publishConfig": {
9+
"access": "public",
10+
"main": "dist/index.esm.js",
11+
"types": "dist/index.d.ts"
12+
},
13+
"backstage": {
14+
"role": "web-library"
15+
},
16+
"sideEffects": false,
17+
"scripts": {
18+
"start": "backstage-cli package start",
19+
"build": "backstage-cli package build",
20+
"lint": "backstage-cli package lint",
21+
"test": "backstage-cli package test",
22+
"clean": "backstage-cli package clean",
23+
"prepack": "backstage-cli package prepack",
24+
"postpack": "backstage-cli package postpack"
25+
},
26+
"dependencies": {
27+
"@backstage/core-app-api": "^1.11.3",
28+
"@backstage/core-plugin-api": "^1.8.2",
29+
"@backstage/errors": "^1.2.3",
30+
"@material-ui/core": "^4.12.2",
31+
"luxon": "^3.4.4"
32+
},
33+
"peerDependencies": {
34+
"react": "^16.13.1 || ^17.0.0 || ^18.0.0"
35+
},
36+
"devDependencies": {
37+
"@backstage/cli": "^0.25.1",
38+
"@testing-library/jest-dom": "^5.10.1",
39+
"@testing-library/react": "^12.1.3"
40+
},
41+
"files": [
42+
"dist"
43+
]
44+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { DateTime } from 'luxon';
2+
import { createApiRef } from '@backstage/core-plugin-api';
3+
import {
4+
AnnouncementsList,
5+
Announcement,
6+
CreateAnnouncementRequest,
7+
Category,
8+
CreateCategoryRequest,
9+
} from './types';
10+
11+
export const announcementsApiRef = createApiRef<AnnouncementsApi>({
12+
id: 'plugin.announcements.service',
13+
});
14+
15+
export interface AnnouncementsApi {
16+
announcements(opts: {
17+
max?: number;
18+
page?: number;
19+
category?: string;
20+
}): Promise<AnnouncementsList>;
21+
announcementByID(id: string): Promise<Announcement>;
22+
23+
createAnnouncement(request: CreateAnnouncementRequest): Promise<Announcement>;
24+
updateAnnouncement(
25+
id: string,
26+
request: CreateAnnouncementRequest,
27+
): Promise<Announcement>;
28+
deleteAnnouncementByID(id: string): Promise<void>;
29+
30+
categories(): Promise<Category[]>;
31+
createCategory(request: CreateCategoryRequest): Promise<void>;
32+
33+
lastSeenDate(): DateTime;
34+
markLastSeenDate(date: DateTime): void;
35+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { announcementsApiRef, type AnnouncementsApi } from './AnnouncementsApi';
2+
export type { CreateAnnouncementRequest, CreateCategoryRequest } from './types';
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
export type Category = {
2+
slug: string;
3+
title: string;
4+
};
5+
6+
export type Announcement = {
7+
id: string;
8+
category?: Category;
9+
publisher: string;
10+
title: string;
11+
excerpt: string;
12+
body: string;
13+
created_at: string;
14+
};
15+
16+
export type AnnouncementsList = {
17+
count: number;
18+
results: Announcement[];
19+
};
20+
21+
export type CreateAnnouncementRequest = Omit<
22+
Announcement,
23+
'id' | 'category' | 'created_at'
24+
> & {
25+
category?: string;
26+
};
27+
28+
export type CreateCategoryRequest = {
29+
title: string;
30+
};
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/***/
2+
/**
3+
* Web library for the announcements plugin.
4+
*
5+
* @packageDocumentation
6+
*/
7+
8+
// In this package you might for example export components or hooks
9+
// that are useful to other plugins or modules.
10+
11+
export * from './apis';
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import '@testing-library/jest-dom';

0 commit comments

Comments
 (0)