"use strict" ;
define ( [
'app' ,
'Settings/Notifications/Model' ,
'Settings/Notifications/DeleteView'
] , function ( ) {
NzbDrone . Settings . Notifications . EditView = Backbone . Marionette . ItemView . extend ( {
template : 'Settings/Notifications/EditTemplate' ,
events : {
'click .x-save' : '_saveNotification' ,
'click .x-remove' : '_deleteNotification' ,
'click .x-test' : '_test'
} ,
ui : {
testButton : '.x-test' ,
testIcon : '.x-test-icon'
} ,
initialize : function ( options ) {
this . notificationCollection = options . notificationCollection ;
} ,
_saveNotification : function ( ) {
var name = this . model . get ( 'name' ) ;
var success = 'Notification Saved: ' + name ;
var fail = 'Failed to save notification: ' + name ;
this . model . save ( undefined , NzbDrone . Settings . SyncNotificaiton . callback ( {
successMessage : success ,
errorMessage : fail ,
successCallback : this . _saveSuccess ,
context : this
} ) ) ;
} ,
_deleteNotification : function ( ) {
var view = new NzbDrone . Settings . Notifications . DeleteView ( { model : this . model } ) ;
NzbDrone . modalRegion . show ( view ) ;
} ,
_saveSuccess : function ( ) {
this . notificationCollection . add ( this . model , { merge : true } ) ;
NzbDrone . modalRegion . closeModal ( ) ;
} ,
_test : function ( ) {
var testCommand = this . model . get ( 'testCommand' ) ;
if ( testCommand ) {
this . idle = false ;
this . ui . testButton . addClass ( 'disabled' ) ;
this . ui . testIcon . addClass ( 'icon-spinner icon-spin' ) ;
var properties = { } ;
_ . each ( this . model . get ( 'fields' ) , function ( field ) {
properties [ field . name ] = field . value ;
} ) ;
var self = this ;
var commandPromise = NzbDrone . Commands . Execute ( testCommand , properties ) ;
commandPromise . done ( function ( ) {
NzbDrone . Shared . Messenger . show ( {
message : 'Notification settings tested successfully'
} ) ;
} ) ;
commandPromise . fail ( function ( options ) {
if ( options . readyState === 0 || options . status === 0 ) {
return ;
}
NzbDrone . Shared . Messenger . show ( {
message : 'Failed to test notification settings' ,
type : 'error'
} ) ;
} ) ;
commandPromise . always ( function ( ) {
if ( ! self . isClosed ) {
self . ui . testButton . removeClass ( 'disabled' ) ;
self . ui . testIcon . removeClass ( 'icon-spinner icon-spin' ) ;
self . idle = true ;
}
} ) ;
}
}
} ) ;
} ) ;