diff --git a/.eslintrc.json b/.eslintrc.json index f92aa27b1..eec982dac 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -36,7 +36,6 @@ "yoda": [1], "no-path-concat": [2], "no-process-exit": [2], - "camelcase": [1], "eol-last": [1], "no-continue": [1], "no-nested-ternary": [1], diff --git a/models/SETTINGS_ROADMAP.md b/models/SETTINGS_ROADMAP.md new file mode 100644 index 000000000..b49a0f8a9 --- /dev/null +++ b/models/SETTINGS_ROADMAP.md @@ -0,0 +1,30 @@ +These are some settings we're planning on implementing in the future. +I'm keeping them in this file for reference + +```javascript +anonymous_users: {type: Boolean, default: false}, +block_mute_enabled: {type: Boolean, default: false}, +comment_count: {type: Boolean, default: false}, +comment_editing_enabled: {type: Boolean, default: false}, +comments_hidden: {type: Boolean, default: false}, +community_guidelines: {type: Boolean, default: false}, +detailed_flags: {type: Boolean, default: false}, +emojis_enabled: {type: Boolean, default: false}, +following: {type: Boolean, default: false}, +likes_enabled: {type: Boolean, default: false}, +mentions: {type: Boolean, default: false}, +nested_replies: {type: Boolean, default: false}, +notification_timeout: {type: Number, default: 4500}, +permalinks: {type: Boolean, default: false}, +post_button_text: {type: String, default: 'Post'}, +pseudonyms: {type: Boolean, default: false}, +public_profile: {type: Boolean, default: false}, +reactions_enabled: {type: Boolean, default: false}, +reply_button_text: {type: String, default: 'Reply'}, +rich_content: {type: Boolean, default: false}, +show_staff_picks: {type: Boolean, default: false}, +up_down_voting: {type: Boolean, default: false}, +user_badges: {type: Boolean, default: false}, +user_mods_enabled: {type: Boolean, default: false}, +user_stats_enabled: {type: Boolean, default: false} +``` diff --git a/models/setting.js b/models/setting.js index 2b0013868..aec51c810 100644 --- a/models/setting.js +++ b/models/setting.js @@ -3,32 +3,17 @@ const uuid = require('uuid'); const Schema = mongoose.Schema; const SettingSchema = new Schema({ - anonymous_users: {type: Boolean, default: false}, - block_mute_enabled: {type: Boolean, default: false}, - comment_count: {type: Boolean, default: false}, - comment_editing_enabled: {type: Boolean, default: false}, - comments_hidden: {type: Boolean, default: false}, - community_guidelines: {type: Boolean, default: false}, - detailed_flags: {type: Boolean, default: false}, - emojis_enabled: {type: Boolean, default: false}, - following: {type: Boolean, default: false}, - likes_enabled: {type: Boolean, default: false}, - mentions: {type: Boolean, default: false}, - nested_replies: {type: Boolean, default: false}, - notification_timeout: {type: Number, default: 4500}, - permalinks: {type: Boolean, default: false}, - post_button_text: {type: String, default: 'Post'}, - pseudonyms: {type: Boolean, default: false}, - public_profile: {type: Boolean, default: false}, - reactions_enabled: {type: Boolean, default: false}, - reply_button_text: {type: String, default: 'Reply'}, - rich_content: {type: Boolean, default: false}, - show_staff_picks: {type: Boolean, default: false}, - up_down_voting: {type: Boolean, default: false}, - user_badges: {type: Boolean, default: false}, - user_mods_enabled: {type: Boolean, default: false}, - user_stats_enabled: {type: Boolean, default: false} -}); + moderation: {type: String, enum: ['pre', 'post'], default: 'pre'}, + +}, {timestamps: {createdAt: 'created_at', updatedAt: 'updated_at'}}); + +SettingSchema.statics.getSettings = function () { + return this.findOne(); +}; + +SettingSchema.statics.updateSettings = function (setting) { + return this.findOneAndUpdate({}, {$set: setting}, {new: true}); +}; const Setting = mongoose.model('Setting', SettingSchema); diff --git a/routes/api/settings/index.js b/routes/api/settings/index.js new file mode 100644 index 000000000..b801fb8ea --- /dev/null +++ b/routes/api/settings/index.js @@ -0,0 +1,22 @@ +const express = require('express'); +const router = express.Router(); +const path = require('path'); +const Setting = require(path.resolve(__dirname, 'models/setting')); + +router.get('/settings', (req, res, next) => { + Setting.getSettings().then(settings => { + res.json(settings); + }).catch(error => { + next(error); + }); +}); + +router.put('/settings', (req, res, next) => { + Setting.updateSettings(req.body).then(updatedSettings => { + res.json(updatedSettings); + }).catch(error => { + next(error); + }); +}); + +module.exports = router;