MED-198: send notification if new responses

MED-198: send notification if new responses
This commit is contained in:
danelkungla
2025-10-10 15:33:24 +03:00
committed by GitHub
4 changed files with 51 additions and 22 deletions

View File

@@ -1,10 +1,14 @@
import { SupabaseClient } from '@supabase/supabase-js';
import { createNotificationsApi } from '@kit/notifications/api';
import { pathsConfig } from '@kit/shared/config';
import { getLogger } from '@kit/shared/logger';
import type { UuringuVastus } from '@kit/shared/types/medipost-analysis';
import { toArray } from '@kit/shared/utils';
import { Database } from '@kit/supabase/database';
import { createI18nServerInstance } from '~/lib/i18n/i18n.server';
import type {
AnalysisOrder,
AnalysisOrderStatus,
@@ -488,6 +492,39 @@ class UserAnalysesApi {
})
.throwOnError();
}
async sendAnalysisResultsNotification({
hasFullAnalysisResponse,
hasPartialAnalysisResponse,
analysisOrderId,
}: {
hasFullAnalysisResponse: boolean;
hasPartialAnalysisResponse: boolean;
analysisOrderId?: number;
}) {
if (!analysisOrderId) {
return;
}
const { data, error: userError } = await this.client.auth.getUser();
if (userError) {
throw userError;
}
const { user } = data;
const notificationsApi = createNotificationsApi(this.client);
const { t } = await createI18nServerInstance();
console.info(
`Order ${analysisOrderId} got new responses -> Sending new notification`,
);
if (hasFullAnalysisResponse || hasPartialAnalysisResponse) {
await notificationsApi.createNotification({
account_id: user.id,
body: t('analysis-results:notification.body'),
link: `${pathsConfig.app.analysisResults}/${analysisOrderId}`,
});
}
}
}
export function createUserAnalysesApi(client: SupabaseClient<Database>) {

View File

@@ -1,10 +1,7 @@
{
"extends": "@kit/tsconfig/base.json",
"extends": "../../../tsconfig.json",
"compilerOptions": {
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json",
"paths": {
"~/lib/utils": ["../../../lib/utils.ts"]
}
"tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
},
"include": ["*.ts", "*.tsx", "src"],
"exclude": ["node_modules"]