Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 3 additions & 1 deletion packages/installer/src/calls/packageInstall.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ import {
writeAndValidateFiles,
postInstallClean,
afterInstall,
checkInstallRequirements
checkInstallRequirements,
sendPackageInstalledResolvedNotification
} from "../installer/index.js";
import { logs, getLogUi, logUiClear } from "@dappnode/logger";
import { Routes } from "@dappnode/types";
Expand Down Expand Up @@ -102,6 +103,7 @@ export async function packageInstall(
await postInstallClean(packagesData, log);
afterInstall(dnpNames);
await sendCoreInstalledResolvedNotification(packagesData);
await sendPackageInstalledResolvedNotification(packagesData);
logUiClear({ id });
} catch (e) {
afterInstall(dnpNames);
Expand Down
1 change: 1 addition & 0 deletions packages/installer/src/installer/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ export * from "./runPackages.js";
export * from "./restartPatch.js";
export * from "./writeAndValidateFiles.js";
export * from "./checkInstallRequirements.js";
export * from "./sendPackageInstallResolvedNotification.js";
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { Category, InstallPackageData, Priority, Status } from "@dappnode/types";
import { logs } from "@dappnode/logger";
import { notifications } from "@dappnode/notifications";
import { prettyDnpName } from "@dappnode/utils";
import { params } from "@dappnode/params";

/**
* Send resolved notification for regular packages once installed/updated
* This dismisses the "update available" notification by sending a resolved status
* @param packagesData
*/
export async function sendPackageInstalledResolvedNotification(packagesData: InstallPackageData[]): Promise<void> {
// Filter out core packages as they are handled separately
const regularPackages = packagesData.filter((p) => !params.corePackagesNotAutoupdatable.includes(p.dnpName));

for (const pkg of regularPackages) {
const title = `${prettyDnpName(pkg.dnpName)} installed successfully`;
const body = `${prettyDnpName(pkg.dnpName)} version ${pkg.semVersion} has been installed successfully`;

await notifications
.sendNotification({
title: title,
dnpName: pkg.dnpName,
body: body,
category: Category.system,
priority: Priority.low,
status: Status.resolved,
isBanner: false,
isRemote: false,
correlationId: "dappmanager-update-pkg"
})
.catch((e) => logs.error(`Error sending resolved notification for ${pkg.dnpName}`, e));
}
}