* content: add gems blocks
* gemsBlocks: include ios and android identifiers
* wip: promo code
* split common constants into multiple files
* add second promo part
* geCurrentEvent, refactor promo
* fix lint
* fix exports, use world state api
* start adding world state tests
* remove console.log
* use gems block for purchases
* remove comments
* fix most unit tests
* restore comment
* fix lint
* prevent apple/google gift tests from breaking other tests when stub is not reset
* fix unit tests, clarify tests names
* iap: use gift object when gifting gems
* allow gift object with less data
* fix iap tests, remove findById stubs
* iap: require less data from the mobile apps
* apply discounts
* add missing worldState file
* fix lint
* add test event
* start removing 20 gems option for web
* start adding support for all gems packages on web
* fix unit tests for apple, stripe and google
* amazon: support all gems blocks
* paypal: support all gems blocks
* fix payments unit tests, add tests for getGemsBlock
* web: add gems plans with discounts, update stripe
* fix amazon and paypal clients, payments success modals
* amazon pay: disabled state
* update icons, start abstracting payments buttons
* begin redesign
* redesign gems modal
* fix buttons
* fix hover color for gems modal close icon
* add key to world state current event
* extend test event length
* implement gems modals designs
* early test fall2020
* fix header banner position
* add missing files
* use iso 8601 for dates, minor ui fixes
* fix time zones
* events: fix ISO8601 format
* fix css indentation
* start abstracting banners
* refactor payments buttons
* test spooky, fix group plans box
* implement gems promo banners, refactor banners, fixes
* fix lint
* fix dates
* remove unused i18n strings
* fix stripe integration test
* fix world state integration tests
* the current active event
* add missing unit tests
* add storybook story for payments buttons component
* fix typo
* fix(stripe): correct label when gifting subscriptions
* Added the "Allow banned words" checkbox to create/update guild forms
Added the "Allow banned words" checkbox to guild create/update forms which are only visible to Admins
* Updated create/update group API to include bannedWordsAllowed property
Added logic to set bannedWordsAllowed depending on conditions
* Updated word banning logic to use bannedWordsAllowed guild value instead
Updated word banning logic to use bannedWordsAllowed guild value and deleted hardcoded guild file & import
* Updated banned words test
* Pull Request amends
Removed the setting of bannedWordsAllowed during group creation
Added v-once to elements
Updated existing test and added tests related to bannedWordsAllowed functionality
* Small amend
* Small amend
Removed leftover code that was left during testing
* Fix bug in challenge tags not converted to normal tags after challenge ended/deleted
* Added test cases to test bug fix
* Set tag.challenge from String to Boolean in tag model schema
* Update existing test with tag challenge set to boolean instead of string
* Added migration file for converting tag challenge field from string to bool
* Implement suggestions from ilnt
* Use mongoose instead of Mock in migration
* Change from update to bulkwrite
* update users individually
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
* when filtering by owned challenges, challenges that a user owns but has not joined will be included
* add tests for filtering challenges by owned
* fix lint
* Add new API call to complete multiple task scorings in one call
* Improve API response
* Improve saving process
* Improve handling for multiple tasks scored at once
* Handle challenge task errors better
* Improve check for alias
* Improve check for task scorings
* Fix merge errors
* make nodemon ignore content_cache
* Fix completing group tasks
* fix test
* fix tests (again)
* typo
* WIP(a11y): task modal updates
* fix(tasks): borders in modal
* fix(tasks): circley locks
* fix(task-modal): placeholders
* WIP(task-modal): disabled states, hide empty options, +/- restyle
* fix(task-modal): box shadows instead of borders, habit control pointer
* fix(task-modal): button states?
* fix(modal): tighten up layout, new spacing utils
* fix(tasks): more stylin
* fix(tasks): habit hovers
* fix(css): checklist labels, a11y colors
* fix(css): one more missed hover issue
* fix(css): lock Challenges, label fixes
* fix(css): scope input/textarea changes
* fix(style): task tweakies
* fix(style): more button fixage
* WIP(component): start select list story
* working example of a templated selectList
* fix(style): more button corrections
* fix(lint): EOL
* fix(buttons): factor btn-secondary to better override Bootstrap
* fix(styles): standardize more buttons
* wip: difficulty select - style fixes
* selectDifficulty works! 🎉 - fix styles
* change the dropdown-item sizes only for the selectList ones
* selectTranslatedArray
* changed many label margins
* more correct dropdown style
* fix(modals): button corrections
* input-group styling + datetime picker without today button
* Style/margins for "repeat every" - extract selectTag.vue
* working tag-selection / update - cleanup
* fix stories
* fix svg color on create modal (purple)
* fix task modal bottom padding
* correct dropdown shadow
* update dropdown-toggle caret size / color
* fixed checklist style
* sync checked state
* selectTag padding
* fix spacing between positive/negative streak inputs
* toggle-checkbox + fix some spacings
* disable repeat-on when its a groupTask
* fix new checklist-item
* fix toggle-checkbox style - fix difficulty style
* fix checklist ui
* add tags label , when there arent any tags selected
* WORKING select-tag component 🎉
* fix taglist story
* show max 5 items in tag dropdown + "X more" label
* fix datetime clear button
* replace m-b-xs to mb-1 (bootstrap) - fix input-group-text style
* fix styles of advanced settings
* fix delete task styles
* always show grippy on hover of the item
* extract modal-text-input mixin + fix the borders/dropshadow
* fix(spacing): revert most to Bootstrap
* feat(checklists): make local copy of master checklist non-editable
also aggressively update checklists because they weren't syncing??
* fix(checklists): handle add/remove options better
* feat(teams): manager notes field
* fix select/dropdown styles
* input border + icon colors
* delete task underline color
* fix checklist "delete icon" vertical position
* selectTag fixes - normal open/close toggle working again - remove icon color
* fixing icons:
Trash can - Delete
Little X - Remove
Big X - Close
Block - Block
* fix taglist margins / icon sizes
* wip margin overview (in storybook)
* fix routerlink
* remove unused method
* new selectTag style + add markdown inside tagList + scrollable tag selection
* fix selectTag / selectList active border
* fix difficulty select (svg default color)
* fix input padding-left + fix reset habit streak fullwidth / padding + "repeat every" gray text (no border)
* feat(teams): improved approval request > approve > reward flow
* fix(tests): address failures
* fix(lint): oops only
* fix(tasks): short-circuit group related logic
* fix(tasks): more short circuiting
* fix(tasks): more lines, less lint
* fix(tasks): how do i keep missing these
* feat(teams): provide assigning user summary
* fix(teams): don't attempt to record assiging user if not supplied
* fix advanced-settings styling / margin
* fix merge + hide advanced streak settings when none enabled
* fix styles
* set Roboto font for advanced settings
* Add Challenge flag to the tag list
* add tag with enter, when no other tag is found
* fix styles + tag cancel button
* refactor footer / margin
* split repeat fields into option mt-3 groups
* button all the things
* fix(tasks): style updates
* no hover state for non-editable tasks on team board
* keep assign/claim footer on task after requesting approval
* disable more fields on user copy of team task, and remove hover states
for them
* fix(tasks): functional revisions
* "Claim Rewards" instead of "x" in task approved notif
* Remove default transition supplied by Bootstrap, apply individually to
some elements
* Delete individual tasks and related notifications when master task
deleted from team board
* Manager notes now save when supplied at task initial creation
* Can no longer dismiss rewards from approved task by hitting Dismiss
All
* fix(tasks): clean tasksOrder
also adjust related test expectation
* fix(tests): adjust integration expectations
* fix(test): ratzen fratzen only
* fix lint
* fix tests
* fix(teams): checklist, notes
* handleSharedCompletion: handle error, make sure it is run after the user task has been saved
* fix typo
* correctly handle errors in handleSharedCompletion when approving a task
* fix(teams): improve disabled states
* handleSharedCompletion: do not increase completions by 1 manually to adjust for last approval not saved yet
* revert changes to config.json.example
* fix(teams): more style fixage
* add unit tests for findMultipleByIdOrAlias
* exclude api v4 route from apidocs
* BREAKING(teams): return 202 instead of 401 for approval request
* fix(teams): better taskboard sync
also re-re-fix checklist borders
* scoreTasks: validate body
* fix tests, move string to api errors
* fix(tests): update expectations for breaking change
* start updating api docs, process tasks sequentially to avoid conflicts with user._tmp
* do not crash entire bulk operation in case of errors
* save task only if modified
* fix lint
* undo changes to error handling: either all tasks scoring are successfull or none
* remove stale code
* do not return user._tmp when bulk scoring, it would be the last version only
* make sure user._tmp.leveledUp is not lost when bulk scoring
* rewards tests
* mixed tests
* fix tests, allow scoring the same task multiple times
* finish integration tests
* fix api docs for the bulk score route
* refactor(task-modal): lockable label component
* wip loading spinner
* refactor(teams): move task scoring to mixin
* fix(teams): style corrections
* fix(btn): fix padding to have height of 32px
* implement loading spinner
* remove console.log warnings
* fix(tasks): spacing and wording corrections
* fix(teams): don't bork manager notes
* fix(teams): assignment fix and more approval flow revisions
* WIP(teams): use tag dropdown control for assignment
* finish merge - never throw an error when a group task requires approval (wip - needs tests)
* fix taskModal merge
* fix merge
* fix(task modal): add newline
* fix(column.vue): add newline at end of file
* mvp yesterdaily modal
* fix tests
* fix api docs for bulk scoring group tasks
* separate task scoring and _tmp handling
* handle _tmp when bulk scoring
* rya: close modal before calling cron API, prevents issues with modals
* rya: fix conflicts with other modals
* add sounds, support for group plans, analytics
* use asyncResource for group plans
* fix lint
* streak bonus: add comment about missing in rya
* move yesterdailyModal
* fix issues with level up modals and rya
* add comments for future use, fix level up modals not showing up at levels with a quest drop
* handle errors in rya modal
* bundle quest and crit notifications
Co-authored-by: Phillip Thelen <phillip@habitica.com>
Co-authored-by: Phillip Thelen <viirus@pherth.net>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
Co-authored-by: negue <eugen.bolz@gmail.com>
* hide upgrade button for public guilds
* prevent group plans for public guilds
* fix unit tests
* fix integration and unit tests that assumed group plans could be public guilds
* more unit tests fixes
* more resilient unit test
* more resilient unit test
* Excluding tavern from showing up in GET /groups API when 'guilds' or 'publicGuilds' type parameter is included.
* Fixed test errors.
* Resolved pull request #12438 issues.
Moved Tavern exclusion to Group model, removed Group controller back to the original and resolved test failures.
* Added logic for a repeating Chilling Frost skill. Added test case for redundant chilling frost skill cast. Added comments for the logic of repeating Stealth skill because of an error.
* Added logic for a repeating Stealth skill. Avoiding MP reduction still pending because of console error. Test cases pending.
* Completed the logic for a repeated Stealth skill. Added repeated frost skill cast check in common. Removed exclusive test. Test cases are pending.
* Added test case for Stealth skill recast. Fixed lint errors. Fixed a flaw in if statement which led to test case failure.
* Fixed lint errors in test case.
* Added a common JSON entry for skil recasts in three files. Other files remaining. Added Chilling Frost recast check in common code. Modified test cases.
* Added spellDisabled condition in client code.
* Reverted JSON messages for three languages. Added spellAlreadyCast attribute to JSON file in locales/en. Made changes for showing appropriate message in client code.
* Added an import for throwing BadRequest in common code. Modified test case accordingly.
* Update website/common/script/content/spells.js
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
* Added target and req attributes in cast() method arguments.
* Changed common code test case because of increased function parameters. Moved chilling frost test casse to common tests instead of server tests.
* Changed the test case format in common tests.
* Added a missing done statement.
* Fixed a minor error which led to failing test case. Removed the exclusive test which led to lint error.
* Fixed lint errors.
* Added a class named 'disabled' for the frontend change.
* fix(skills): style cleanup
* fix(skills): unfix
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
* Updating daily daysOfMonth array when startDate is updated and adding integration tests to test this functionality
* Adding more test cases and adding semicolons to the end of lines
* Only updating the monthly repetition if the daily was already set to repeat on a day of the month
* fix(lint): whitespace
Co-authored-by: Laurel Thomson <laurel.beth.thomson@gmai.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
* WIP(a11y): task modal updates
* fix(tasks): borders in modal
* fix(tasks): circley locks
* fix(task-modal): placeholders
* WIP(task-modal): disabled states, hide empty options, +/- restyle
* fix(task-modal): box shadows instead of borders, habit control pointer
* fix(task-modal): button states?
* fix(modal): tighten up layout, new spacing utils
* fix(tasks): more stylin
* fix(tasks): habit hovers
* fix(css): checklist labels, a11y colors
* fix(css): one more missed hover issue
* fix(css): lock Challenges, label fixes
* fix(css): scope input/textarea changes
* fix(style): task tweakies
* fix(style): more button fixage
* WIP(component): start select list story
* working example of a templated selectList
* fix(style): more button corrections
* fix(lint): EOL
* fix(buttons): factor btn-secondary to better override Bootstrap
* fix(styles): standardize more buttons
* wip: difficulty select - style fixes
* selectDifficulty works! 🎉 - fix styles
* change the dropdown-item sizes only for the selectList ones
* selectTranslatedArray
* changed many label margins
* more correct dropdown style
* fix(modals): button corrections
* input-group styling + datetime picker without today button
* Style/margins for "repeat every" - extract selectTag.vue
* working tag-selection / update - cleanup
* fix stories
* fix svg color on create modal (purple)
* fix task modal bottom padding
* correct dropdown shadow
* update dropdown-toggle caret size / color
* fixed checklist style
* sync checked state
* selectTag padding
* fix spacing between positive/negative streak inputs
* toggle-checkbox + fix some spacings
* disable repeat-on when its a groupTask
* fix new checklist-item
* fix toggle-checkbox style - fix difficulty style
* fix checklist ui
* add tags label , when there arent any tags selected
* WORKING select-tag component 🎉
* fix taglist story
* show max 5 items in tag dropdown + "X more" label
* fix datetime clear button
* replace m-b-xs to mb-1 (bootstrap) - fix input-group-text style
* fix styles of advanced settings
* fix delete task styles
* always show grippy on hover of the item
* extract modal-text-input mixin + fix the borders/dropshadow
* fix(spacing): revert most to Bootstrap
* feat(checklists): make local copy of master checklist non-editable
also aggressively update checklists because they weren't syncing??
* fix(checklists): handle add/remove options better
* feat(teams): manager notes field
* fix select/dropdown styles
* input border + icon colors
* delete task underline color
* fix checklist "delete icon" vertical position
* selectTag fixes - normal open/close toggle working again - remove icon color
* fixing icons:
Trash can - Delete
Little X - Remove
Big X - Close
Block - Block
* fix taglist margins / icon sizes
* wip margin overview (in storybook)
* fix routerlink
* remove unused method
* new selectTag style + add markdown inside tagList + scrollable tag selection
* fix selectTag / selectList active border
* fix difficulty select (svg default color)
* fix input padding-left + fix reset habit streak fullwidth / padding + "repeat every" gray text (no border)
* feat(teams): improved approval request > approve > reward flow
* fix(tests): address failures
* fix(lint): oops only
* fix(tasks): short-circuit group related logic
* fix(tasks): more short circuiting
* fix(tasks): more lines, less lint
* fix(tasks): how do i keep missing these
* feat(teams): provide assigning user summary
* fix(teams): don't attempt to record assiging user if not supplied
* fix advanced-settings styling / margin
* fix merge + hide advanced streak settings when none enabled
* fix styles
* set Roboto font for advanced settings
* Add Challenge flag to the tag list
* add tag with enter, when no other tag is found
* fix styles + tag cancel button
* refactor footer / margin
* split repeat fields into option mt-3 groups
* button all the things
* fix(tasks): style updates
* no hover state for non-editable tasks on team board
* keep assign/claim footer on task after requesting approval
* disable more fields on user copy of team task, and remove hover states
for them
* fix(tasks): functional revisions
* "Claim Rewards" instead of "x" in task approved notif
* Remove default transition supplied by Bootstrap, apply individually to
some elements
* Delete individual tasks and related notifications when master task
deleted from team board
* Manager notes now save when supplied at task initial creation
* Can no longer dismiss rewards from approved task by hitting Dismiss
All
* fix(tasks): clean tasksOrder
also adjust related test expectation
* fix(tests): adjust integration expectations
* fix(test): ratzen fratzen only
* fix(teams): checklist, notes
* fix(teams): improve disabled states
* fix(teams): more style fixage
* BREAKING(teams): return 202 instead of 401 for approval request
* fix(teams): better taskboard sync
also re-re-fix checklist borders
* fix(tests): update expectations for breaking change
* refactor(task-modal): lockable label component
* refactor(teams): move task scoring to mixin
* fix(teams): style corrections
* fix(tasks): spacing and wording corrections
* fix(teams): don't bork manager notes
* fix(teams): assignment fix and more approval flow revisions
* WIP(teams): use tag dropdown control for assignment
* refactor(tasks): better spacing, generic multi select
* fix(tasks): various visual and behavior updates
* fix(tasks): incidental style tweaks
* fix(teams): standardize approval request response
* refactor(teams): correct test, use res.respond message param
* fix(storybook): renamed component
* fix(teams): age approval-required To Do's
Fixes#8730
* fix(teams): sync personal data as well as team on mixin sync
* fix(teams): hide unclaim button, not whole footer; fix switch focus
* fix(achievements): unrevert width fix
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
* Issue 10209 - Remove read usages of zone
* Issue 10209 - Add coverage on daysSince and startOfDay cron utility functions
* Issue 10209 - Add unit test for daysUserHasMissed method
* Issue 10209 - Remove usages of deprecated `moment.js#zone` method.
* Issue 10209 - Add helper function to centralise logic
Also simplify timezoneOffsetToUtc function in site.vue
* Issue 10209 - Also add getUtcOffset as method on user
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
* simplify ip address management by using the trust proxy express option
* add setupExpress file
* fix redirects middleware tests
* fix lint
* short circuit the ip blocking middleware
* basic implementation with ip based limiting
* improve logging
* upgrade apidoc
* apidoc: add introduction section
* fix lint
* fix tests
* fix lint
* add unit tests for rate limiter
* do not send retry-after header when points are available
* automatically fix lint
* fix more lint issues
* use userId as key for rate limit when available
* simplify ip address management by using the trust proxy express option
* add setupExpress file
* fix redirects middleware tests
* fix lint
* short circuit the ip blocking middleware
* basic implementation with ip based limiting
* improve logging
* upgrade apidoc
* apidoc: add introduction section
* fix lint
* fix tests
* fix lint
* add unit tests for rate limiter
* do not send retry-after header when points are available
* automatically fix lint
* fix more lint issues
* use userId as key for rate limit when available
* add run-rs to dependencies
* wip: add replica set to api unit github action
* wip: add replica set to api unit github action
* wip: fix gh actions mongodb replica set setting
* usa replica set for integration tests
* add correct mongodb version matrix for integration tests
* use different db connection on gh actions
* Revert "use different db connection on gh actions"
This reverts commit aa8db759d380ba58ac90304c786b3eba5004b1bd.
* add example transaction
* add mongo script to package.json
* abstract mongodb utils, connect using hostname on windows
* npm scripts: mongo -> mongo:dev
* add setup script for run-rs on windows
* gh actions: run in test environment
* remove test files
* better error handling, use cross-spawn to avoid issues on windows
* fix lint
* Getting the latest code
* Temporary fix for Redundant Party Invite. Needs changes.
* Added logic to check if the user is an existing member of the party that the user is invited to.
* Added a test case for redundant party invite check.
* Changed the test case for redundant party invite to see if it runs successfully.
* Made changes to the test cases.
* Fixed lint errors.
* Removed the exclusive mocha test.
* Referred the issue in the name of the new test case.
* Modified test case to check its veracity.
* Checking if the update statement is working or not.
* Piggybacking the updating of user tag list.
When a new task is being added to a challenge, added code to update user tag list along with the existing code that already involves syncing / updating the user documents of challenge members.
* Update comment on number of simulatenaeous users to be updated concurrently in TaskQueue.
* Added comment to explain previous commit caaca469f8 (Update comment on number of simulateneous users to be updated concurrently in TaskQueue)
* Added unit tests for testing commit caaca469f8 (Update comment on number of simulateneous users to be updated concurrently in TaskQueue)
* Removed unused lines from newly added test cases
* Implemented lint suggestions
* Update code with changes requested in PR
* Fix bug where updated webhook options failed to save
This bug was caused by Mongoose not creating getters/setters for array
elements (https://mongoosejs.com/docs/faq.html#array-changes-not-saved).
So, although the webhook was being updated properly, Mongoose was not
actually committing it to the database. Telling Mongoose that the array
of webhooks has changed via `markModified` fixes the issue.
Additionally, the relevant API test case was only checking whether or
not the webhook returned from the PUT endpoint matched the expected
update. Since the endpoint was returning the updated webhook without
querying the database again, this test case would pass. It has been
updated to check both the returned webhook as well as the version of the
webhook that is saved to the database against the expected. In other
words:
`assert returned === saved === expected`
Fixes#12336
* Call markModified on webhook.options instead of user.webhooks
This tells Mongoose that only the modified webhook's options changed
instead of telling it that the entire user.webhooks array changed,
saving a costly DB update.
* fix(chat) - Don't insert user link in url-less link and properly log source-mapping failures
* fix(chat) - Add link to markdown spec and list of known issues
* fix(chat) - Log regular expression as String
* Issue 10924 - Don't break up links with mention links
* Issue 10924 - Recognise links between brackets.
* Issue 10924 - Rely on markdown parser for link determination
* Issue 10924 - Only increment index once in findTextBlocks
* Issue 11050 - Small tuneups to unlock.js
- Use includes i.o. indexOf
- Extract small function for object setting duplication
- Use every instead of custom counter
* Issue 11050 - Properly store purchased items when purchasing them
* Issue 11050 - Couple more tuneups in unlock.js and implemented partial failure scenario
* Issue 11050 - Fix last lint issue
* Issue 11050 - Check path for gear i.o. failing to write it to purchased
* Issue 11050 - Guarantee variation coverage in tests
* Issue 11050 - Use startsWith instead of includes for background check
* Issue 11050 - Don't unlock lost items
* Improve whitespacing in highlightMentions.js unit test
* Issue 11504 - Don't link users in markdown code blocks
Use the markdown-it parser to determine what parts of the message are code block first.
Then work from those parser tokens back to content parts that should not be handled.
Still convoluted, but can be improved once a "user mention plugin" is added to habitica-markdown.
* Issue 11504 - Put functions in JavaScript order and fix linting issues
* Issue 11504 - Use includes i.o. multiple or checks and added some context.
* Issue 11504 - Add docstring for highlightMentions and simplify fence regex
* Issue 11504 - Replace inline recursor with default parameter value
* add date check
* achievements modal polishing
* refresh private-messages page when you are already on it
* add countbadge knob to change the example
* fix lint
* typos
* typos
* typos
* add toggle for achievements categories
* typo
* fix test
* fix edit avatar modal cannot be closed
* WIP(settings): subscriber page improvements
* WIP(subscriptions): more design build-out
* fix(css): disabled button styles
* fix(css): better Amazon targeting
* fix hide tooltip + align header correctly
* disable perfect scroll
* load messages on refresh event
* fix header label + conversation actions not breaking layout on hover
* WIP(g1g1): notif
* WIP(g1g1): notif cont'd
* fix(test): snowball change
* fix(event): feature NYE card
* chore(sprites): compile
* fix(bgs): include TT required field
* add gifting banner to the max height calculation
* chore(event): enable winter customizations
* WIP(gifting): partial modal implementation
* feat(gifting): select giftee modal
* fix(gifting): notification order, modal dismiss
* Begin implementing sign in with apple
# Conflicts:
# package-lock.json
# website/common/script/constants.js
# website/server/libs/auth/social.js
# website/server/models/user/schema.js
* Add apple sign in button to website
* fix lint errors
* fix config json
* fix(modals): correct some repops
* fix(gifting): style updates
* fix(buy): modal style changes
* fix(modals): also clean out "prev"
* Attempt workaround for sign in with apple on android
* temporarily log everything as error
* refactor(modals): hide in dismiss event
* fix temporary test failure
* changes to sign in with apple
* fix: first batch of layout issues for private messages + auto sizing textarea
* fix(modals): new dismiss logic
* fix(modals): new dismiss no go??
* Only use email scope
* print debugging
* .
* ..
* ...
* username second line - open profile on face-avatar/conversation name - fix textarea height
* temporarily disable apple auth and just return data for debugging
* Hopefully this works
* .....
* WIP(subscription): unsubscribed state
* .
* ..
* MAYBE THIS ACTUALLY WORKS???
* Implement apple sign in
* fix some urls
* fix urls
* fix redirect and auth
* attempt to also request name
* fix lint error
* WIP(subscription): partial subscribed
* chore(sprites): compile
* Change approach so that it actually works
* fix config error
* fix lint errors
* Fix
* fix lint error
* lint error
* WIP(subscription): finish subscribed
* refresh on sync
* new "you dont have any messages" style + changed min textarea height
* new conversationItem style / layout
* reset message unread on reload
* chore(npm): update package-locks
* fix styles / textarea height
* feat(subscription): revised sub page RC
* list optOut / chatRevoked informations for each conversation + show why its disabled
* Improve apple redirect view
* Fix apple icon on group task registration page
* WIP(adventure): prereqs
* Block / Unblock - correct disabled states - $gray-200 instead of 300/400
* canReceive not checking chatRevoked
* fix: faceAvatar / userLink open the selected conversation user
* check if the target user is blocking the logged-in user
* fix(subs): style tweaks
* fix(profiles): short circuit contributor
Attempted fix for #11830
* chore(sprites): compile
* fix(content): missing potion data
* fix(content): missing string
* WIP(drops): new modal
* fix(subs): moar style tweaks
* check if blocks is undefined
* max-height instead of height
* fix "no messages" state + canReceive on a new conversation
* WIP(adventure): analytics fixes etc
* Improve apple signin handling
* fixed conversations width (280px on max 768 width page)
* feat(adventure): random egg+potion on 2nd task
* fix(lint): noworkies
* fix(modal): correctly construct classes
* fix(tests): expectations and escape
* Fix typo
* use base url from env variables
* fix lint
* call autosize after message is sent
* fix urls
* always verify token
* throw error when social auth could not retrieve id
* Store emails correctly for apple auth
* Retrieve name when authenticating through apple
* Fix lint errors
* fix all lint errors
* fix(content): missing strings
* Revert "always verify token"
This reverts commit 8ac40c76bfa880f68fa3ce350a86ce2151b9cf95.
# Conflicts:
# website/server/libs/auth/social.js
* Correctly load name
* remove extra changes
* remove extra logger call
* reset package and package-lock
* add back missing packages
* use name from apple
* add support for multiple apple public keys
* add some unit and integration tests
* add apple auth integration test
* tweak social signup buttons
* pixel pushing
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
Co-authored-by: negue <eugen.bolz@gmail.com>
Co-authored-by: Phillip Thelen <phillip@habitica.com>
* fix(webhooks): don t parse response as json
* upgrade got to version 10
* remove old header
* fix tests
* fix email auth
* add migration
* update email error
* split migration in two
* start implementing an ip blocker
* fix comments and add to list of middlewares
* fix code, comment code and improve response
* wip tests
* fix order
* fixes and tests
* todo comment
* add failures field to webhooks and sanitize
* implement logic
* use update instead of save
* specify timeout and maximum number of retries
* add tests
* Fix bug to allow guild summary and description to match against search term in MyGuilds component
* Add unit test to groupUtilities to test filterGroup function
* Changes made after running npm:run:lint
* Fix bug when filter guild function does not match against guild size correctly when the guild has member count = 100 or 1000
According to habitica wiki Guilds Guide, gold-tier guilds are guilds with 1000 or more members. However, under the current code of filter guild function, it matches guilds as gold-tier as strictly more than 1000 members, excluding 1000 members. Similar silver-tier guilds should have 100 to 999 members, but the current code it matches guilds as silver-tier for members between 101 and 999 members.
* Added unit tests to test the newly added code in the groupsUtilities mixin for the current issue
* Add unit testing to test search guild name, summary, and description in myGuilds component
* Add suggestions from lint
* Added searching by guild summary and white space handling in search terms.
For discover guilds component, added the following:
1) handling of searching by guild summary
2) preventing white space in search terms to display all guilds
3) added test cases for testing the search functionality in discove guilds to ensure consistent behaviour between the searching in MyGuilds and public guilds.
* Remove console statements from test file
* Implement suggestions from lint.
Co-authored-by: osiris <eynsan@yahoo.co.uk>
* Ensure official challenges are listed first
* Fix lint errors
* Move query creation into separate function
* switching branches
* Fixes and tests
* Formatting fixes
* Linting
* fix tests
* WIP(adventure): prereqs
* WIP(drops): new modal
* WIP(adventure): analytics fixes etc
* feat(adventure): random egg+potion on 2nd task
* fix(lint): noworkies
* fix(modal): correctly construct classes
* fix(tests): expectations and escape
* fix(first-drops): address comments
* fix(first-drops): don't give random drops until first drops
* fix(drops): remove more Level 3 references
* refactor(drops): no need for cloning
* refactor(drops): unnecessary export
* fix(first-drops): force sync
* fix(first-drops): move to server
* fix(first-drops): escape in case we get here with >0 items
* fix(lint): line length
* fix(pet-food): remove unused string
Introduce a new error type blockedToSendToThisUser for the cases where you have blocked a player from sending private messages to you, if you try to message them or if you try to transfer gems to them, you will see the error "You can't send to this player because you have block this player."
* Implement atomic user challenges update
Prevents multiple concurrent requests from passing through
Fixes#11295
* Move user challenges update to separate method
* Rename challenge syncToUser to syncTasksToUser
Now that adding the challenge to user is separated, this methods main purpose is to sync the tasks
* Fix lint errors
* Strip markdown from push notifications
* Revert "Strip markdown from push notifications"
This reverts commit 4741e584c63031d0d4609e18a4e4f082d4c4e72e.
* correctly set type for mention push notifications
* Add unformattedText field to chat messages
* fiix lint errors
* Add check that markdown formatting is stripped from messages
* Add check for markdown formatting in messages.
* feat(subscriber): award mystery items at cron
* fix(mystery): backfill skipped months
* fix(mystery): adjust subscriber text
* fix(mystery): correct moment logic
and remove irrelevant tests
* fix(mystery): build set one month in advance
* fix(mystery): don't add empty set to Time Travelers
* refactor(mystery): readability
* password min length: server + client side registering
* tweak text, add tests
* misc
* use red border for invalid inputs
* fix auth form for groups
* remove default firefox box shadown on invalid elements
* fix css in authForm
* fix margings
* misc fixes to forms and buttons
* fix typo
* move the update username route to v3 (#10836)
* Add API Call to retrieve auto-complete options for usernames
* Create links to users profile in chat messages
* Begin adding server-side autocomplete to web client
* Add Test to opt out of username being searchable
* Fix issue with username highlighting
* Correctly update message text when using autocomplete
* remove old autocomplete component
* Improve chat input design
* rewrite mongoose migration to avoid using recursion
* fixes
* select more fields
* use lean and .update
* fix(tests): correct expects
* fix(tests): linting & more expects
Also one more tweak for invite validation responsiveness
* chore(news): Bailey
* chore(i18n): update locales
* 4.70.0
* fix(chat): less intrusive highlight and better margins
* fix(chat): more width tweakage
* feat(content): Oddballs Bundle
Also includes one more tweak to @mention text highlighting
* chore(sprites): compile
* chore(i18n): update locales
* 4.71.0
* groupChatReceived webhook fix (#10802)
* Moved sendGroupChatReceivedWebhooks to group.sendChat function.
* Added test for new functionality.
* Set width on .custom-control-label (#10840)
Set `width: 100%` on the `.custom-control-label`.
Although `overflow-wrap: break-word` is set on the parent `.checklist-item` element, it doesn't seem to take effect unless a width is set on the label.
* Very large Guild member counts overflow the badge #10753 (#10812)
* Update superagent to the latest version 🚀 (#10848)
* fix(package): update superagent to version 4.0.0
* chore(package): update lockfile package-lock.json
* fix(chat): prevent duplicate messages, closes#10823
* Fix for #10814, prevent ParallelSave errors (#10852)
* fix(group leave): prevent ParallelSave errors while leaving a group with multiple group or challenge tasks
* fix typo
* move computed-props to methods - refactor mountItem to use the states inside (#10853)
* feat(content): Frost Hatching Potions
* chore(sprites): compile
* chore(i18n): update locales
* 4.72.0
* fix(stable): remove progress number from petItem
* add two slurs - TRIGGER / CONTENT WARNING: assault, slurs, swearwords, etc
* more checks on the item.klass, also added the specialClass checks (#10859)
* feat(content): Turkey Day 2018
* chore(sprites): compile
* chore(i18n): update locales
* 4.73.0
* chore(i18n): update locales
* 4.73.1
* feat(footer): always show expanded footer (#10862)
* Fixes issue #10857 ("Tags have extra space at the bottom when they should be centered") (#10861)
* Fix for #10857 centered category tag text
* Fixes#10857 and #10856 display tag markdown.
* Attach client to chat messages (#10845)
* Attach client to chat messages
* Word
* Design tweaks
* Fix potential error
* chore(event): end Thanksgiving tweaks
* chore(i18n): update locales
* 4.73.2
* Improve chat input design
* Fix test errors
* Move tier icons import to index
* correctly name event variable
* Debounce autocomplete calls
* optimize mention highlighting
* fix failing tests
* Fix sending private messages
* Cache username autocomplete requests
* optimize autocomplete regex
* Fix lint error
* add optional parameters to limit autocompletion to specific group
* Fix non-profile urls not being usable.
* Correctly handle autocomplete for public and private guilds
* Add check to make sure users don’t search for parties/guilds they are not part of
* fix lint error
* limit autocomplete results to 5
* fix(mentioning): change default, adapt settings control to checkbox
* Improve auto completing
* improve username autocomplete
* Fix merge issue
* remove old code
* Send push notifications on mentions
* Improve handling for sending mention notifications
* Fix lint error
* Update schema.js
* Fix failing test
* Don't send push notification to users who aren't in the party
* Remove tributejs from dependencies
* Add more achievements to notifications list
* use addNotification
* Fix logic to not award stable achievements over and over
* Improve achievement display
* Fix setting notifications for party inviter
* Add tests that notifications are added correctly
* Fix tests
* Fix: moved debuffPotions from vue component
- Move logic of choosing proper debuf potion from vue component to website commons
- introduce new function to get debuffSpellItems
* Fix: move debuffPotions to server
* Refactoring: move setting of debuff potion to func
* Fix: sanity
* Refactoring & Tests:
- Create test case for get and set DebuffPotionItems functions
- Fix setDebuffPotionItems function to not create duplicated debuff items
- Make debuff potion type of items unpinnable
- Move list of debuffs to constant to reuse it in tests and functions
* Fix: typo in test describe
* Fix: translation of unpin
* Fix: setDebuffPotionItems on cron buffs reset
* Fix: use full path for debuff potions
* fix(teams): no hover bg change for noninteractive checkboxes
* feat(teams): send notification to managers on task claim
Also fix client unit test broken by prev commit
* feat(groups): don't penalize for tasks assigned since last activity
* fix(tests): actually fix client unit
* fix(teams): improve task styles
* fix(teams): let people other than leader see relevant approvals
Also more style fixes
* fix(approvals): better filtering and task headings for approval data
* fix(test): correct test expectations for new GET /approvals behavior
* fix(groups): style tweaks
* different border for group and normal tasks
* fix(teams): remove extra click for claiming
* fix(teams): leaders & managers can check off approval-required tasks
* fix(teams): don't notify user of own claim
* fix group task margin and z-index on hover
* fix(menu): sporadic error in top bar
* fix(teams): more approval header and footer adjustments
* fix(tests): adjust expectations for self-approval
* fix(teams): address PR comments
* refactor(timestamps): date user activity on authenticated requests
* refactor(timestamps): update local user instead of direct db update
* feat(content): Hourglass Quest
* fix(hourglasses): NaN from undefined
* fix(quests): sanity check for negative scrolls
* fix(hourglasses): don't show quantity selection for binary items
* fix(route): validate number, use body not params
* test(timetrav): add quest tests
* bug fix: free group plan subscription from party/guild is no longer cancelled when leaving a guild
* free group plan subscription from party/guild no longer gets cancelled when leaving a guild
* bug fix: free group plan subscription from party/guild is no longer cancelled when leaving a guild
* free group plan subscription from party/guild no longer gets cancelled when leaving a guild
* Added tests to check if a member of a group plan maintains free subscription when leaving another group without a plan
* Added tests to check if member of a group plan still keeps free subscription when leaving some other group without a plan
* bug fix: free group plan subscription from party/guild is no longer cancelled when leaving a guild
* free group plan subscription from party/guild no longer gets cancelled when leaving a guild
* bug fix: free group plan subscription from party/guild is no longer cancelled when leaving a guild
* free group plan subscription from party/guild no longer gets cancelled when leaving a guild
* Added tests to check if a member of a group plan maintains free subscription when leaving another group without a plan
* Added tests to check if member of a group plan still keeps free subscription when leaving some other group without a plan
* move existing tests for chatRevoked users to 'mute user' describe block
* give consistent names to chatRevoked tests and use const not let
* improve methods for restoring chat permissions to test users
* add tests for shadow-muting and define constants for flag-related numbers
* update user profile URLs and reverse private/public 'if' statements
* implement shadow muting in the API and schemas
* add interface for mods to turn shadow muting on/off for a user
- checkbox in the Hall
- icon in the user's profile
* mark chat posts as being shadow muted (marking is visible to mods only)
* convert Admin Tools in profile from icons to text; make crown icon a toggle
* move logic for displaying flag count to a computed property
* prevent chat notifications for shadow-muted posts
* merge all changes to one commit of PR #11157 / #11226
* rename the new paged messages route
* rename event, move map-method to the Inbox schema, fix lint
* move `mapMessage`-call to `getUserInbox`
* revert schema.method back to a normal one
* load messages per conversation
* only sort ones in ui
* add contributor to message
* fix correct message layout/message
* mugenScroll on chatMessages
* fix lint, no mugen-scroll, use own scroll handler
* fix height / margin of modal + use button to load more
* fix tests
* user data from inbox
* style "load earlier messages"
* move mapMessage to the inbox api result / extract sentMessage of members-api-controller
* fix test back
* fix test
* keep last scroll position
* just set the Id of the returned message instead of all other properties
* fix add new messages (buttons were hidden) + load more
* item-mounted debounce to trigger the re-scrolling
* WIP(groups): quickish wins
* WIP(groups): two quick wins
1. Don't show task creation button if user is not leader or manager
2. Don't require JS confirm() for approving tasks
* fix(group-plans): allow delete from options button
* fix(group-plans): update tasksOrder when task deleted
* fix(group-tasks): dismiss notification when user takes action
* refactor(tasks): DRY out create button styling
* fix(group-tasks): sync after claiming/unclaiming
* fix(claiming): better sync and notif handling
* fix(tasks): force sync instead of explicitly clearing notif
* fix(tasks): reposition task creation button
* fix(group-tasks): default to single completion
* fix(group-tasks): move completion condition field above approval switch
* fix(group-tasks): todo validation error and approval notif dismissal
* fix(group-tasks): default single completion on client
* fix(group-tasks): move completion condition up more
* fix(group-tasks): maintain client-side user assignment list
* fix(group-tasks): remove approval notifications when task deleted
* fix(group-tasks): send assigned task to top of task list
* fix(group-tasks): remove useless tag filter dropdown
* feat(group-tasks): notify user of assigned task
* fix(group-tasks): don't allow approval of tasks w/ no approval request
* fix(tests): adjust expectations
* fix(group-tasks): more sensible action on assignment notif click
* Add message of cancelled quest in party chat
Issue #11093
* Delete trailing spaces
For successful passing the test
* Add test of cancelled quest's message
Also, added an explanation that partyMembers[1] hasn't accepted the invitation in the 'cancels a quest' test
* Fix: import Group
Import Group to pass Lint syntax test
* Move save function to Promise.all
* Fix moving save to Promise.all
* wip: define items as mixed objects
* add default owned gear
* mark modified
* more mark modified
* more mark modified
* more mark modified
* more mark modified
* fix common tests
* fix common tests
* update mongoose
* add itemsUtils
* use new util function in hall controller
* add tests for items utils
* update website/server to mark all items as modified
* start updating common code
* update login incentives
* update unlock
* remove changes to package-lock.json
* remove changes to package.json
* Add if block to search for username if not valid uuid
* Add validationError check
* Modify test case and added test case for username
* Update description of API
* Update Test
* Correct test
* Change placeholder text in heroes.vue
* Refactor code
* Add quotes
* Update hall.js
- Adds the member's username to the challenge csv
- Updates to unit tests
- Issue #10955
Supports the ability for challenge owners to judge challenge winners
after the added functionality enabling users to modify their name
(display name). The added field ties the user to their results by
their username.
* Prevent progress being cleared when quest ends
changing group tests to make sure it keeps user's progress
fix and remove .only() from tests
* fix tests and check null case for clearing up user's quest without resetting progress
* feat(subscription): promo banner in modal
* feat(subscription): promo banner on main page
* fix(banners): remove extraneous margin adjustment
* fix(banners): various
* feat(promotion): gift 1, get 1
* fix(promo): various
* chore(promo): add Bailey
* fix(promo): use different email template for promo beneficiary
* fix(promo): turns out Winter is meaningful
* fix
Newly subscribed accounts receive erroneous notification that they have Mystery Items
* Added unit test for #10496
* Restored a previous unit test
* add hasCancelled method for group/user, prevent cancelling a subscription twice
* wip
* paypal: do not cancel a subscription twice
* make sure hasCancelled and hasNotCancelled return a boolean result
* Change update username API call
The call no longer requires a password and also validates the username.
* Implement API call to verify username without setting it
* Improve coding style
* Apply username verification to registration
* Update error messages
* Validate display names.
* Fix API early Stat Point allocation (#10680)
* Refactor hasClass check to common so it can be used in shared & server-side code
* Check that user has selected class before allocating stat points
* chore(event): end Ember Hatching Potions
* chore(analytics): reenable navigation tracking
* update bcrypt
* Point achievement modal links to main site (#10709)
* Animal ears after death (#10691)
* Animal Ears purchasable with Gold if lost in Death
* remove ears from pinned items when set is bought
* standardise css and error handling for gems and coins
* revert accidental new line
* fix client tests
* Reduce margin-bottom of checklist-item from 10px to -3px. (#10684)
* chore(i18n): update locales
* 4.61.1
* feat(content): Subscriber Items and Magic Potions
* chore(sprites): compile
* chore(i18n): update locales
* 4.62.0
* Display notification for users to confirm their username
* fix typo
* WIP(usernames): Changes to address #10694
* WIP(usernames): Further changes for #10694
* fix(usernames): don't show spurious headings
* Change verify username notification to new version
* Improve feedback for invalid usernames
* Allow user to set their username again to confirm it
* Improve validation display for usernames
* Temporarily move display name validation outside of schema
* Improve rendering banner about sleeping in the inn
See #10695
* Display settings in one column
* Position inn banner when window is resized
* Update inn banner handling
* Fix banner offset on initial load
* Fix minor issues.
* Issue: 10660 - Fixed. Changed default to Please Enter A Value (#10718)
* Issue: 10660 - Fixed. Changed default to Please Enter A Value
* Issue: 10660 - Fixed/revision 2 Changed default to Enter A Value
* chore(news): Bailey announcements
* chore(i18n): update locales
* 4.62.1
* adjust wiki link for usernameInfo string
https://github.com/HabitRPG/habitica-private/issues/7#issuecomment-425405425
* raise coverage for tasks api calls (#10029)
* - updates a group task - approval is required
- updates a group task with checklist
* add expect to test the new checklist length
* - moves tasks to a specified position out of length
* remove unused line
* website getter tasks tests
* re-add sanitizeUserChallengeTask
* change config.json.example variable to be a string not a boolean
* fix tests - pick the text / up/down props too
* fix test - remove changes on text/up/down - revert sanitize condition - revert sanitization props
* Change update username API call
The call no longer requires a password and also validates the username.
* feat(content): Subscriber Items and Magic Potions
* Re-add register call
* Fix merge issue
* Fix issue with setting username
* Implement new alert style
* Display username confirmation status in settings
* Add disclaimer to change username field
* validate username in settings
* Allow specific fields to be focused when opening site settings
* Implement requested changes.
* Fix merge issue
* Fix failing tests
* verify username when users register with username and password
* Set ID for change username notification
* Disable submit button if username is invalid
* Improve username confirmation handling
* refactor(settings): address remaining code comments on auth form
* Revert "refactor(settings): address remaining code comments on auth form"
This reverts commit 9b6609ad646b23d9e3e394c1856f149d9a2d0995.
* Social user username (#10620)
* Refactored private functions to library
* Refactored social login code
* Added username to social registration
* Changed id library
* Added new local auth check
* Fixed export error. Fixed password check error
* fix(settings): password not available on client
* refactor(settings): more sensible placement of methods
* chore(migration): script to hand out procgen usernames
* fix(migration): don't give EVERYONE new names you doofus
* fix(migration): limit data retrieved, be extra careful about updates
* fix(migration): use missing field, not migration tag, for query
* fix(migration): unused var
* fix(usernames): only generate 20 characters
* fix(migration): set lowerCaseUsername
* - updates a group task - approval is required
- updates a group task with checklist
* add expect to test the new checklist length
* - moves tasks to a specified position out of length
* remove unused line
* website getter tasks tests
* re-add sanitizeUserChallengeTask
* change config.json.example variable to be a string not a boolean
* fix tests - pick the text / up/down props too
* fix test - remove changes on text/up/down - revert sanitize condition - revert sanitization props
* shared model for chat and inbox
* disable inbox schema
* inbox: use separate model
* remove old code that used group.chat
* add back chat field (not used) and remove old tests
* remove inbox exclusions when loading user
* add GET /api/v3/inbox/messages
* add comment
* implement DELETE /inbox/messages/:messageid in v4
* implement GET /inbox/messages in v4 and update tests
* implement DELETE /api/v4/inbox/clear
* fix url
* fix doc
* update /export/inbox.html
* update other data exports
* add back messages in user schema
* add user.toJSONWithInbox
* add compativility until migration is done
* more compatibility
* fix tojson called twice
* add compatibility methods
* fix common tests
* fix v4 integration tests
* v3 get user -> with inbox
* start to fix tests
* fix v3 integration tests
* wip
* wip, client use new route
* update tests for members/send-private-message
* tests for get user in v4
* add tests for DELETE /inbox/messages/:messageId
* add tests for DELETE /inbox/clear in v4
* update docs
* fix tests
* initial migration
* fix migration
* fix migration
* migration fixes
* migrate api.enterCouponCode
* migrate api.castSpell
* migrate reset, reroll, rebirth
* add routes to v4 version
* fix tests
* fixes
* api.updateUser
* remove .only
* get user -> userLib
* refactor inbox.vue to work with new data model
* fix return message when messaging yourself
* wip fix bug with new conversation
* wip
* fix remaining ui issues
* move api.registerLocal, fixes
* keep only v3 version of GET /inbox/messages
* rename hasAccess to canJoin for challenges
This is so the function won't be used accidentally for other
purposes, since hasAccess could be misinterpretted.
* add isLeader function for challenges
* allow challenge leader to join/modify/end challenge when they're not in the private group it's in
* delete duplicate test
* clarify title of existing tests
* add tests and adjust existing tests to reduce privileges of test users
* fix lint errors
* remove pointless isLeader check (it's checked in canJoin)
* new inbox client
* add tests for sendPrivateMessage returning the message
* update DELETE user message tests
* port v3 GET-inbox_messages
* use v4 delete message route
* sendPrivateMessage: return sent message
* fix
* prevent quest progress message in party chat when user is resting in the inn
* improve comment
* update tests now that the test group includes a new member (sleeping quest participant)
* adjust a test to fix lint failure (and make the test better)
* fix order of element assignments in test array
* remove commented-out code for purging PMs - no longer needed
https://github.com/HabitRPG/habitica/issues/7940#issuecomment-406489506
* adjust comments
* move cron code when sleeping / resting back into main body of cron code
* rename tests to use consistent terminology for sleeping
* add tests for cron when user is sleeping
* move sleeping tests to same place as non-sleeping test
This matches how the code has sleeping and non-sleeping code mingled.
* replace a broken test with new tests
The deleted test wasn't working correctly. The check that the user's
health hadn't decreased would have worked even if the user wasn't
sleeping because the Daily had been marked completed.
The new tests test both no damage from incomplete Dailies and
that Dailies are reset.
* add tests for Perfect Day buff and rename existing tests for consistent terminology
* remove old test code
* Fixing healing light not being castable on server and client sides when user has already full health
Adding integration test for spell cast of healing light when full health
Adding test for heal cast if user has full health
* Fixing ESLint syntax in the spells test files
* Added mute end date
* Added indefinite mute for users using slurs
* Fixed user reload. Added no longer muted message. Added format for date
* Fixed lint
* remove duplicate module.exports statement
* remove commented-out footer in Slack slur notification
There's no need for anything to replace this footer.
* swap order of flag actions to put most critical first
This causes moderators to be notified before the flagged message's flagCount is incremented, because if something happens to prevent the flagGroupMessage Promise from resolving, we still want to mods to see the notification.
* limit chat message flagging ability for new players
Players who created accounts less than three days ago can flag posts
but that does not contribute to the posts' flagCount. This prevents
a troll from maliciously hiding innocent messages by creating new
accounts to flag them.
* add tests
* fix other tests
* WIP - prevent multiple notifications
* merge promises to one
* update test, iterate each user
* revert changes in `groups.js` - filter duplicate notifications in `convertNotificationsToSafeJson`
* Fix joinedChallenge achievement being awarded when creating a challenge
* Modify test to check that achievement is not awarded for creating a challenge
* WIP(groups): add shared completion prop
Also fix an issue where the Needs Approval toggle would not read/save
correctly.
* fix(groups): save group options on task create
Also, correct count of assigned members when viewing user is among
assignments
* fix(groups): display correct messages in two places
* fix(tasks): eliminate console error related to filtering
Also localize a group plans string
* WIP(groups): implement single completion for approval workflow
* WIP(groups): Add shared completion handling to no-approval-needed flow
* WIP(groups): cover approval flow case for all-assigned
Also save new field on initial task creation
* fix(tasks): use default sharedCompletion value when creating tasks
* WIP(tests): non-working draft test
* Added completed todo to group query
* WIP(group-tasks): fix bugs, add tests
* refactor(group-tasks): deleteMany op, add more tests
* refactor(group-tasks): move shared completion handling to lib
* WIP(group-tasks): broken refactor
* WIP(group-tasks): await all the things
* Turned complete master task to save
* WIP(group-tasks): show completed
* fix(filtering): don't try to filter if no list is passed
* refactor(group-tasks): load completed to-dos on demand, not at start
* fix(group-tasks): don't double up on repeat visits
* fix(group-tasks): include brief explanation in dropdown
* fix(group-tasks): improve wording some more
* fixing typos in comments. yes, I am that kind of nerd
* replacing push-notify with node-apn in deps and in pushNotifications.js
* updating calling code and tests to use node-apn
* updating APN configs to new format
* migrating team ID and key ID to config.json
* update code to use env variables and add correct topic
* 10282: Added code for blocking party and guild invitations from blocked players, added tests
* 10282: fixed test label
* Update POST-groups_invite.test.js
removed `it.only` which was used for testing
* initial refactor
* add scoredUp and scoredDown values for habits history entries, one entry per habit per day
* fix lint and add initial migration
* update old test
* remove scoreNotes
* dry run for migration
* migration fixes
* update migration and remove old test
* fix
* add challenges migration (read only)
* fix challenges migration
* handle custom day start
* update tasks in migration
* scoring: support cds
* add new test
* add timestamp to moderator Slack messages
* fix test errors
* import moment, condense formatting
* add timestamp to author_name variable
* update test to include timestamp, fix footer matching
* change ISODate to Date
* update test to include timestamp
* Fixes asynchronous cron bug that allows cron to run twice for a user within seconds of eachother.
fixes#8991
* Fixing tests.
* Updating assignment to keep user and res.locals.user in sync.
* Revert commenting out some cron subscription tests
This reverts commit 47c488967c.
We're going to properly fix these tests, so let's start by reverting the
commit that temporarily disabled these tests in the first place.
Signed-off-by: aszlig <aszlig@nix.build>
* tests/cron: Fix restoring clock on test failure
Ah, the joys of global state... >:-(
Whenever some test failed which has mocked the time using
useFakeTimers(), other test that are run after that test would fail (or
even time out) as well, which is a bit confusing to debug.
Some of the tests even had a cleanup routine in afterEach() but most of
them didn't, so I rearranged them in a way so that we have a clock
variable for *all* of the subtests, which initially is null and then a
cleanup handler (also for *all* of the subtest) calls clock.restore() if
the value isn't null.
In order to avoid calling clock.restore() twice, I have removed all the
clock.restore() calls at the end of the tests setting the clock to a
specific value.
Signed-off-by: aszlig <aszlig@nix.build>
* tests/cron: Fix test for 3-month gift subscription
So this is the actual culprit of the test failures that emerge during
the first two days of a month:
The test group "for a 3-month gift subscription (non-recurring)" creates
a User object available for every test case, which has a subscription
for 3 months beginning at the current time/date.
During each test case the fake timer is set to the second day of the
month to be tested. For the first and second month it's unproblematic
because the subscription is still active, no matter whether the
dateTerminated is set to the first day or the last day of a month.
However, the third month is problematic here, because whenever the
subscription lasts until the first day of the third month it has already
ended after the second day and thus the test fails because the actual
implementation of cron sets plan.consecutive.count to zero (which is
what it's supposed to do).
In order to fix this, I've set dateTerminated for the User object to the
15th of the current month so the subscription lasts long enough to not
trigger the test failure (and also make time zones irrelevant, because
right now there is no TZ offset which is more than half of a month,
especially not while running the test suite).
Signed-off-by: aszlig <aszlig@nix.build>
* remove parallel saves from the code
* fix more unit tests
* do not save users when sending message in buyGift (saved later)
* fix test
* reinstall
* fix tests
* fix tests
* removing duplicate translation key
* fixing typos
* extracting quest prerequisite check. adding check for previous quest completion, if required
* fixing (undoing) static change, adding tests
* more typos
* correcting test failures
* honoring quest prerequisites in quest invite API call. updating format of il8n string replacement arg
* no longer using apiError, use translate method instead (msg key was not defined)
* adding @apiError to docblock as requested in issue
* removing checks on quest invite method. small window of opportunity/low risk
* feat(gdpr) only store necessary data for social login
* feat(gdpr) also store email for social users
* fix(social auth): store emails array instead of single email
* fix(emails): do not get name from old facebook info
* add migration to remove extra data from social profiles
* update migration description
* fix tests
* fix typo in migration file
* fix(challenges): creator should not join challenge automatically
* change behavior on the client side as well
* update tests and fix membercount
* update tests
* fix tests