Files
obsidian-notif/src/settings/templates.ts
T
2026-06-27 15:12:40 +08:00

94 lines
2.2 KiB
TypeScript

import { NotificationProviderConfig, PluginSettings } from "../types";
export const PROVIDER_TEMPLATES: NotificationProviderConfig[] = [
{
id: "local",
type: "local",
name: "Local notice",
enabled: true,
config: {},
},
{
id: "telegram",
type: "telegram",
name: "Telegram Bot",
enabled: false,
config: {
botToken: "123456:ABCDEF_your_bot_token",
chatId: "123456789",
parseMode: "Markdown",
},
},
{
id: "ntfy",
type: "ntfy",
name: "ntfy.sh",
enabled: false,
config: {
serverUrl: "https://ntfy.sh",
topic: "my-obsidian-reminders",
token: "",
priority: 3,
tags: ["calendar", "obsidian"],
},
},
{
id: "discord",
type: "discord",
name: "Discord Webhook",
enabled: false,
config: {
webhookUrl: "https://discord.com/api/webhooks/...",
username: "Obsidian Reminder",
},
},
{
id: "webhook",
type: "webhook",
name: "Generic Webhook",
enabled: false,
config: {
method: "POST",
url: "https://example.com/reminder",
headers: {
"Content-Type": "application/json",
},
bodyTemplate: {
title: "{{title}}",
message: "{{message}}",
dueAt: "{{dueAt}}",
sourceFile: "{{sourceFile}}",
},
},
},
];
export const DEFAULT_SETTINGS: PluginSettings = {
defaultChannels: [],
scanVaultOnStartup: true,
scanOnFileChange: true,
checkIntervalSeconds: 60,
afterSend: "mark-sent",
markTaskCompleteOnSend: false,
reminderSyntax: "@remind(YYYY-MM-DD HH:mm, provider)",
notificationProviders: [PROVIDER_TEMPLATES[0]],
};
export function createDefaultSettings(): PluginSettings {
return JSON.parse(JSON.stringify(DEFAULT_SETTINGS)) as PluginSettings;
}
export function cloneTemplate(type: string): NotificationProviderConfig | null {
const template = PROVIDER_TEMPLATES.find((item) => item.type === type);
if (!template) {
return null;
}
const suffix = Date.now().toString(36);
return {
...template,
id: `${template.type}-${suffix}`,
config: JSON.parse(JSON.stringify(template.config)) as Record<string, unknown>,
};
}