moderator-toolbox-nxg-for-reddit / modules/shared/usernotes/requireRules

modules/shared/usernotes/requireRules

Functions

resolveUsernoteRequirements()

resolveUsernoteRequirements(subRequirements, personal): UsernoteRequireFlags

Defined in: extension/data/modules/shared/usernotes/requireRules.ts:67

Combines a subreddit’s requirement flags with a moderator’s personal flags into the effective requirements, applying the “more restrictive wins” rule.

Parameters

subRequirements

SubUsernoteRequire

The subreddit’s requirement flags and enforcement mode.

personal

UsernoteRequireFlags

The acting moderator’s personal requirement flags.

Returns

UsernoteRequireFlags

The effective per-field requirements to enforce when saving a note.


subUsernoteRequireFromConfig()

subUsernoteRequireFromConfig(config): SubUsernoteRequire

Defined in: extension/data/modules/shared/usernotes/requireRules.ts:51

Builds a SubUsernoteRequire from a (possibly absent or partial) config, applying the per-field defaults: type/link default off (absent/garbage -> false) and text defaults on (only an explicit false disables it). This is the single source of truth for reading the four require fields off a config object.

Parameters

config

RequireConfig | undefined

The subreddit’s toolbox config, or undefined if unavailable.

Returns

SubUsernoteRequire

The subreddit’s requirement flags and enforcement mode.


unmetUsernoteRequirement()

unmetUsernoteRequirement(require, draft): string | null

Defined in: extension/data/modules/shared/usernotes/requireRules.ts:105

Checks a draft note against the effective requirements, returning a user-facing message for the first unmet requirement, or null when every requirement is satisfied. Both the Save-button disabled state and the save handler share this so they can never disagree.

Parameters

require

UsernoteRequireFlags

The effective per-field requirements to enforce.

draft

UsernoteDraftState

The draft note’s current contents.

Returns

string | null

The message for the first unmet requirement, or null if all met.

Interfaces

SubUsernoteRequire

Defined in: extension/data/modules/shared/usernotes/requireRules.ts:27

A subreddit’s requirement flags plus the enforcement mode that gates them.

Extends

Properties

mode

mode: string | undefined

Defined in: extension/data/modules/shared/usernotes/requireRules.ts:34

The subreddit’s usernoteRequirementOption: 'suggest'/'force' make the flags a floor; anything else (including undefined/'leave') defers to the moderator’s personal settings. The token set matches removal reasons’ removalOption.

text

text: boolean

Defined in: extension/data/modules/shared/usernotes/requireRules.ts:21

Whether note body text is required.

Inherited from

UsernoteRequireFlags.text

type

type: boolean

Defined in: extension/data/modules/shared/usernotes/requireRules.ts:19

Whether a note type/tag is required.

Inherited from

UsernoteRequireFlags.type


UsernoteDraftState

Defined in: extension/data/modules/shared/usernotes/requireRules.ts:82

A draft note’s current contents, used to check it against the requirements.

Properties

hasText

hasText: boolean

Defined in: extension/data/modules/shared/usernotes/requireRules.ts:84

Whether the note body currently has non-whitespace text.

hasType

hasType: boolean

Defined in: extension/data/modules/shared/usernotes/requireRules.ts:86

Whether a note type/tag is currently selected.

linkEnforceable

linkEnforceable: boolean

Defined in: extension/data/modules/shared/usernotes/requireRules.ts:93

Whether a link requirement is even enforceable in this context - false in edit mode or when no linkable item exists, where the user cannot attach one.


UsernoteRequireFlags

Defined in: extension/data/modules/shared/usernotes/requireRules.ts:17

A set of per-field “is this required” booleans for type, text, and link.

Extended by

Properties

link

link: boolean

Defined in: extension/data/modules/shared/usernotes/requireRules.ts:23

Whether a link to the content is required.

text

text: boolean

Defined in: extension/data/modules/shared/usernotes/requireRules.ts:21

Whether note body text is required.

type

type: boolean

Defined in: extension/data/modules/shared/usernotes/requireRules.ts:19

Whether a note type/tag is required.