* Create preliminary account deletion program flow
Does not validate password as of yet.
Does not submit a mutation to begin deletion scheduling.
CORL-236
* Create preliminary account deletion confirmation form and schema mutation
Hooks up validation and error handling to confirm the user's
password during account deletion.
Scheduling the account deletion is not implemented yet.
CORL-236
* Update requestAccountDeletion to set the user's scheduled deletion date
CORL-236
* Create preliminary cron job for scheduled account deletions
CORL-236
* Show tombstoned comments when the user has deleted their account and comments
CORL-236
* Pull in client locales for date formatting on account deletion steps
CORL-236
* Update more areas due to comment revision being nullable
CORL-236
* Allow users to cancel their account deletion request
CORL-236
* Show account deletion callout at the top of the profile stream tab
CORL-236
* Further comments and edge case handling for deleted comments site wide
CORL-236
* Show account deletion callout in the comments stream tab
CORL-236
* Send out emails during relevant account deletion events
- Confirm deletion requested
- Cancellation of deletion request
- Account deletion completed
CORL-236
* Unset emails when deleting user accounts instead of setting to null
Fixes email index collision error from setting multiple emails to null.
CORL-236
* Show organization email in account deletion steps
CORL-236
* Mark comments as deleted so that we can properly tombstone them in the stream
CORL-236
* Fix improper templating for account deletion completed emails
Sub organization name in where previously we were using the account username.
CORL-236
* Disable user drawer and display deleted flag on users in community
CORL-236
* Check for author before passing inReplyTo in ModerateCardContainer
Sometimes null when user is deleted.
CORL-236
* Tombstone moderate cards when the underlying comment is deleted
CORL-236
* Re-add deleted field to CommentContainer fragment
CORL-236
* Disable commenting or replying when user is scheduled for deletion
CORL-236
* Add snapshot tests around deletion states for comment cards and forms
CORL-236
* Add tests around the account deletion steps
CORL-236
* Set account deletion to run every 30 minutes
CORL-236
* Rename DELETION authorization to PENDING_DELETION
CORL-236
* Change log message for when account deletion tasks finds no more users to delete
CORL-236
* Update snapshots to handle proper deleted flag for scheduled deleting users
CORL-236
* Fix import ordering on various files to match coding standards
CORL-236
* Specify tenantID when querying for user during deletion
CORL-236
* Add back missing clientMutationId on cancelAccountDeletion mutation
CORL-236
* Use $unset to clear the scheduledDeletionDate
CORL-236
* Simplify create of scheduledAccountDeletion CRON function
CORL-236
* Rename and organize scheduledTask creation logic
- Rename startCronJobs to startScheduledTasks
- Return an object of named ScheduledTask items instead of an array of tasks
CORL-236
* Add comment about returning updated user when clearing scheduledDeletionDate
CORL-236
* Remove unnecessary array around tenant.locale in dateTime formatter
CORL-236
* Remove unnecessary non-null enforcement on tenant.id
CORL-236
* Remove string templated React element content
CORL-236
* Move english translated validation error to correct language file
CORL-236
* Simplify rendering of DeletionRequestCallout when deletionDate isn't available
CORL-236
* Use ternary expression instead of multiple {bool && (...)} checks
CORL-236
* Use classes object with line child style to style the step bar
CORL-236
* Update StepBar so that children of Step nodes can be undefined
Allows us to not have to insert empty placeholder strings/elements when
we want to have an empty step node.
CORL-236
* Remove use of luxon from account deletion request callouts for now
We need to decide if the extra 15KB from luxon is worth it in our bundles
before making this change.
CORL-236
* Remove unnecessary embed/deleteAccount endpoint
CORL-236
* Move DeleteAccountModal contents into a separate component
Cleans up the state management when user closes the modal and we
need the modal steps to restart.
CORL-236
* Remove localization around delete account button icon
CORL-236
* Use inline `collection(mongo)` in clearing and setting deletion date
CORL-236
* Simplify form state validation on account deletion confirm page
CORL-236
* Add todo to iterate over tenants in account deletion
CORL-236
* Remove punctuation and add context to logger messages during account deletion
CORL-236
* Break out mongo collection initialization into a shared object
Also adds a try catch error handling around the scheduled deletion
operations. Prevents errors from taking the server down.
CORL-236
* Add TODO to extract out a common formatter for date times
CORL-236
* Update translations for account deletion details
CORL-236
* Update translations for account deletion completion page
CORL-236
* During scheduled deletion, when locking deletion date, return modified user
CORL-236
* Remove un-necessary fragment container around deletion steps component
CORL-236
* Move preventSubmit outside of render function on ConfirmPage
CORL-236
* Convert collections into object of Mongo db collection initializers
Allows us to only initialize the collections we need with our
Mongo instance.
CORL-236
* Remove un-necessary lambda wrapping around collections initializer functions
CORL-236
* Add a ban user action to the stream moderation drop down
CORL-382
* Show banned stated for user in stream moderation drop down
If the user is actively banned, the ban user option will be
disabled and show a status of "banned".
CORL-382
* Create utility for generating random stories, comments, and users
CORL-382
* Add ban and suspension values to baseUser in fixtures
CORL-382
* Updated banned.spec.tsx to use new test utilities for generating fixture data
CORL-382
* Prevent users from being able to ban themselves in the moderation dropdown
CORL-382
* Kill optimistic response errors for comment mutations
Set the author.status.current to an empty array so it stops
complaining about it being unused.
CORL-382
* Rename util in tests to helpers/fixture.ts
CORL-382
* Remove unused import from CreateCommentReplyMutation.ts
CORL-382
* Put back the optimistic ban responses into comment mutations
The warnings spewing out during tests are false, for further
detail please see: https://github.com/facebook/relay/pull/2760
CORL-382
* Denormalize generated stories and comments
CORL-382
* Clean up import ordering in ModerationActionsContainer.tsx
CORL-382
* Inject appropriate scoped items into callbacks for moderation dropdown
CORL-382
* Set optimistic response author status from known viewer status
CORL-382
* fix: Make in stream banning work
* feat: Send translated email + reject comment + fix tests
* test: add feature test
* feat: add copy mentioning comment rejection
* chore: improve loading state
* chore: add tiny comment
* fix: bug in lookup not checking object properly before accessing
* fix: Recursive types not handling optional arrays
* add user badges component
* create user badges from sso token
* update badges type
* revert src/core/client/embed/index.html
* remove duplicated line
* add user badges component
* create user badges from sso token
* revert src/core/client/embed/index.html
* remove duplicated line
* fix types
* fix tests and snaps
* add user badges to user drawer
* update snaps
* update readme
* [CORL-476] add user role from SSO token (#2475)
* add role from token
* use joi to validate role values
Co-Authored-By: Wyatt Johnson <wyattjoh@gmail.com>
* simplify sso.role validation
* add test for invalid role in sso token
* feat: enable persisted queries on the client
* fix: use `id` inside websocket message
* feat: initial server support for PQ
* feat: deeper server support
* feat: abstracted persisted query replacing logic
* add types for username updates
* add update username methods
* add types and resolvers for username history
* connect frontend to username history and change history mutation
* style update username box
* show username changes in user history drawer
* new users have 1 username entry
* add translations for username change
* allow new users to change username once
* add tests for change username ui
* send email to users after username change
* add types to tests
* treat status.username.history as mandatory
* remove hardcoded 14 day username update frequency
* use framework translation directives
* add account history action component
* clean up strings
* fix imports in change username container
* fix templates
* rename update username methods
* fix nunjucks formatting
* add warning if user missing email
* add fixme
* fix spacing
* Create preliminary UI for requesting a user's comment history
CORL-235
* Create preliminary download handler
CORL-235
* Create preliminary CSV exporter for downloading user's comments
CORL-235
* Create preliminary download comments flow with email and landing page
User can download their comments after requesting via an email.
Does not include limiters preventing users from spamming the download flow.
CORL-235
* Style the download comments landing page to match the spec
CORL-235
* Update the profile download comments to respect 14 day download limit
CORL-235
* Hook up request limiter on the comment download end points.
CORL-235
* Create sorry dialogue for when the download comments link is invalid/expired
CORL-235
* Create loading spinner for comment download landing page
CORL-235
* Create an optimistic updater for requesting a comment download
CORL-235
* Add localization for download comments landing page's sorry text
CORL-235
* Adjust downloaded comment format and contents
- Format the date to match tenant local
- Format dates to be using numeric values with date and time
- Add comment URL to exported CSV record
CORL-235
* Rename `createCSV` to `createExportedContent` in the download handler
CORL-235
* Make comment download callout full width and left justified
CORL-235
* Update stream snapshots to account for the download comments changes
CORL-235
* Update snapshots to correspond to download comments changes
CORL-235
* Add date filter to the comment download
Will filter by date of the issued token to only include comments before
that time.
CORL-235
* Clean up the layout of the list items in the download comments landing page
CORL-235
* fix: localization fixes
* fix: formatting
* fix: download file enhancements
* fix: addressed download request loophole
* Update snapshots to address button changes on download comments landing page
CORL-235
* Simplify download comment landing page components
CORL-235
* Remove max-width calc's on account main layout and set them in child views
Sets the max-width settings on the download route since it's custom
set on all the othere routes (email and password).
CORL-235
* Bump npm version in package.json
CORL-235
* wire up suspension modal
* show user suspended callout on stream
* prevent comment actions for suspended users
* set default to 3 hour suspension
* add message field to suspension
* allow custom message for suspension
* show suspend success modal
* fix type errors
* remove unused code
* update styles
* fix fixture for streams
* add suspension ui tests
* fix types
* remove warnings?
* remove snapshot
* fix merge conflicts
* allow custom email message when banning users
* fix typo
* correct message type
* use final-form in suspend modal
* refactor suspend modal to use final-form
* refactor ban modal to use final-form
* refactor userStatusChangeContainer to use useCallback
* feat: improve translated form
* fix: addressed issue caused by i18n refactor
* update getMessage to accept arguments, remove format method
* translate suspend info
* change hour format
* make message a mandatory input for suspend and ban user
* fix types in user table
* Revert "fix types in user table"
This reverts commit d396e90b88bb1bd354c5cdbdd72b6d8f1ab72929.
* fix types for user table
* fix: small review tweaks
* Create preliminary user history drawer with user fragment
CORL-233
* Set font size for the user details to match spec at 16 px
CORL-233
* Update username font style/size, add horizontal rule for user history drawer
CORL-233
* Set user detail min width to align the copy buttons in user history drawer
CORL-233
* Set min width of the user history drawer to match spec
CORL-233
* Remove min width for detail area and card to allow responsive sizing
Allows the copy buttons to sit just to the right of the user
details text.
CORL-233
* Update snapshots to handle clickable username in moderation comment cards
CORL-233
* Create initial pagination of all comments in user history drawer
Shows all comments with a rubbish "load more" button as we haven't
decided if we want to do a load more button or infinite scrolling
solution.
Flex layout helps it create a scroll bar when needed to traverse through
the comment stream.
CORL-233
* Create preliminary user history drawer with user fragment
CORL-233
* Set font size for the user details to match spec at 16 px
CORL-233
* Update username font style/size, add horizontal rule for user history drawer
CORL-233
* Set user detail min width to align the copy buttons in user history drawer
CORL-233
* Set min width of the user history drawer to match spec
CORL-233
* Remove min width for detail area and card to allow responsive sizing
Allows the copy buttons to sit just to the right of the user
details text.
CORL-233
* Update snapshots to handle clickable username in moderation comment cards
CORL-233
* Let the user history drawer fill full height of page
CORL-233
* Add a close button to the user history drawer
CORL-233
* Preliminarily get all and rejected comments showing in the user drawer
CORL-233
* Create preliminary user history drawer with user fragment
CORL-233
* Set font size for the user details to match spec at 16 px
CORL-233
* Update username font style/size, add horizontal rule for user history drawer
CORL-233
* Set user detail min width to align the copy buttons in user history drawer
CORL-233
* Set min width of the user history drawer to match spec
CORL-233
* Remove min width for detail area and card to allow responsive sizing
Allows the copy buttons to sit just to the right of the user
details text.
CORL-233
* Update snapshots to handle clickable username in moderation comment cards
CORL-233
* Let the user history drawer fill full height of page
CORL-233
* Add a close button to the user history drawer
CORL-233
* Set the user history drawer to fill full height of window
CORL-233
* Convert ModerateCardContainer to a FunctionComponent
CORL-233
* Show spinner while all comments are loading in user history drawer
CORL-233
* Style tabs within the user history drawer to be secondary
CORL-233
* Center load more button in the comments for the user history drawer
CORL-233
* Fix scroll bars on nested flexboxes in the user history drawer
CORL-233
* Tweak styling for the user history drawer comments section
Add margins where necessary.
Style the Load More button to match the comment feed elsewhere.
CORL-233
* Fix background of copy buttons to match the user history drawer
CORL-233
* Preliminarily get rejected comments showing in the user history tabs
Still need to consolidate any duplication between the all and rejected
comments containers/queries, but this works correctly as is.
CORL-233
* Show hover and active background color on moderate card usernames
CORL-233
* Hide load more buttons on comment streams when no comments available
CORL-233
* Handle when no comments are available in user history drawer streams
CORL-233
* Actually show all comments in the user history all comments tab
Previously was filtering out rejected and other pre-mod
status-ed comments.
CORL-233
* Style the user history drawer cards to match the spec
CORL-233
* Add localizations around user history drawer tabs
CORL-233
* Allow a mini mode for moderate cards that are shown in the user drawer
CORL-233
* Style user drawer comment tabs to match the spec
CORL-233
* Update snapshots to account for mini moderate cards
Updates the fact that a separator on regular sized cards
now has an additional class name to turn on the divider's
visible border.
CORL-233
* Add user drawer to the queue instead of childed to the moderate card
Prevents the user drawer from prematurely closing when we approve
all items in the moderate queue.
CORL-233
* Update snapshots to account for user drawer on queues
CORL-233
* Set mini and username defaults more cleanly on ModerateCardContainer
CORL-233
* Rename usernameClicked to onUsernameClicked
CORL-233
* Use callback on loadMore calls within user drawer queries
CORL-233
* Localize the no comment text for the user drawer comment streams
CORL-233
* Localize the user not found callout in the user drawer comment streams
CORL-233
* Remove superfluous curly braces
CORL-233
* Extract user history drawer internals into a distinct query component
CORL-233
* Move comments conditional below useCallback initializations
CORL-233
* feat: fixed consistency issues
* Use a concrete tab type on user drawer comment stream tabs
CORL-233
* Use <hr/> instead of <HorizontalRule>
CORL-233
* Clarify logic for showing horizontal rule after comments in user drawer
CORL-233
* Remover bottom border on user drawer tab bar
CORL-233
* feat: client implementation of subscriptions and modqueue live counts
* fix: unit tests
* feat: live status update in moderation
* feat: live update of new comments in moderation
* chore: View New instead of View More
* feat: fade in transition for new comments
* chore: turn websocket proxy back on
* feat: initial server impl
* fix: make it work :-)
* fix: add box shadow
* chore: make test subscriptions only support 1 top level field following the spec
* fix: linting
* feat: support clientID
* fix: linting
* feat: support commentStatusUpdated subscription
* fix: disabled styles for approve and reject button
* feat: show moderated by system and update flags
* feat: support metrics recording on websocket connections
* fix: handle when same comment enters but leaves again
* Throw error if user tries to ignore a staff member
Throws a UserCannotBeIgnoredError if a user tries to ignore
a user who is a staff member. A staff member in this case is
considered anyone who has a role of staff, moderator, or admin.
CORL-409
* Prevent users from ignoring staff in the user info popover
Creates the staff roles in a constant next to the user model.
Uses this to add a computed property to the user resolver.
CORL-409
* Remove unnecessary async declaration from userIsStaff helper function
CORL-409
* Specify ignoreable on users in client test fixtures
Allows the tests to pass for the required computed property
of ignoreable that is computed by whether a user is a staff
member or not.
CORL-409
* Update more fixtures with ignoreable property on mocked users/commenters
CORL-409
* Consolidate ignore-able calculation into re-usable helper methods
Re-use the logic for whether a role is a staff member to
clearly define when a user is ignore-able or not across the
business logic.
CORL-409
* Set the ignoreable optimisticResponse on comment mutations
We have set the ignoreable value in the graphQL schema, so now
the optimisticResponses are looking for a default value to use
until the data result arrives. Put to false since the ignoreable
value is set on our author, we likely don't want to ignore ourselves.
CORL-409
* feat: added server impl of ignore user
* feat: added development error wrapping
* feat: Add arror to popover
* fix: dependencies
* fix: server locals watch paths
* feat: AuthorPopover & Member Since
* chore: refactor stream file organization
* feat: ignore user
* fix: file case
* feat: add support for useLocal hook!
* test: test ignored users
* feat: suspending, banning, now propogation
* feat: adapting to `now`
* feat: support auth for suspension/banned
* feat: added trace-id to requests
* feat: new mutation api with hooks support
* feat: added user status filtering, current field
* feat: Implement filter by status, adapt to new USER_STATUS type, add lookup helper <3
* fix: typo
* fix: tests
* chore: rename banned status to ban status
* test: feature test + lots of test helper improvements e.g. types
* fix: add translation to ban user modal
* fix: translation
* fix: test
* feat: added text indexes, query param to edges
* fix: cleaned up, added createdAt index
* fix: improved indexing support
* feat: integrate search into community and stories
* feat: adorn with search button
* test: add tests
* feat: moved html-webpack-plugin to custom server templates in production
* fix: fixed templates
* fix: removed sri for the time being
* fix: fixed up tests for new field name