
Security News
Scaling Socket from Zero to 10,000+ Organizations
Socket CEO Feross Aboukhadijeh shares lessons from scaling a developer security startup to 10,000+ organizations in this founder interview.
fansunited-widget-discussions
Advanced tools
Welcome to Fans United Discussions Management Widget. The widget allows staff members with sufficient permissions to manage posts, users and moderation in discussions. You can use this widget as it is and embed it in your platform, or you can use the Mana
Welcome to Fans United Discussions Management Widget. The widget allows staff members with sufficient permissions to manage posts, users and moderation in discussions. You can use this widget as it is and embed it in your platform, or you can use the Management Panel to manage Discussions. Discussions are comment sections where users can create, update, delete posts (comments), can react to posts, report them and etc. With successful installation, you can manage the posts, users and moderation in Discussions.
The easiest way to use fansunited-widget-discussions-management is to install it from npm as follows:
npm install fansunited-widget-discussions
or:
yarn add fansunited-widget-discussions
Here is an example how you can integrate Fans United Discussions Management Widget:
import 'fansunited-widget-discussions/style.css';
import { DiscussionsManager } from 'fansunited-widget-discussions';
const App = () => {
return (
<DiscussionsManager
fansUnitedApiKey={'your-api-key'}
fansUnitedClientId={'your-client-id'} />
);
}
The widget is bundled as a React component and its usage is as simple as the above example
Don't worry about your project's CSS. The widget's styling is done with Joy UI which is based on headless unstyle react components. This means that the widget's CSS will NOT affect yours. One important thing is that you need to import style.css file from package folder:
import 'fansunited-widget-discussions/style.css';
N.B: If you are using an entry point for importing all your stylings, you need to import fansunited-widget-discussions/style.css there as well
type DiscussionsManagerProps = {
fansUnitedApiKey: string;
fansUnitedClientId: string;
fansUnitedLanguage?: string;
fansUnitedEnvironment?: string;
labels?: LabelsModel;
hideSignOutButton?: boolean;
};
Fans United Discussions Management Widget depends on Fans United JS SDK and Fans United Client API. Thats why fansUnitedApiKey and fansUnitedClientId are required. They will be provided to you from Fans United team. For other optional props here is some information:
fansUnitedLanguage - for our sports APIs FansUnited platform supports different languages. For now they are Bulgarian (bg), English (en), Romanian (ro), Greek (el), Slovak (sk), Serbian (sr) and Hungarian (hu). If no value given it will be set to English (en).
fansUnitedEnvironment - You can run the widget in the following environments: staging, production, watg and yolo. If no value given it will be set to production (prod).
labels - you can easily translate all labels, UI messages, descriptions, placeholders and etc. with this prop. By default, Fans United Match Quiz Management Widget is available in English so if no value is given, the widget will be translated in English.
hideSignOutButton - By default on the top right corner of the widget will be displayed a sign out button. To hide that button set this prop to true.
You can easily translate Fans United Discussions Management Widget in your language! You just need to pass an object to labels prop with concrete keys and values and that's it! Here's an example how you can do it:
import 'fansunited-widget-discussions/style.css';
import { DiscussionsManager } from 'fansunited-widget-discussions';
const labels = {
userNotFound: 'User not found. Please try again',
featureDisabled: 'Feature disabled!',
noPermissionMessage: 'You have no permission for this feature!',
tryAgainButton: 'Try again',
signOut: 'Sign out',
discussions: 'Discussions',
posts: 'Posts',
reportedPosts: 'Reported Posts',
dictionary = dictionary 'Dictionary',
search: 'Search',
searchDiscussionTooltip: 'When searching by URL, all other filters will be disabled. This search finds exact matches only.',
searchByIds: 'Search by IDs',
searchByLabel: 'Search by label',
searchByURL: 'Search by URL',
postsCount: 'Posts count',
fromDate: 'From date',
toDate: 'To date',
status: 'Status',
filterByStatus: 'Filter by status',
sortBy: 'Sort by',
sortByTooltip: 'When sorting by post count, date filters will be disabled. When sorting by creation date, the post count filter will be disabled.',
showDeletedDiscussions: 'Show deleted discussions',
active: 'Active',
itemsPerPage: 'Items per page',
inactive: 'Inactive',
sortByCreatedAtAsc: 'Sort by created at field in ascending order',
sortByCreatedAtDesc: 'Sort by created at field in descending order',
sortByPostsCountAsc: 'Sort by posts count value in ascending order',
sortByPostsCountDesc: 'Sort by posts count value in descending order',
pageNo: 'Page No',
noDiscussionsFound: 'No discussions found',
getDiscussionsErrorMessage: 'There was a problem while fetching discussion. Please try again',
createDiscussion: 'Create discussion',
url: 'URL',
context: 'Context',
tags: 'Tags',
content: 'Content',
campaign: 'Campaign',
id: 'ID',
type: 'Type',
label: 'Label',
contextEntityTag: 'Context entity tag',
typeContextTagNamePlaceholder: 'Type context tag name...',
getFootballEntitiesErrorMessage: 'Error occured',
customFields: 'Custom fields',
keyDynamicFields: 'Key',
valueDynamicFields: 'Value',
save: 'Save',
add: 'Add',
edit: 'Edit',
delete: 'Delete',
create: 'Create',
close: 'Close',
createDiscussionMessage: 'Discussion has been created',
createDiscussionErrorMessage: 'There was a problem with creating discussion. Please try again',
createDiscussionSameIdErrorMessage: 'Discussion with the same ID already exists. Please try again',
deleteDiscussionTitle: 'Delete discussion',
deleteDiscussionDescription: 'Are you sure you want to delete',
deleteDiscussionMessage: 'Discussion has been deleted',
deleteDiscussionErrorMessage: 'There was a problem with deleting discussion. Please try again',
moderatePostsTitle: 'Moderate posts',
moderatePostsDescription: 'Please provide the reason for moderation:',
reason: 'Reason',
moderate: 'Moderate',
moderatePostsMessage: 'Posts has been moderated',
moderatePostsErrorMessage: 'There was a problem with moderating posts. Please try again',
noPostsFounds: 'No posts found',
pinnedPosts: 'Pinned posts',
moderateAllPosts: 'Moderate all posts',
moderatePosts: 'Moderate selected posts',
pinPosts: 'Pin selected posts',
unpinPosts: 'Unpin selected posts',
pinPostsErrorMessage: 'There was a problem with pinning posts. Please try again',
unpinPostsErrorMessage: 'There was a problem with unpinning posts. Please try again',
deleted: 'Deleted',
postedOn: 'Posted on',
pinnedPost: 'Pinned post',
replyPost: 'This is a reply post',
reply: 'Reply',
replyInfo: 'This is a reply to another post with ID:',
moderated: 'Moderated',
showReplies: 'Show replies:',
showOlderVersions: 'Show older versions',
postDeleted: 'Post deleted',
postModerationDetails: 'Post Moderation Details',
noReason: 'No reason provided',
staffId: 'Staff ID:',
postsErrorMessage: 'There was a problem while fetching posts. Please try again',
searchDiscussions: 'Search discussions',
discussionType: 'Type',
all: 'All',
public: 'Public',
private: 'Private',
oldest: 'Oldest',
latest: 'Latest',
interacted: 'Interacted',
popular: 'Popular',
reported: 'Reported',
searchProfiles: 'Search profiles',
searchById: 'Search by ID',
searchByName: 'Search by name/nickname',
searchProfilesErrorMessage: 'There was a problem with fetching profiles',
showModeratedPosts: 'Show moderated posts',
showOnlyModeratedPosts: 'Show only moderated posts',
showDeletedPosts: 'Show deleted posts',
showOnlyDeletedPosts: 'Show only deleted posts',
reportsCount: 'Reports count',
profileInfoErrorMessage: 'There was a problem fetching staff member id. Please try again',
discussionFeaturesErrorMessage: 'There was a problem fetching discussion features. Please try again',
enableAutomaticModeration: 'Enable automatic moderation',
moderateLinks: 'Moderate links',
moderateLinksHelperText: `When enabled, all links will be replaced with 'https://***'`,
allowedURLs: 'Allowed URLs',
allowedURLsHelperText: 'Enter the URLs that you want to be excluded and will be not affected by the moderation of links. Every link should be on a new line',
moderatorId: 'Moderator ID',
moderatorIdHelperText: 'When not provided, the ID of the currently logged in staff member will be set',
moderationReason: 'Moderation reason',
forbiddenWords: 'Forbidden words',
forbiddenWordsHelperText: 'Enter the words who are forbidden from users in discussions. Every word should be on a new line',
discussionFeaturesUpdatedMessage: 'Discussion features has been updated',
discussionFeaturesUpdatedErrorMessage: 'There was a problem with updating discussion features. Please try again',
discussionId: 'Discussion ID',
profileId: 'Profile ID',
copiedToClipboard: '__property__ copied to clipboard',
showAllReportedPosts: 'Show all reported posts',
showPostsWithMoreThan: 'Show posts with more than __count__',
showAllReportedPostsDescription: 'Showing all reported posts regardless of reports count',
report: 'report',
reports: 'reports',
platformType: 'Platform Type',
platformTypeTooltip: 'Specify your platform type to optimize content moderation for your specific industry and audience expectations',
toleranceSettings: 'Tolerance Settings',
toleranceSettingsTooltip: 'Configure how strictly different types of content are moderated on your platform',
aggression: 'Aggression',
violence: 'Violence',
profanity: 'Profanity',
aggressionToleranceNone: 'No aggressive language allowed',
aggressionToleranceLow: 'Only constructive criticism',
aggressionToleranceMedium: 'Harsh criticism about public figures accepted',
aggressionToleranceHigh: 'Most aggressive language except direct user attacks',
violenceToleranceNone: 'Any violence mention removed',
violenceToleranceLow: 'Only credible threats removed',
violenceToleranceMedium: 'Hyperbolic violence in frustration accepted',
violenceToleranceHigh: 'Only specific, realistic threats removed',
profanityToleranceNone: 'All profanity removed',
profanityToleranceLow: 'Only severe profanity removed',
profanityToleranceMedium: 'Profanity acceptable when venting, not attacking',
profanityToleranceHigh: 'Only removed when combined with personal attacks',
enablePostsRateLimit: 'Enable posts rate limit',
enablePostsRateLimitHelper: 'When enabled, profiles will be limited in the number of posts they can create in a given time period',
per10Minutes: 'Per 10 minutes',
perDay: 'Per day',
none: 'None',
low: 'Low',
medium: 'Medium',
high: 'High',
sports: 'Sports',
lifestyle: 'Lifestyle',
gaming: 'Gaming',
betting: 'Betting',
general: 'General',
news: 'News',
finance: 'Finance',
selectAll: 'Select all',
pinPostsInfoTooltip: 'Pinned posts will be shown at the top of the list. You can pin maximum 3 posts.'
};
const App = () => {
return (
<DiscussionsManager
fansUnitedApiKey={'your-api-key'}
fansUnitedClientId={'your-client-id'}
labels={labels}/>
);
}
Here is all information about LabelsModel:
| Key | Description | Default Value |
|---|---|---|
userNotFound | On login screen when client gives invalid information about email or password. | User not found. Please try again |
featureDisabled | Label for no permission card title | Feature disabled! |
noPermissionMessage | Label for no permission card paragraph | You have no permission for this feature! |
tryAgainButton | Label for no permission card button | Try again |
signOut | Used as label on sign out button. | Sign out |
discussions | Used as a tab name in the main navigation | Discussions |
posts | Used as a tab name in the main navigation | Posts |
reportedPosts | Used as a tab name in the main navigation | Reported Posts |
dictionary | Used as a tab name in the main navigation | Dictionary |
search | Label for discussion search selector in filters section | Search |
searchDiscussionTooltip | Tooltip for discussion search selector info | When searching by URL, all other filters will be disabled. This search finds exact matches only. |
searchByIds | Discussion search type option | Search by IDs |
searchByLabel | Discussion search type option | Search by label |
searchByURL | Discussion search type option | Search by URL |
postsCount | Label for posts count slider in filters section | Posts count |
fromDate | Label for datepicker filters | From date |
toDate | Label for datepicker filters | To date |
status | Label for discussion status filter selector | Status |
filterByStatus | Placeholder for status filter selector | Filter by status |
sortBy | Label for sort by selector in filters section | Sort by |
sortByTooltip | Tooltip for sort by selector info | When sorting by post count, date filters will be disabled. When sorting by creation date, the post count filter will be disabled. |
showDeletedDiscussions | Label for deleted discussions checkbox | Show deleted discussions |
active | Active status selector option | Active |
inactive | Inactive status selector option | Inactive |
itemsPerPage | Label for items per page selector | Items per page |
sortByCreatedAtAsc | Option for sort by selector | Sort by created at field in ascending order |
sortByCreatedAtDesc | Option for sort by selector | Sort by created at field in descending order |
sortByPostsCountAsc | Option for sort by selector | Sort by posts count value in ascending order |
sortByPostsCountDesc | Option for sort by selector | Sort by posts count value in descending order |
pageNo | Label for pagination | Page No |
noDiscussionsFound | When there are no discussions found by specified filters this messsage appears on the screen | No discussions found |
getDiscussionsErrorMessage | Toast error message when there is an error with fetching discussions | There was a problem while fetching discussion. Please try again |
createDiscussion | Label for create discussion button | Create discussion |
url | Label for url input field in create discussion modal | URL |
context | Label for context component | Context |
tags | Label for tags tab in context component | Tags |
content | Label for content tab in context component | Content |
campaign | Label for campaign tab in context component | Campaign |
id | Label for ID input in context component | ID |
type | Label for type input in context component | Type |
label | Label for label input in context component | Label |
contextEntityTag | Label for context entity tag input in context component | Context entity tag |
typeContextTagNamePlaceholder | Placeholder for context entity tag input | Type context tag name... |
getFootballEntitiesErrorMessage | Toast error message when there is an error with fetching entities by context tag | Error occured |
customFields | Label for custom fields section in create discussion modal | Custom fields |
keyDynamicFields | Label for key input in custom fields section | Key |
valueDynamicFields | Label for value input in custom fields section | Value |
save | Save icon button title | Save |
add | Add icon button tooltip | Add |
edit | Edit icon button tooltip | Edit |
delete | Delete icon button tooltip | Delete |
create | Create button label in create discussion modal | Create |
close | Close button label in create discussion modal | Close |
createDiscussionMessage | Toast success message when discussion is created | Discussion has been created |
createDiscussionErrorMessage | Toast error message when there is a problem with discussion creation | There was a problem with creating discussion. Please try again |
createDiscussionSameIdErrorMessage | Toast error message when there is a discussion with the same ID | Discussion with the same ID already exists. Please try again |
deleteDiscussionTitle | Title for delete discussion modal | Delete discussion |
deleteDiscussionDescription | Description text for delete discussion modal | Are you sure you want to delete |
deleteDiscussionMessage | Toast success message when discussion is deleted | Discussion has been deleted |
deleteDiscussionErrorMessage | Toast error message hen there is a problem with discussion deletion | There was a problem with deleting discussion. Please try again |
moderatePostsTitle | Title for moderate posts modal | Moderate posts |
moderatePostsDescription | Description text for moderate posts modal | Please provide the reason for moderation: |
reason | Label for reason text input in moderate posts modal | Reason |
moderate | Moderate button label in moderate posts modal | Moderate |
moderatePostsMessage | Toast success message when posts are moderated | Posts has been moderated |
moderatePostsErrorMessage | Toast error message when there is a problem with posts moderation | There was a problem with moderating posts. Please try again |
noPostsFounds | The message appears in the posts screen when there are no posts found by filters defined | No posts found |
pinnedPosts | Section title for pinned posts list in the discussion content card | Pinned posts |
moderateAllPosts | Button label for moderating all discussion posts | Moderate all posts |
moderatePosts | Dropdown menu option for moderating selected posts | Moderate selected posts |
pinPosts | Dropdown menu option for pinning selected posts | Pin selected posts |
unpinPosts | Dropdown menu option for unpinning selected posts | Unpin selected posts |
pinPostsErrorMessage | Toast error message when there is a problem with pinning posts | There was a problem with pinning posts. Please try again |
unpinPostsErrorMessage | Toast error message when there is a problem with unpinning posts | There was a problem with unpinning posts. Please try again |
deleted | Chip label for deleted discussion | Deleted |
postedOn | Label for post card information | Posted on |
pinnedPost | Tooltip for an icon when post is pinned | Pinned post |
replyPost | Tooltip for an icon when post is a reply | This is a reply post |
reply | Chip label when post is a reply | Reply |
replyInfo | Text for reply info tooltip | This is a reply to another post with ID: |
moderated | Chip label when post is moderated | Moderated |
showReplies | Button title for showing post replies | Show replies: |
showOlderVersions | Button title for showing post older versions | Show older versions |
postDeleted | Tooltip for an icon when post is deleted | Post deleted |
postModerationDetails | Text for moderation info tooltip | Post Moderation Details |
noReason | Text when no moderation reason has been provided | No reason provided |
staffId | Text for staff id moderator info | Staff ID: |
postsErrorMessage | Toast error message when there is a problem with fetching posts | There was a problem while fetching posts. Please try again |
searchDiscussions | Label for discussion search select in posts screen filters section | Search discussions |
discussionType | Label for type selector in posts screen filters section | Type |
all | Posts type option all label | All |
public | Posts type option public label | Public |
private | Posts type option private label | Private |
oldest | Posts sort by option oldest label | Oldest |
latest | Posts sort by option latest label | Latest |
interacted | Posts sort by option interacted label | Interacted |
popular | Posts sort by option popular label | Popular |
reported | Posts sory by option reported label | Reported |
searchProfiles | Label for profiles search select in posts screen filters section | Search profiles |
searchById | Label for profiles search type selector | Search by ID |
searchByName | Label for profiles search type selector | Search by name/nickname |
searchProfilesErrorMessage | Toast error message when there is a problem with profiles search | There was a problem with fetching profiles |
showModeratedPosts | Label for show moderated posts checkbox in discussion posts filters | Show moderated posts |
showOnlyModeratedPosts | Label for show moderated posts checkbox in posts filters | Show only moderated posts |
showDeletedPosts | Label for show deleted posts checkbox in discussions posts filters | Show deleted posts |
showOnlyDeletedPosts | Label for show deleted posts checkbox in posts filters | Show only deleted posts |
reportsCount | Label for reports count number input in reported posts screen filters | Reports count |
profileInfoErrorMessage | Toast error when there is a problem with fetching staff member profile | There was a problem fetching staff member id. Please try again |
discussionFeaturesErrorMessage | Toast error when there is a problem with fetching discussion features on dictionary screen | There was a problem fetching discussion features. Please try again |
enableAutomaticModeration | Label for discussion features checkbox on dictionary screen | Enable automatic moderation |
moderateLinks | Label for moderate links checkbox on dictionary screen | Moderate links |
moderateLinksHelperText | Helper text for moderate links checkbox | When enabled, all links will be replaced with 'https://***' |
allowedURLs | Label for allowed urls text area on dictionary screen | Allowed URLs |
allowedURLsHelperText | Helper text for allowed urls text area | Enter the URLs that you want to be excluded and will be not affected by the moderation of links. Every link should be on a new line |
moderatorId | Label for moderator id text input | Moderator ID |
moderatorIdHelperText | Helper text for moderator id text input | When not provided, the ID of the currently logged in staff member will be set |
moderationReason | Label for moderation reason input | Moderation reason |
forbiddenWords | Label for forbidden words text area | Forbidden words |
forbiddenWordsHelperText | Helper text for forbidden words text area | Enter the words who are forbidden from users in discussions. Every word should be on a new line |
discussionFeaturesUpdatedMessage | Toast success message when discussion features are updated | Discussion features has been updated |
discussionFeaturesUpdatedErrorMessage | Toast error message when there is a problem with updating discussion features | There was a problem with updating discussion features. Please try again |
discussionId | Label for discussion ID | Discussion ID |
profileId | Label for profile ID | Profile ID |
copiedToClipboard | Toast info message when certain property is copied to the clipboard. The placeholder property will be replaced by the name of the property that it's copied | property copied to clipboard |
showAllReportedPosts | Tooltip for all button in reports count filter. | Show all reported posts |
showPostsWithMoreThan | Tooltip message for clicking on specific button for reports count. The count is dynamically set from the widget. Used with a combination with report and reports labels | Show posts with more than count |
showAllReportedPostsDescription | Description text for showing all reported posts despite the reports count | Showing all reported posts regardless of reports count |
report | Label for report. Used in a reports count description for single report count | report |
reports | Label for reports. Used in a reports count description for multiple reported posts. | reports |
platformType | Label for platform type selector in dictionary tab | Platform Type |
platformTypeTooltip | Tooltip for platform type selector | Specify your platform type to optimize content moderation for your specific industry and audience expectations |
toleranceSettings | Label for tolerance settings section in dictionary tab | Tolerance Settings |
toleranceSettingsTooltip | Tooltip for tolerance settings section | Configure how strictly different types of content are moderated on your platform |
aggression | Label for aggression tolerance setting | Aggression |
violence | Label for violence tolerance setting | Violence |
profanity | Label for profanity tolerance setting | Profanity |
aggressionToleranceNone | Option for aggression tolerance level | No aggressive language allowed |
aggressionToleranceLow | Option for aggression tolerance level | Only constructive criticism |
aggressionToleranceMedium | Option for aggression tolerance level | Harsh criticism about public figures accepted |
aggressionToleranceHigh | Option for aggression tolerance level | Most aggressive language except direct user attacks |
violenceToleranceNone | Option for violence tolerance level | Any violence mention removed |
violenceToleranceLow | Option for violence tolerance level | Only credible threats removed |
violenceToleranceMedium | Option for violence tolerance level | Hyperbolic violence in frustration accepted |
violenceToleranceHigh | Option for violence tolerance level | Only specific, realistic threats removed |
profanityToleranceNone | Option for profanity tolerance level | All profanity removed |
profanityToleranceLow | Option for profanity tolerance level | Only severe profanity removed |
profanityToleranceMedium | Option for profanity tolerance level | Profanity acceptable when venting, not attacking |
profanityToleranceHigh | Option for profanity tolerance level | Only removed when combined with personal attacks |
enablePostsRateLimit | Label for posts rate limit checkbox | Enable posts rate limit |
enablePostsRateLimitHelper | Helper text for posts rate limit checkbox | When enabled, profiles will be limited in the number of posts they can create in a given time period |
per10Minutes | Label for rate limit time period | Per 10 minutes |
perDay | Label for rate limit time period | Per day |
none | Label for tolerance level option | None |
low | Label for tolerance level option | Low |
medium | Label for tolerance level option | Medium |
high | Label for tolerance level option | High |
sports | Label for platform type option | Sports |
lifestyle | Label for platform type option | Lifestyle |
gaming | Label for platform type option | Gaming |
betting | Label for platform type option | Betting |
general | Label for platform type option | General |
news | Label for platform type option | News |
finance | Label for platform type option | Finance |
finance | Label for select all checkbox | Select all |
finance | Info tooltip content for pin selected posts action | Pinned posts will be shown at the top of the list. You can pin maximum 3 posts. |
FAQs
Welcome to Fans United Discussions Management Widget. The widget allows staff members with sufficient permissions to manage posts, users and moderation in discussions. You can use this widget as it is and embed it in your platform, or you can use the Mana
We found that fansunited-widget-discussions demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket CEO Feross Aboukhadijeh shares lessons from scaling a developer security startup to 10,000+ organizations in this founder interview.

Research
Socket Threat Research maps a rare inside look at OtterCookie’s npm-Vercel-GitHub chain, adding 197 malicious packages and evidence of North Korean operators.

Research
Socket researchers identified a malicious Chrome extension that manipulates Raydium swaps to inject an undisclosed SOL transfer, quietly routing fees to an attacker wallet.