diff options
Diffstat (limited to 'apps/settings/js/usersettings.js')
-rw-r--r-- | apps/settings/js/usersettings.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/apps/settings/js/usersettings.js b/apps/settings/js/usersettings.js new file mode 100644 index 00000000000..3dc402fbf2b --- /dev/null +++ b/apps/settings/js/usersettings.js @@ -0,0 +1,60 @@ +/* global OC */ + +/** + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +(function() { + 'use strict'; + + var errorNotification; + + /** + * Model for storing and saving user settings + * + * @class UserSettings + */ + var UserSettings = OC.Backbone.Model.extend({ + url: OC.generateUrl('/settings/users/{id}/settings', {id: OC.currentUser}), + isNew: function() { + return false; // Force PUT on .save() + }, + parse: function(data) { + if (_.isUndefined(data)) { + return null; + } + + if (errorNotification) { + errorNotification.hide(); + } + + if (data.status && data.status === 'error') { + errorNotification = OC.Notification.show(data.data.message, { type: 'error' }); + } + + if (_.isUndefined(data.data)) { + return null; + } + data = data.data; + + var ignored = [ + 'userId', + 'message' + ]; + + _.each(ignored, function(ign) { + if (!_.isUndefined(data[ign])) { + delete data[ign]; + } + }); + + return data; + } + }); + + OC.Settings = OC.Settings || {}; + + OC.Settings.UserSettings = UserSettings; +})(); |