From 4d95bb89ee330fd9eeba3daf22e9c50103b95a6a Mon Sep 17 00:00:00 2001 From: Neil Date: Thu, 11 May 2023 18:56:07 +0800 Subject: [PATCH] #589 unsubscribe if package is not installed but receives push (#594) Co-authored-by: neil molina --- modules/desktop/electron/libs/package.ts | 7 ++++++- modules/desktop/electron/libs/push-notification.ts | 9 ++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/modules/desktop/electron/libs/package.ts b/modules/desktop/electron/libs/package.ts index 23e924c..5a43153 100644 --- a/modules/desktop/electron/libs/package.ts +++ b/modules/desktop/electron/libs/package.ts @@ -3,7 +3,7 @@ import { mkdirp } from "mkdirp"; import fs from "fs"; import log from "./logger"; import { getTeaPath } from "./tea-dir"; -import { GUIPackage, Packages } from "../../src/libs/types"; +import { Packages } from "../../src/libs/types"; const pkgsFilePath = path.join(getTeaPath(), "tea.xyz/gui/pkgs.json"); const pkgsFolder = path.join(getTeaPath(), "tea.xyz/gui"); @@ -52,3 +52,8 @@ export const nameToSlug = (name: string) => { const slug = nameOnly.replace(/[^\w\s]/gi, "_").toLocaleLowerCase(); return slug; }; + +export function isInstalled(fullName: string) { + const folderPath = path.join(getTeaPath(), fullName); + return fs.existsSync(folderPath); +} diff --git a/modules/desktop/electron/libs/push-notification.ts b/modules/desktop/electron/libs/push-notification.ts index 7114f8b..7a16bd2 100644 --- a/modules/desktop/electron/libs/push-notification.ts +++ b/modules/desktop/electron/libs/push-notification.ts @@ -3,7 +3,7 @@ import { readSessionData } from "./auth"; import { post } from "./v1-client"; import log from "./logger"; import { Notification, BrowserWindow } from "electron"; -import { nameToSlug } from "./package"; +import { isInstalled, nameToSlug } from "./package"; import { getInstalledPackages, getPackagesInstalledList, @@ -42,9 +42,10 @@ export default function initialize(mainWindow: BrowserWindow) { Pushy.setNotificationListener(async (data: any) => { try { log.info("new notification received", data); - + const pkg = data?.url.replace("tea://packages/", ""); + const installed = isInstalled(pkg); const isDup = await wasReceivedBefore(data); - if (!isDup) { + if (!isDup && installed) { new Notification({ title: "tea", body: data?.message as string @@ -56,6 +57,8 @@ export default function initialize(mainWindow: BrowserWindow) { } else { app.dock.setBadge((parseInt(v) + 1).toString()); } + } else if (!installed) { + unsubscribeToPackageTopic(pkg); } else { log.info("notification was already received before", data); }