DEV: Plugin api function to add saveable user fields (#10774)

This commit is contained in:
Mark VanLandingham 2020-09-29 08:44:19 -07:00 committed by GitHub
parent ecfca965f2
commit d8bf2810ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 73 additions and 54 deletions

View File

@ -61,6 +61,10 @@ import KeyboardShortcuts from "discourse/lib/keyboard-shortcuts";
import { addFeaturedLinkMetaDecorator } from "discourse/lib/render-topic-featured-link";
import { getOwner } from "discourse-common/lib/get-owner";
import { addAdvancedSearchOptions } from "discourse/components/search-advanced-options";
import {
addSaveableUserField,
addSaveableUserOptionField,
} from "discourse/models/user";
// If you add any methods to the API ensure you bump up this number
const PLUGIN_API_VERSION = "0.11.0";
@ -1207,6 +1211,13 @@ class PluginApi {
addAdvancedSearchOptions(options) {
addAdvancedSearchOptions(options);
}
addSaveableUserField(fieldName) {
addSaveableUserField(fieldName);
}
addSaveableUserOptionField(fieldName) {
addSaveableUserOptionField(fieldName);
}
}
let _pluginv01;

View File

@ -41,6 +41,68 @@ export const SECOND_FACTOR_METHODS = {
const isForever = (dt) => moment().diff(dt, "years") < -500;
let userFields = [
"bio_raw",
"website",
"location",
"name",
"title",
"locale",
"custom_fields",
"user_fields",
"muted_usernames",
"ignored_usernames",
"allowed_pm_usernames",
"profile_background_upload_url",
"card_background_upload_url",
"muted_tags",
"tracked_tags",
"watched_tags",
"watching_first_post_tags",
"date_of_birth",
"primary_group_id",
];
export function addSaveableUserField(fieldName) {
userFields.push(fieldName);
}
let userOptionFields = [
"mailing_list_mode",
"mailing_list_mode_frequency",
"external_links_in_new_tab",
"email_digests",
"email_in_reply_to",
"email_messages_level",
"email_level",
"email_previous_replies",
"color_scheme_id",
"dark_scheme_id",
"dynamic_favicon",
"enable_quoting",
"enable_defer",
"automatically_unpin_topics",
"digest_after_minutes",
"new_topic_duration_minutes",
"auto_track_topics_after_msecs",
"notification_level_when_replying",
"like_notification_frequency",
"include_tl0_in_digests",
"theme_ids",
"allow_private_messages",
"enable_allowed_pm_users",
"homepage_id",
"hide_profile_and_presence",
"text_size",
"title_count_mode",
"timezone",
"skip_new_user_tips",
];
export function addSaveableUserOptionField(fieldName) {
userOptionFields.push(fieldName);
}
const User = RestModel.extend({
hasPMs: gt("private_messages_stats.all", 0),
hasStartedPMs: gt("private_messages_stats.mine", 0),
@ -267,64 +329,10 @@ const User = RestModel.extend({
},
save(fields) {
let userFields = [
"bio_raw",
"website",
"location",
"name",
"title",
"locale",
"custom_fields",
"user_fields",
"muted_usernames",
"ignored_usernames",
"allowed_pm_usernames",
"profile_background_upload_url",
"card_background_upload_url",
"muted_tags",
"tracked_tags",
"watched_tags",
"watching_first_post_tags",
"date_of_birth",
"primary_group_id",
];
const data = this.getProperties(
userFields.filter((uf) => !fields || fields.indexOf(uf) !== -1)
);
let userOptionFields = [
"mailing_list_mode",
"mailing_list_mode_frequency",
"external_links_in_new_tab",
"email_digests",
"email_in_reply_to",
"email_messages_level",
"email_level",
"email_previous_replies",
"color_scheme_id",
"dark_scheme_id",
"dynamic_favicon",
"enable_quoting",
"enable_defer",
"automatically_unpin_topics",
"digest_after_minutes",
"new_topic_duration_minutes",
"auto_track_topics_after_msecs",
"notification_level_when_replying",
"like_notification_frequency",
"include_tl0_in_digests",
"theme_ids",
"allow_private_messages",
"enable_allowed_pm_users",
"homepage_id",
"hide_profile_and_presence",
"text_size",
"title_count_mode",
"timezone",
"skip_new_user_tips",
];
if (fields) {
userOptionFields = userOptionFields.filter(
(uo) => fields.indexOf(uo) !== -1