mirror of
https://github.com/fallenbagel/jellyseerr.git
synced 2026-01-01 04:08:45 -05:00
feat(gotify): added priority input for gotify (#1410)
* feat(gotify notification): added priority input for gotify Added priority field for gotify messages on the gotify settings page issue 562 * feat(gotify notification): added requested changes fixed json end of file new line, removed unused code, added default priority for previous configurations * feat(gotify notifcation): fixed cypress/config/settings.cypress.json fixed cypress/config/settings.cypress.json * Update cypress/config/settings.cypress.json Removed extra line from settings.cypress.json Co-authored-by: Gauthier <mail@gauthierth.fr> --------- Co-authored-by: Gauthier <mail@gauthierth.fr>
This commit is contained in:
@@ -138,7 +138,8 @@
|
||||
"types": 0,
|
||||
"options": {
|
||||
"url": "",
|
||||
"token": ""
|
||||
"token": "",
|
||||
"priority": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,12 @@ class GotifyAgent
|
||||
public shouldSend(): boolean {
|
||||
const settings = this.getSettings();
|
||||
|
||||
if (settings.enabled && settings.options.url && settings.options.token) {
|
||||
if (
|
||||
settings.enabled &&
|
||||
settings.options.url &&
|
||||
settings.options.token &&
|
||||
settings.options.priority
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -42,7 +47,8 @@ class GotifyAgent
|
||||
payload: NotificationPayload
|
||||
): GotifyPayload {
|
||||
const { applicationUrl, applicationTitle } = getSettings().main;
|
||||
let priority = 0;
|
||||
const settings = this.getSettings();
|
||||
const priority = settings.options.priority ?? 1;
|
||||
|
||||
const title = payload.event
|
||||
? `${payload.event} - ${payload.subject}`
|
||||
@@ -86,10 +92,6 @@ class GotifyAgent
|
||||
message += `\n**Issue Status:** ${
|
||||
payload.issue.status === IssueStatus.OPEN ? 'Open' : 'Resolved'
|
||||
} `;
|
||||
|
||||
if (type == Notification.ISSUE_CREATED) {
|
||||
priority = 1;
|
||||
}
|
||||
}
|
||||
|
||||
for (const extra of payload.extra ?? []) {
|
||||
|
||||
@@ -254,6 +254,7 @@ export interface NotificationAgentGotify extends NotificationAgentConfig {
|
||||
options: {
|
||||
url: string;
|
||||
token: string;
|
||||
priority: number;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -463,6 +464,7 @@ class Settings {
|
||||
options: {
|
||||
url: '',
|
||||
token: '',
|
||||
priority: 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -17,9 +17,11 @@ const messages = defineMessages(
|
||||
agentenabled: 'Enable Agent',
|
||||
url: 'Server URL',
|
||||
token: 'Application Token',
|
||||
priority: 'Priority',
|
||||
validationUrlRequired: 'You must provide a valid URL',
|
||||
validationUrlTrailingSlash: 'URL must not end in a trailing slash',
|
||||
validationTokenRequired: 'You must provide an application token',
|
||||
validationPriorityRequired: 'You must set a priority number',
|
||||
gotifysettingssaved: 'Gotify notification settings saved successfully!',
|
||||
gotifysettingsfailed: 'Gotify notification settings failed to save.',
|
||||
toastGotifyTestSending: 'Sending Gotify test notification…',
|
||||
@@ -65,6 +67,15 @@ const NotificationsGotify = () => {
|
||||
.required(intl.formatMessage(messages.validationTokenRequired)),
|
||||
otherwise: Yup.string().nullable(),
|
||||
}),
|
||||
priority: Yup.string().when('enabled', {
|
||||
is: true,
|
||||
then: Yup.string()
|
||||
.nullable()
|
||||
.min(0)
|
||||
.max(9)
|
||||
.required(intl.formatMessage(messages.validationPriorityRequired)),
|
||||
otherwise: Yup.string().nullable(),
|
||||
}),
|
||||
});
|
||||
|
||||
if (!data && !error) {
|
||||
@@ -78,6 +89,7 @@ const NotificationsGotify = () => {
|
||||
types: data?.types,
|
||||
url: data?.options.url,
|
||||
token: data?.options.token,
|
||||
priority: data?.options.priority,
|
||||
}}
|
||||
validationSchema={NotificationsGotifySchema}
|
||||
onSubmit={async (values) => {
|
||||
@@ -93,6 +105,7 @@ const NotificationsGotify = () => {
|
||||
options: {
|
||||
url: values.url,
|
||||
token: values.token,
|
||||
priority: Number(values.priority),
|
||||
},
|
||||
}),
|
||||
});
|
||||
@@ -147,6 +160,7 @@ const NotificationsGotify = () => {
|
||||
options: {
|
||||
url: values.url,
|
||||
token: values.token,
|
||||
priority: Number(values.priority),
|
||||
},
|
||||
}),
|
||||
}
|
||||
@@ -216,6 +230,30 @@ const NotificationsGotify = () => {
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label htmlFor="priority" className="text-label">
|
||||
{intl.formatMessage(messages.priority)}
|
||||
<span className="label-required">*</span>
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<Field
|
||||
id="priority"
|
||||
name="priority"
|
||||
type="text"
|
||||
inputMode="numeric"
|
||||
className="short"
|
||||
autoComplete="off"
|
||||
data-1pignore="true"
|
||||
data-lpignore="true"
|
||||
data-bwignore="true"
|
||||
/>
|
||||
{errors.priority &&
|
||||
touched.priority &&
|
||||
typeof errors.priority === 'string' && (
|
||||
<div className="error">{errors.priority}</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<NotificationTypeSelector
|
||||
currentTypes={values.enabled ? values.types : 0}
|
||||
onUpdate={(newTypes) => {
|
||||
|
||||
@@ -598,11 +598,13 @@
|
||||
"components.Settings.Notifications.NotificationsGotify.agentenabled": "Enable Agent",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingsfailed": "Gotify notification settings failed to save.",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingssaved": "Gotify notification settings saved successfully!",
|
||||
"components.Settings.Notifications.NotificationsGotify.priority": "Priority",
|
||||
"components.Settings.Notifications.NotificationsGotify.toastGotifyTestFailed": "Gotify test notification failed to send.",
|
||||
"components.Settings.Notifications.NotificationsGotify.toastGotifyTestSending": "Sending Gotify test notification…",
|
||||
"components.Settings.Notifications.NotificationsGotify.toastGotifyTestSuccess": "Gotify test notification sent!",
|
||||
"components.Settings.Notifications.NotificationsGotify.token": "Application Token",
|
||||
"components.Settings.Notifications.NotificationsGotify.url": "Server URL",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationPriorityRequired": "You must set a priority number",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationTokenRequired": "You must provide an application token",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationTypes": "You must select at least one notification type",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationUrlRequired": "You must provide a valid URL",
|
||||
|
||||
Reference in New Issue
Block a user