2026-06-27 15:05:31 +08:00
|
|
|
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",
|
2026-06-27 15:12:40 +08:00
|
|
|
markTaskCompleteOnSend: false,
|
2026-06-27 15:05:31 +08:00
|
|
|
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>,
|
|
|
|
|
};
|
|
|
|
|
}
|