feat: push upozornění na doručení objednávky Bolt Food
CI / Generate TypeScript types (push) Successful in 12s
CI / Server unit tests (push) Successful in 22s
CI / Build server (push) Successful in 28s
CI / Build client (push) Successful in 41s
CI / Playwright E2E tests (push) Successful in 1m48s
CI / Build and push Docker image (push) Successful in 53s
CI / Notify (push) Successful in 2s
CI / Generate TypeScript types (push) Successful in 12s
CI / Server unit tests (push) Successful in 22s
CI / Build server (push) Successful in 28s
CI / Build client (push) Successful in 41s
CI / Playwright E2E tests (push) Successful in 1m48s
CI / Build and push Docker image (push) Successful in 53s
CI / Notify (push) Successful in 2s
Nové zaškrtávátko v Nastavení → Notifikace pod výběrem času připomínky. Když skupinová objednávka sledovaná přes Bolt Food přejde do stavu delivered/finished, dostanou push členové skupiny, kteří si to zapnuli. Zakladatel skupiny notifikaci nedostává — ten je informován aplikací Bolt. Push subscription byla dosud svázaná s časem připomínky (subscribe endpoint bez reminderTime vracel 400), takže by nový přepínač samostatně nefungoval. Čas připomínky je nově v registru volitelný a scheduler připomínek záznamy bez času přeskakuje. Service worker nemá natvrdo tag a akci "Mám vlastní/neobědvám" — obojí se řídí payloadem, aby je doručovací notifikace nedědila.
This commit is contained in:
1 parent
377a350211
commit
065ccaf38a
12 files changed
+440
-41
No files matched your search
@@ -5,6 +5,7 @@ import { getClientData, getToday } from "./service";
|
||||
import { getUsersByLocation, getHumanTime } from "./utils";
|
||||
import { NotifikaceData, NotifikaceInput, NotificationSettings } from '../../types';
|
||||
import getStorage from "./storage";
|
||||
import { sendPushToLogins } from "./pushReminder";
|
||||
|
||||
const ENVIRONMENT = process.env.NODE_ENV ?? 'production';
|
||||
dotenv.config({ path: path.resolve(__dirname, `../.env.${ENVIRONMENT}`) });
|
||||
@@ -223,3 +224,28 @@ export const callNotifikace = async ({ input, teams = true, gotify = false, ntfy
|
||||
console.error("Error in callNotifikace: ", error);
|
||||
}
|
||||
};
|
||||
|
||||
/** Cesta na stránku skupinových objednávek (viz OBJEDNANI_URL v klientovi). */
|
||||
const OBJEDNANI_PATH = '/objednani';
|
||||
|
||||
/**
|
||||
* Odešle push notifikaci o doručení skupinové objednávky členům skupiny,
|
||||
* kteří si to zapnuli v nastavení. Zakladatel skupiny notifikaci nedostává —
|
||||
* ten je o doručení informován přímo aplikací Bolt.
|
||||
*/
|
||||
export async function notifyBoltDelivered(groupName: string, memberLogins: string[], creatorLogin: string): Promise<void> {
|
||||
const recipients: string[] = [];
|
||||
for (const login of memberLogins) {
|
||||
if (login === creatorLogin) continue;
|
||||
const settings = await getNotificationSettings(login);
|
||||
if (settings.boltDeliveredPush) recipients.push(login);
|
||||
}
|
||||
if (recipients.length === 0) return;
|
||||
|
||||
await sendPushToLogins(recipients, {
|
||||
title: 'Luncher',
|
||||
body: `Objednávka „${groupName}" byla doručena!`,
|
||||
tag: `bolt-delivered-${groupName}`,
|
||||
url: OBJEDNANI_PATH,
|
||||
});
|
||||
}
|
||||
Reference in new issue
Block a user