Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .changeset/cold-showers-camp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'@o2s/blocks.notification-summary': minor
'@o2s/integrations.mocked': minor
'@o2s/api-harmonization': minor
'@o2s/framework': minor
'@o2s/frontend': minor
---

add NotificationSummary block
1 change: 1 addition & 0 deletions apps/api-harmonization/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
"@o2s/blocks.invoice-list": "*",
"@o2s/blocks.notification-details": "*",
"@o2s/blocks.notification-list": "*",
"@o2s/blocks.notification-summary": "*",
"@o2s/blocks.order-details": "*",
"@o2s/blocks.order-list": "*",
"@o2s/blocks.orders-summary": "*",
Expand Down
2 changes: 2 additions & 0 deletions apps/api-harmonization/src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import * as FeaturedServiceList from '@o2s/blocks.featured-service-list/api-harm
import * as InvoiceList from '@o2s/blocks.invoice-list/api-harmonization';
import * as NotificationDetails from '@o2s/blocks.notification-details/api-harmonization';
import * as NotificationList from '@o2s/blocks.notification-list/api-harmonization';
import * as NotificationSummary from '@o2s/blocks.notification-summary/api-harmonization';
import * as OrderDetails from '@o2s/blocks.order-details/api-harmonization';
import * as OrderList from '@o2s/blocks.order-list/api-harmonization';
import * as OrdersSummary from '@o2s/blocks.orders-summary/api-harmonization';
Expand Down Expand Up @@ -133,6 +134,7 @@ export const AuthModuleBaseModule = AuthModule.Module.register(AppConfig);
ArticleSearch.Module.register(AppConfig),
FeaturedServiceList.Module.register(AppConfig),
ArticleList.Module.register(AppConfig),
NotificationSummary.Module.register(AppConfig),
// BLOCK REGISTER
],
providers: [
Expand Down
2 changes: 2 additions & 0 deletions apps/api-harmonization/src/modules/page/page.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import * as FeaturedServiceList from '@o2s/blocks.featured-service-list/api-harm
import * as BlockInvoiceList from '@o2s/blocks.invoice-list/api-harmonization';
import * as NotificationDetails from '@o2s/blocks.notification-details/api-harmonization';
import * as NotificationList from '@o2s/blocks.notification-list/api-harmonization';
import * as NotificationSummary from '@o2s/blocks.notification-summary/api-harmonization';
import * as OrderDetails from '@o2s/blocks.order-details/api-harmonization';
import * as OrderList from '@o2s/blocks.order-list/api-harmonization';
import * as OrdersSummary from '@o2s/blocks.orders-summary/api-harmonization';
Expand Down Expand Up @@ -73,6 +74,7 @@ export class PageData {

export type Blocks =
// BLOCK REGISTER
| NotificationSummary.Model.NotificationSummaryBlock['__typename']
| ArticleList.Model.ArticleListBlock['__typename']
| Category.Model.CategoryBlock['__typename']
| Article.Model.ArticleBlock['__typename']
Expand Down
3 changes: 2 additions & 1 deletion apps/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@
"@o2s/blocks.article-search": "*",
"@o2s/blocks.category": "*",
"@o2s/blocks.notification-details": "*",
"@o2s/blocks.surveyjs-form": "*"
"@o2s/blocks.surveyjs-form": "*",
"@o2s/blocks.notification-summary": "*"
},
"devDependencies": {
"@next/bundle-analyzer": "^15.5.6",
Expand Down
3 changes: 3 additions & 0 deletions apps/frontend/src/blocks/renderBlocks.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import * as FeaturedServiceList from '@o2s/blocks.featured-service-list/frontend
import * as InvoiceList from '@o2s/blocks.invoice-list/frontend';
import * as NotificationDetails from '@o2s/blocks.notification-details/frontend';
import * as NotificationList from '@o2s/blocks.notification-list/frontend';
import * as NotificationSummary from '@o2s/blocks.notification-summary/frontend';
import * as OrderDetails from '@o2s/blocks.order-details/frontend';
import * as OrderList from '@o2s/blocks.order-list/frontend';
import * as OrdersSummary from '@o2s/blocks.orders-summary/frontend';
Expand Down Expand Up @@ -129,6 +130,8 @@ const renderBlock = (typename: string, blockProps: BlockProps) => {
return <ArticleSearch.Renderer {...blockProps} />;
case 'FeaturedServiceListBlock':
return <FeaturedServiceList.Renderer {...blockProps} />;
case 'NotificationSummaryBlock':
return <NotificationSummary.Renderer {...blockProps} />;
// BLOCK REGISTER
default:
return null;
Expand Down
83 changes: 83 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

57 changes: 57 additions & 0 deletions packages/blocks/notification-summary/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# compiled output
/dist
/node_modules
/build

# Logs
logs
*.log
npm-debug.log*
pnpm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# OS
.DS_Store

# Tests
/coverage
/.nyc_output

# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace

# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local

# temp directory
.temp
.tmp

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

/tsconfig.tsbuildinfo
25 changes: 25 additions & 0 deletions packages/blocks/notification-summary/.prettierrc.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import apiConfig from "@o2s/prettier-config/api.mjs";
import frontendConfig from "@o2s/prettier-config/frontend.mjs";

/**
* @see https://prettier.io/docs/en/configuration.html
* @type {import("prettier").Config}
*/
const config = {
overrides: [
{
files: "./src/api-harmonization/**/*",
options: apiConfig,
},
{
files: "./src/frontend/**/*",
options: frontendConfig,
},
{
files: "./src/sdk/**/*",
options: frontendConfig,
},
],
};

export default config;
18 changes: 18 additions & 0 deletions packages/blocks/notification-summary/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { config as apiConfig } from '@o2s/eslint-config/api';
import { config as frontendConfig } from '@o2s/eslint-config/frontend-block';
import { defineConfig } from 'eslint/config';

export default defineConfig([
{
files: ['src/api-harmonization/**/*'],
extends: [apiConfig],
},
{
files: ['src/frontend/**/*'],
extends: [frontendConfig],
},
{
files: ['src/sdk/**/*'],
extends: [frontendConfig],
},
]);
4 changes: 4 additions & 0 deletions packages/blocks/notification-summary/lint-staged.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export default {
'*.{js,jsx,ts,tsx,css,scss}': ['prettier --write'],
'*.{js,jsx,ts,tsx}': () => 'tsc --noEmit',
};
55 changes: 55 additions & 0 deletions packages/blocks/notification-summary/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{
"name": "@o2s/blocks.notification-summary",
"version": "0.0.1",
"private": false,
"license": "MIT",
"description": "Displays a dynamic NotificationSummary showing notification counts grouped by priority.",
"exports": {
"./api-harmonization": "./dist/api-harmonization/api-harmonization/index.js",
"./frontend": "./dist/frontend/frontend/index.js",
"./sdk": "./dist/sdk/sdk/index.js",
"./client": "./dist/api-harmonization/api-harmonization/notification-summary.client.js"
},
"files": [
"dist"
],
"scripts": {
"dev": "tsc --build tsconfig.json && (concurrently \"tsc --build tsconfig.json -w\" \"tsc-alias -w\")",
"build": "tsc --build tsconfig.json && tsc-alias",
"lint": "tsc --noEmit && eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,css,scss,json}\""
},
"dependencies": {
"@o2s/framework": "*",
"@o2s/utils.logger": "*",
"@o2s/ui": "*",
"@o2s/utils.api-harmonization": "*",
"@o2s/utils.frontend": "*",
"@o2s/configs.integrations": "*"
},
"devDependencies": {
"dotenv-cli": "^8.0.0",
"@o2s/eslint-config": "*",
"@o2s/prettier-config": "*",
"@o2s/typescript-config": "*",
"concurrently": "^9.1.2",
"eslint": "^9.27.0",
"prettier": "^3.5.3",
"tsc-alias": "^1.8.16",
"typescript": "^5.8.3"
},
"peerDependencies": {
"@types/react": "^19",
"@types/react-dom": "^19",
"react": "^19",
"react-dom": "^19",
"tailwindcss": "^4",
"@nestjs/axios": "^4",
"@nestjs/common": "^11",
"@nestjs/config": "^4.0.2",
"@nestjs/core": "^11",
"rxjs": "^7",
"next": "^15.3.2",
"next-intl": "^4.1.0"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export const URL = '/blocks/notification-summary';

export { NotificationSummaryBlockModule as Module } from './notification-summary.module';
export { NotificationSummaryService as Service } from './notification-summary.service';
export { NotificationSummaryController as Controller } from './notification-summary.controller';

export * as Model from './notification-summary.model';
export * as Request from './notification-summary.request';
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export const URL = '/blocks/notification-summary';

export * as Model from './notification-summary.model';
export * as Request from './notification-summary.request';
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { Controller, Get, Headers, Query, UseInterceptors } from '@nestjs/common';

import { Models } from '@o2s/utils.api-harmonization';
import { LoggerService } from '@o2s/utils.logger';

import { Auth } from '@o2s/framework/modules';

import { URL } from './';
import { GetNotificationSummaryBlockQuery } from './notification-summary.request';
import { NotificationSummaryService } from './notification-summary.service';

@Controller(URL)
@UseInterceptors(LoggerService)
export class NotificationSummaryController {
constructor(protected readonly service: NotificationSummaryService) {}

@Get()
@Auth.Decorators.Roles({ roles: [] })
getNotificationSummaryBlock(
@Headers() headers: Models.Headers.AppHeaders,
@Query() query: GetNotificationSummaryBlockQuery,
) {
return this.service.getNotificationSummaryBlock(query, headers);
}
}
Loading