import app from 'flarum/admin/app'; app.initializers.add('sbp-jm-msteams-webhook', function () { app.extensionData .for('sbp-jm-msteams-webhook') .registerSetting( { setting: 'sbp-jm-msteams-webhook.enabled', label: 'Teams-Spiegelung aktivieren', help: 'Spiegelt Flarum-Web/Alert-Benachrichtigungen zusätzlich in den Microsoft Teams Activity Feed.', type: 'boolean', }, 100 ) .registerSetting( { setting: 'sbp-jm-msteams-webhook.tenant_id', label: 'Entra Tenant ID', type: 'text', placeholder: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', }, 90 ) .registerSetting( { setting: 'sbp-jm-msteams-webhook.client_id', label: 'App / Client ID', type: 'text', placeholder: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', }, 80 ) .registerSetting( { setting: 'sbp-jm-msteams-webhook.client_secret', label: 'Client Secret', type: 'password', }, 70 ) .registerSetting( { setting: 'sbp-jm-msteams-webhook.forum_base_url', label: 'Forum Base URL', help: 'Wird für Deep Links aus Teams zurück in Flarum verwendet.', type: 'text', placeholder: 'https://forum.example.tld', }, 60 ) .registerSetting( { setting: 'sbp-jm-msteams-webhook.user_lookup_strategy', label: 'Benutzer-Mapping', help: 'Wie der Zielbenutzer in Microsoft Graph aufgelöst wird.', type: 'select', options: { email: 'E-Mail des Flarum-Benutzers / UPN wenn identisch', upn: 'UPN aus User-Preference (Fallback auf E-Mail)', preference: 'Freier Preference-Key am Benutzer', }, default: 'email', }, 50 ) .registerSetting( { setting: 'sbp-jm-msteams-webhook.upn_preference_key', label: 'Preference-Key für UPN', type: 'text', placeholder: 'sbp-jm-msteams-webhook.upn', }, 40 ) .registerSetting( { setting: 'sbp-jm-msteams-webhook.user_preference_key', label: 'Preference-Key für freies Ziel', type: 'text', placeholder: 'sbp-jm-msteams-webhook.target', }, 39 ) .registerSetting( { setting: 'sbp-jm-msteams-webhook.activity_type', label: 'Teams Activity Type', help: 'Für den Schnelltest am besten systemDefault verwenden.', type: 'text', placeholder: 'systemDefault', }, 30 ) .registerSetting( { setting: 'sbp-jm-msteams-webhook.teams_app_id', label: 'Teams App ID', help: 'Optional, aber empfohlen wenn mehrere Apps dieselbe Entra App Registration verwenden.', type: 'text', }, 20 ) .registerSetting( { setting: 'sbp-jm-msteams-webhook.icon_id', label: 'Icon ID', help: 'Optionales benutzerdefiniertes Activity-Icon laut Teams App Manifest.', type: 'text', }, 15 ) .registerSetting( { setting: 'sbp-jm-msteams-webhook.timeout_seconds', label: 'HTTP Timeout (Sekunden)', type: 'number', min: 5, step: 1, placeholder: '15', }, 10 ); });