* 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
Some tests were disabled in ba799c67f9 and
10567d81e2, because they tend to
frequently time out after 8 seconds.
Instead of disabling the tests (which IMHO is bad, because tests are
there for a reason), we're now increasing the timeout to 30 seconds just
for these tests.
As requested by @paglias, I've marked the timeout functions with a @TODO
comment, so that the slow tests or the functionality they're testing are
eventually refactored.
I also needed to change the arrow notation for the test cases to use the
function keyword, because otherwise we don't have this.timeout()
available.
Signed-off-by: aszlig <aszlig@nix.build>
Cc: @paglias
* Rarranged payment index functions
* Moved gem function
* Increased buy gems test coverage
* Reduced length of functions. Reduced cognitive complexity
* remove inbox from user/stats routes
* remove inbox from news routes
* change signature for authWithHeaders
* do not load inbox in coupons routes
* do not load inbox in challenge routes
* do not load inbox in some members routes
* do not load inbox in chat routes
* begin implementing global webhooks
* add checklist item scored webhook
* add pet hatched and mount raised webhooks (no tests)
* fix typo
* add lvl up webhooks, remove corrupt notifications and reorganize pre-save hook
* fix typo
* add some tests, globalActivity webhook
* fix bug in global activiy webhook and add more tests
* add tests and fix typo for petHatched and mountRaised webhooks
* fix errors and add tests for level up webhook
* wip: add default data to all webhooks, change signature for WebhookSender.send (missing tests)
* remove unused code
* fix unit tests
* fix chat webhooks
* remove console
* fix lint
* add and fix webhook tests
* add questStarted webhook and questActivity type
* add unit tests
* add finial tests and features
* Fix challenges export CSV error by checking that users still belong to challenge
* Add test for challenge csv export fix
* Update fix for challenge export CSV bug
* Update tests for challenge export CSV to be more complete
* Refactor a test: change some 'let' variables to 'const'
* Began moving group chat to separate model
* Fixed lint issue
* Updated delete chat with new model
* Updated flag chat to support model
* Updated like chat to use model
* Fixed duplicate code and chat messages
* Added note about concat chat
* Updated clear flags to user new model
* Updated more chat checks when loading get group
* Fixed spell test and back save
* Moved get chat to json method
* Updated flagging with new chat model
* Added missing await
* Fixed chat user styles. Fixed spell group test
* Added new model to quest chat and group plan chat
* Removed extra timestamps. Added limit check for group plans
* Updated tests
* Synced id fields
* Fixed id creation
* Add meta and fixed tests
* Fixed group quest accept test
* Updated puppeteer
* Added migration
* Export vars
* Updated comments
* Added more tests for verifyGemPurchase
* Added more tests for subscribe
* Added user is subscribed check
* Reverted gulp task
* Added existence check
* Client POC
We need to wrap each draggable region it its own div or else the
"draggable" element will conflict with each other. This screws up the
styling but that is totally fixable
* Ah that ref was being used after all, changing back
* Scaffold out a new callback for when we drag these things
Next is going to be the hard part: I need to save the sort order for
these to the database. I don't even know if there is a schema but hey
this is the best place to start
* Firefox caching is the problem: don't actually need the wrapper div
So I guess I should try this in chrome and see how it works then come
back to firefox and figure out what the heck is going on
* Scaffolding out our API call to save the sort order
The endpoint doesn't exist yet so we will need to add that
* Ok we are now calling our API endpoint to reorder these things
Of course it doesn't exist yet so you get a 404 when you try, but that
is ok
* Defining api endpoint, a work in progress
In particular I really had ought to use _id for these too, it appears
that the primary way we detect order doesn't even use "key" at all.
* Switching to using the pinned item UUID
This has much better results, but of course the server and client logic
don't match now. Will have to keep working on my splice to make sure
that they are the same
* I thought this would fix our server/client mismatch but it is not it
Something is really wrong with my logic somewhere, maybe I need to
update the db step?
* Moving this logic to the "user" rather than "tasks" and key off path
Path is unique and is less finiky than dealing with string comparisons
with ids. Unfortunately everything is still not working... I suppose
user.update() doesn't care about the position?
* This client code caused quite a lot of problems if you dragged fast
We don't really need it it seems, so off it goes
* Updating markup and CSS so it actually looks good.
Everything is working horray!!
I did just notice the following bug: the popover text sometimes makes it
very annoying to drag because you can't drop over it@
* Cleaning up my comments in the API section user.js
I had a lot of TODOS that are mostly done now
* Fixing a spacing code standards thing
* Turns out we never use type, so we should remove this from the API call
* Adding pinnedItemsOrder into the user schema
And disabling my call in the frontend before I do any more damage
* Halfway to using pinnedItemsOrder
This isn't working yet but it is not going to break it horribly like it
was before.
* Hooking up inAppRewards to always produce sorted information
It is suspicially working right now even though I have not added the
seasonal stuff logic yet...
* Updating the comments in user.js in movedPinnedItem
It turns out that my bandaid fix to just get the ball rolling perfectly
does what I need it to do when we have a length discrepancy. So we are
getting much closer to the final product, just need lots of testing
* Cleaning up code standards kinds of things
* Yay, this fixes the popover issue
I hope this is the right "vue" way to do things, because I tried a bunch
of other things that definately were not the right way to do it. And
this appears to work too
* ** Partial Work ** Starting tests on api call for draggable items
Doesn't work, doesn't compile so don't include in PR!
* Test failing still...
This is worth a save. The api call grabs the seasonal items too, so we
can't get away from using the common functions and calls here to get the
actual list of items
* Okay have the first test passing
Need to clean up my linter problems though
* Planning out the next two tests and fixing my format problems
* 2nd Test case written, this time with the "more" odd case
* Making sure that we didn't mess with pinned items
* Huh... this test doesn't give me the expected result
Drat, I guess I found a bug
* Throw an error when we put garbage in our api call.
Well, before we got user.pinnedItemsOrder filled with a bunch of "null"
entries which is not ideal. it still worked, but isn't this confusing
enough already?
* Cleaning up the multitude of linting problems thanks gulp :)
* Writing tests for inAppRewards.js, but something is wrong
* Fixing my linting errors in inAppRewards tests
These tests still do not run though, so they may fail and I would not
know
* Applying Negue's fixes to inAppRewards.js test
It never occured to me that we shouldn't try to reach the database while
in the common tests. Well, we shouldn't do that, we should use the
common.helpers instead. Thanks!
* protect all paths in user.pre(save using this.isDirectSelected to see if a field is available
* fix linting
* authWithHeaders: specify user fields to exclude instead of the ones to include, add comments, doc and improve test
* add more options to unit helper generateReq and add tests for excluding fields in authWithHeaders
* remove removePunctuationFromString function from test code
It's not needed now that the test banned words don't contain underscores.
* prevent tests accidentally throwing messageGroupChatSpam
This commit makes the user for most tests have contributor tiers so
that the user can't trigger the messageGroupChatSpam error message
(for posting messages too quickly).
This is useful when some of the tests fail due to broken code
because that makes more messages be posted than expected. If the user
doesn't have tiers, the messageGroupChatSpam error message would be
triggered, which gives misleading information about the test failure.
* add tests for banned swear and slur words posted in mixed case
* allow banned word error message to show bad words in the same case the user typed them
* stop using randomly-chosen real banned words in tests
The test modified in this commit had been using real banned words,
which meant that those words were being displayed to the contributors
when the test failed.
NB the 'check all banned words are matched' test also uses the real
banned words but the test failure messages don't show the words.
* improve translatability of bannedWordUsed error message
* allow Hourglasses and gemCapExtra to increase promptly after a multi-month subscription has renewed
* fix existing Hourglass and Gem Cap tests that were wrong
The scenario originally used for these two tests was a six-month recurring
subscription (you can tell that from the starting offset having a non-zero value).
For recurring subscriptions, we do NOT want to increase the consecutive month
benefits as soon as the sixth month starts because the user has already been
given a full six months' benefits in advance and they might cancel the
subscription before it renews later in the sixth month.
Therefore we want to give the extra benefits at the beginning of the seventh
month (ideally we'd give them mid-month in the sixth month when the renewal
happens but we don't have support for tracking renewal dates).
So, the two changed tests were actually not correct for the case
where the offset started as non-zero.
These tests are correct for one-month recurring subscriptions (when the offset
is never set to anything above zero). The user isn't meant to get any consecutive
month benefits until a multiple of 3 months has been reached.
* add tests for one-month recurring subscription before 3x months are reached
* add tests for 3-, 6-, and 12-month recurring subscriptions
The 3-month tests are the most thorough, stepping through the
expected start and end values of consecutive data for a 7-month
range.
The 6-month tests are a bit less thorough since the same code is
used for all multi-month periods.
The discount Google subscription code is used to ensure we keep
support for it.
The 12-month tests are less thorough still, since again the same
code is used.
I'm about to try some more tests with `useFakeTimers`, which should
be a better way to test the code since they won't rely on me having
set the initial values correctly for each test. :) But I wanted to
work through these cases manually first to ensure my understanding
of how the values should change does actually match the code.
* add tests for 1-, 3-, 6-, and 12-month recurring subscriptions using clock changes to simulate passing months
Also fixed the clock call in an unrelated test because it was forming
the date incorrectly (`unix()` can't be used to create a date).
Also changed email@email.email to email@example.com because
email@email.email is potentially a real email address.
* add tests for 3-month gift subscriptions - no extra consecutive benefits given
* add tests for consecutive benefits for 6-month recurring subscription that has incorrect consecutive month data because it started before issue #4819 was fixed
* fix lint errors
* remove outdated subscription tests
* problem location identified (breaks code)
* problem identification notes
* Add class checking to ES (does not yet notify user)
* Add error message
* Add .gitattributes
Attempting to fix line ending disaster
* package stuff
so I can see what's broken
* add reminder and hopefully fix gitattributes
* Fix lint errors
* Redo surge fail notifs
* exterminate rogue comment, fix gitattributes
* Remove unused import
As per @paglias' request.
* fix(lint): remove extraneous expression
* Delete .gitattributes
* Fix skill key surge -> mpheal
* Show notification only when there are mages in party
* Fix notification being too big and appearing outside the notification div
* Remove unused code
* Only show the notification on parties with 2 or more mages
The caster is a mage, so certainly at least 1 mage will be counted.
* Automated test: mpheal does not heal other mages
* Fix lint error
* Fix typo in test description
* Increase performance of test
* Using target instead of requestion partyMembers again
* Rename variable 'party' to 'partyMembers'
* Update strings in English
* spell -> Skill
* Adding check to give master classer acheivement on any master classer series quest completion
fixes#9461
* Fixing concat bug by assigning the variable after concatenation.
* Fixing retry query.
* downcase updating an email to be consistent with creating
* add tests to ensure downcase of email for create/update
* create migration to downcase existing User objects
* delete 'only'
* change gmail to example
* add trailing comma from lint error
* search for emails with at least one capital letter
* fix query in order to search for any email with at least one capital letter
* batch process effected users with at least one capital in email
* update script for batch process effected users
* Updated from origin and added invite error fixes
* Update test for capitalization issue
* New error display
Changed app.vue to display error message using error.response.data.message
* feat(world-boss): barebones API
* fix(world): use Express respond for better JSON
* fix(api): respond with code 200
* feat(content): canonical Dysheartener desc and Rage
* fix(world-boss): enable progress
* WIP(test): world state API
* WIP(test): refactor world boss setup
* WIP(test): better expectations
* fix(test): more expect polishing
* feat(event): server side World Boss
* fix(strings): accidental deletion
* fix(content): include encouragement after Rage
* refactor(world-boss): address comments
* testing additional event trigger for sendMessage
* moved keyup event to newmessage
* added keyup event to tavern vue too
* all food items now have version with definite and indefinite article. foodText also adapted in messages json
* modified api.food, and feed, armoire and drop mechanism
* drops now ok, removed dropArticle, corrected feed test
* test correction
* api doc modification for task completion
* Added cache for user styles on chat
* Added loading on new message and other minor checks
* Added null checks
* Updated chat tests
* Added costume preference to chat
* Removed single profile cacheing for new chat messages
* Remove owned gear from cache
* Updated stats to only use buffs
* Added initial bailey api
* wip
* implement new panel header
* Fixed lint
* add ability to mark notification as seen
* add notification count, remove top badge from user and add ability to mark multiple notifications as seen
* add support dismissall and mark all as read
* do not dismiss actionable notif
* mark as seen when menu is opened instead of closed
* implement ordering, list of actionable notifications
* add groups messages and fix badges count
* add notifications for received cards
* send card received notification to target not sender
* rename notificaion field
* fix integration tests
* mark cards notifications as read and update tests
* add mystery items notifications
* add unallocated stats points notifications
* fix linting
* simplify code
* refactoring and fixes
* fix dropdown opening
* start splitting notifications into their own component
* add notifications for inbox messages
* fix unit tests
* fix default buttons styles
* add initial bailey support
* add title and tests to new stuff notification
* add notification if a group task needs more work
* add tests and fixes for marking a task as needing more work
* make sure user._v is updated
* remove console.log
* notification: hover status and margins
* start styling notifications, add separate files and basic functionalities
* fix tests
* start adding mystery items notification
* wip card notification
* fix cards text
* initial implementation inbox messages
* initial implementation group messages
* disable inbox notifications until mobile is ready
* wip group chat messages
* finish mystery and card notifications
* add bailey notification and fix a lot of stuff
* start adding guilds and parties invitations
* misc invitation fixes
* fix lint issues
* remove old code and add key to notifications
* fix tests
* remove unused code
* add link for public guilds invite
* starts to implement needs work notification design and feature
* fixes to needs work, add group task approved notification
* finish needs work feature
* lots of fixes
* implement quest notification
* bailey fixes and static page
* routing fixes
* fixes # this.$store.dispatch(guilds:join, {groupId: group.id, type: party});
* read notifications on click
* chat notifications
* fix tests for chat notifications
* fix chat notification test
* fix tests
* fix tests (again)
* try awaiting
* remove only
* more sleep
* add bailey tests
* fix icons alignment
* fix issue with multiple points notifications
* remove merge code
* fix rejecting guild invitation
* make remove area bigger
* fix error with notifications and add migration
* fix migration
* fix typos
* add cleanup migration too
* notifications empty state, new counter color, fix marking messages as seen in guilds
* fixes
* add image and install correct packages
* fix mongoose version
* update bailey
* typo
* make sure chat is marked as read after other requests
* Added clone api
* Added new clone UI
* Fixed challenge clone
* Fixed lint and added mongo toObject
* Removed clone field, fixed type, fixed challenge task query
* Auto selected group
* Accounted for group balance when creating challenge
* Added check for if user is leader of guild
* Added leader existence check
* Added fix for leader and prizecost equal to
* Sleep status is tracked by analytics when toggled.
* Modify test: test that analytics is called with 'sleep' event and data passed includes the user's new sleep status
* update API comments to for `username` restrictions and to use Login Name terminology
We use "login name" rather than "username" in user-visible text
on the website and (usually) when communicating with users because
"username" could be confused with "profile name".
Using it in the docs allows you to search for that term.
* add alphanumeric and length validation for creating new login name (username)
The 'en-US' locale is specified explicitly to ensure we never use
another locale. The point of this change is to limit the character
set to prevent login names being used to send spam in the Welcome
emails, such as Chinese language spam we've had trouble with.
* add error messages for bad login names
* allow login name to also contain hyphens
This is because our automated tests generate user accounts using:
let username = generateUUID();
* allow login names to be up to 36 characters long because we use UUIDs as login names in our tests
* revert back to using max 20 characters and only a-z, 0-9 for login name.
It's been decided to change the username generation in the tests instead.
* disable test that is failing because it's redundant
Spaces are now prohibited by other code.
We can probably delete this test later. I don't want to delete it
now, but instead give us time to think about that.
* fix typos
* revert to login name restrictions that allow us to keep using our existing test code
I'm really not comfortable changing our test suite in ways that
aren't essential, especially since we're working in a hurry with
a larger chance than normal of breaking things.
The 36 character length is larger than we initially decided but
not so much larger that it's a huge problem.
We can reduce it to 20 when we have more time.
* limit username length to 20 chars
* fix tests
* feat(promo): Buy-1-Get-1 Gift Subs
* feat(promo): add explanatory text to subscription screens
Also adds some add'l test coverage and creates a test context for this event
* Added notification for when leader is updated
* Abstracted challenge member search component
* Added challenge member search modal to challenge detail
* Added group search
* add another check if previous gear is owned
* respect gear purchase order
* catch error with miscalculation of equipment number floor
* add integration test for proper equipment purchasing order
* fix syntax
* add 'previousGearNotOwned' string
* rewrite logic for different starting levels for wep vs others
* separate and add tests for armor and weapon
* rename variable for clarification
* skip check if itemIndex is NaN
* change obscure NaN check for readability
* change conditional from checking NaN to Int
* Validate that everyX values are integers bounded by 0 and 9999
* Added client side check
* Updated tests
* Added migration for bad dailies
Near idential to the other task migration.
* fix(typo): camelCase function call
* Fixed bug that allows users to complete todo and daily multiple times
* Added tests
* Fix syntax
* Fix existing tests that rely on multiple complete or uncomplete
* Undoes removal of website/client/README.md
* Change sessionOutdated string to reflect separate client needs
* Fix should update history test by changing lastCron
* Updated userItemsNotEnough string
* Added a variable to be passed to the deleteSocialAccountText string. This variable name is `magic_word` and is set as DELETE where used
* modified incorrectDeletePhrase to use a variable rather than translatable string for the word DELETE. Updated the DELETE-user test and the user api
* Changed noSudoAccess from translatable string to static
* Changed enterprisePlansEmailSubject from a translatable string to a static string within groupPlans.vue
* Fixed test problems with translation fixes
* Added no sudo access string to api messages
* changed plain string to apiMessage for no sudo access messages
* Remove flag from system messages, throw an error if system messages are flagged
* Modify unflag system message test to check if flagging a system message throws an error
* Move email from nconf to top
* allow banned word / swearword blocker to apply to all public guilds, with specified exceptions
* add another guild
* add more guilds to those that do not have the bannedWords blocker applied
* fix lint errors
* start to fix modals
* fixed cards paddings
* fix notifications not being marked as read
* add tests for reading a notification
* fixed indentation and added tests for reading multiple notifications
* register from home page using enter key
* test get party challenges by party ID
* tavern challenge tests; failing tests with ID 'party' or 'habitrpg'
* allow finding challenges by groupid 'party' or 'habitrpg'
* use single quotes in strings
* Changes made to satisfy #8163. _cronSignature is set to current time when cron starts so that if cron fails to set _cronSignature to 'NOT_RUNNING' for any reason a new cron can be started after a set amount of time (1 hour for now)
* fix lint errors
* changed cronTimeout to CRON_TIMEOUT
* Changed variable names and comments to be more clear
* Fixed stub for failing test so that it matches new mongo db update call signature
* First pass at unit tests, error messages and some other things need to be determined
* Fixed a tab that snuck in :/
* Fixed lint issues (issues with spaces)
* Fix infix operator spacing
* Created constant. Make sure cron failure test verifies that it is failing for the right reason
* Fixed lint errors
* Removed no longer used uuid import
* fix(sprites): serve animated GIFs
Also add new GIF for upcoming quest line
* feat(content): Masterclasser capstone quest
Also fixes Quests page for clearer lock/unlock display
* chore(sprites): compile
* feat(achievements): award quest completionist cheevo
* feat(quests): Siphoning Void
fix Achievements page styling and text spacing
fix display of Rage bar on party page
* test(quests): Lost Masterclasser
* chore(news): Bailey
* fix(test): only use Masterclasser in relevant scenario
* move emails images to website/static/emails and remove old files
* remove old client tests
* remove more files
* add sprites back
* cleanup gulp
* cleanup gulp
* remove old files
* more fixes
* pin bootstrap-vue
* disable old test
* remove old tasks
* fix apidoc
* Added removing invites
* Addeed messages for empty gems to icon
* Added member for challenge members
* Fixed task cloning ending
* Fixed group task assignment
* Added small hack to prevent scrolling issues
* Fixed lint
* start work on porting the reset password page
* add new api route for setting a new password after a reset
* wip client page
* port tests
* wip
* fix linting
* skip tests
* remove excess brace on settings > subscription screen
* prevent User icon > Settings > Subscription page from crashing when subscription has termination date
* stop subscription modal from pitching subscription to a subscriber
* change placeholder text from Username to Login Name for consistency with other login/register forms
* fix test for POST-tasks_user -- streak and dateCompleted weren't being tested correctly
* prevent tag selector from appearing in edit screen for a challenge's own tasks
* restore Restore Streak when editing a user's Dailies (including their own copies of Challenge and Group Plan Dailies)
* remove failing streak test
* Added flagging to show to admins
* Fixed filters in my guilds
* Fixed login incentives style
* Added inital rage bar
* Added categoires to get group
* Updated profile stats page
* Added stat allocation
* Updated tests to include categoires
* Fixed lint issue
* Added another lint fix
* Links stay white on hover
* Fixed task icon color
* Disabled plus button when needed
* Fixed difficulty color
* Fixed task reward color
* Updated create styles
* Fixed group plan link
* Fixed second group test modal
* Added login incentives
* Fixed group notification clear
* Show baily correctly
* Styled armoire notification
* Fixed contributor achievement styles
* Fixed death
* Fixed drop styles
* Fixed invited friend modal
* Fixed joined challenge achievement style
* Fixed joined guild style
* Fixed level up styles
* Updated low health styles
* Fixed bailey styles
* Updated quest completed
* Added soem conditionals to hide modals
* Added rebirth styles
* Fixed rebirth enable styles
* Fixed streak styles
* Fixed testing modals
* Fixed ultimate gear achievement
* Fixed won challenge
* Set user to welcomed if created on mobile
* Removed old default tasks
* Began adding more options to avatar
* Added change class
* Inbox to messages
* Moved profile to menu
* Added user modal for viewing a user and send message
* Fixed conversations
* Fixed lint
* Fixed challenges sending to server
* Added challenge progress view
* Fixed group sync after pay
* Fixed some group accepting features
* Fixed initial chat loading
* Fixed some exitence errors
* Added user names to assigned
* Added upgrade link
* Began adding new payment flow
* Added default tasks
* Updated avatar styles
* Updated tutorial styles
* Rebuilt notifications and styles
* Updated upload script
* Fixed lint
* Added default tasks back to mobile and added updated tests
* More test fixes
* create new summary field for challenges
* finish implementating summary for challenges, add some support for guilds
* make small improvements to challenges code
* fix lint errors
* add more code to support summaries for guilds (still more needed)
* fix existing tests by adding summary field
* make existing tests pass
* WIP make "Public Challenges" text translatable
* change "leader" locale key to "guildOrPartyLeader" to make searches for it easier
* remove v-once from h2 headings
* remove failed attempt to localise text in <script>
* add quick-and-dirty error checking for guild not having categories
* make "Public Challenges" text translatable
* rename final ...PlaceHolder strings to ...Placeholder (lower-case "h") for consistency with existing Placeholder strings
* Forced full refresh after deletE
* Fixed styles on firefox
* Removed instagram link
* Added information to modal
* Fixed deleteing and task keeping
* Added redirect to challenge detail after created
* Updated challenge item styles
* Added new limit option to challenges
* Fixed some purchasing issues with backgrounds
* Added more background styles
* Fixed some menu styles
* Initial old client removal
* Added cross-env
* removed bower and fixed lint
* Made interceptor errors use notify
* Removed old client tests and fixed lint
* Added stripe payment for group plan
* Began adding amazon
* Added amazon payments for group
* Added get group plans route
* Added group plan nav
* Added initial task page
* Added create and edit group plans
* Added initial approval header and footer
* Added assignment and approved requirement
* Added minor text fixes
* Added inital approval flow
* Added approval modal
* Removed always true
* Added more styles for filters
* Added search
* Added env vars
* Fixed router issues
* Added env to social login
* Fixed merge conflict
* issue 8812 - added the list of bad words matched to the postChat error message.
* issue 8812 - added the list of bad words matched to the postChat error message.
* issue 8812 - some refactoring, fixed relevant tests, and lint rules refactor
* small fix for unnecessary empty array
* added test and did some small refactoring
* lint error fix
* issue 8812 - added the list of bad words matched to the postChat error message.
* issue 8812 - some refactoring, fixed relevant tests, and lint rules refactor
* small fix for unnecessary empty array
* added test and did some small refactoring
* lint error fix
* add test to check the error message contains the banned words used
* improve banned words test
* issue 8812 - added the list of bad words matched to the postChat error message.
* issue 8812 - some refactoring, fixed relevant tests, and lint rules refactor
* small fix for unnecessary empty array
* added test and did some small refactoring
* lint error fix
* issue 8812 - added the list of bad words matched to the postChat error message.
* issue 8812 - some refactoring, fixed relevant tests, and lint rules refactor
* add test to check the error message contains the banned words used
* improve banned words test
* merge with develop - aligned banned slurs check with banned words check
* Added challenges section
* Added public fields to guilds
* Added suggestion for habitica help guild
* Added categoires to group
* Added guild category filters
* Added guild filter by member count
* Removed console.log
* Updated group count in tests to account for newly created groups
* (server) Add parties array to store invites
* (server) Lint files
* Update joinGroup, rejectGroupInvite, _inviteByUUID, and remove clearPartyInvitation.js
* Update user schema: detailed 'invitations.parties' attributes
* Code improvement and do not let invite twice
* Check if the user is already invited earlier in the code
* Added message to invitation page, and show all invitations
* Added join party confirmation alert
* Small fixes
* Created test: allow inviting a user to 2 different parties
* Updated tests
* Update invitations.parties on more places
* Small adjustments
* Updates on invitations.party references
* Show all invitations when user is already in a party
* Fixed notifications counter
* Update both 'party' and 'parties' at _handleGroupInvitation
* Updated a test
* Fixed small mistake at _handleGroupInvitation
* More test update
* Update invitation.party when removing single invite and small adjust at view
* Added text to locale
* Added achievement to content and libs
* Added achievement modal
* Added achievement to notification model and controller
* Added achievement to user schema
* Grant achievement to inviter when user registers using emailed link
* Fix icon name
* Added integration test
* Fix linting
* Added sprite
* Initial psuedo-code for checking for slurs in messages
* Initial working prototype for blocking posting of slurs. Moved check from group.js to the chat api. Still needs: to permanently revoke chat privileges, to notify the moderators, a better method for checking for the blacklisted words, and a way to get the real list of words to check.
* Permanently revoke chat privileges when attempting to post a slur.
* Removed console logs
* Fixing rebase
* Do not moderate private groups
* Moved slur check to a generic check for banned words function
* Moved list of slurs to a separate file, fixed misplacement of return in ContainsBannedWords() function
* Slurs are blocked in both public and private groups
* Added code to send a slack message for slurs
* Fixed formatting issues
* Incorporated tectContainsBannedWords() function from PR 8197, added an argument to specify the list of banned words to check
* Added initial tests for blocking slurs and revoking chat priviliges
* Uncommented line to save revoked privileges
* Check that privileges are revoked in private groups
* Moved code to email/slack mods to chat api file
* Switched to BadRequest instead of NotFound error
* Restore chat privileges after test
* Using official placeholder slur
* Fixed line to export sendSubscriptionNotification function for slack
* Replaced muteUser function in user methods with a single line in the chat controller file
* Reset chatRevoked flag to false in a single line
* Switched method of setting chatRevoked flag so that it is updated locally and in the database
* First attempt at the muteUser function: revokes user's chat privileges and notifies moderators
* Manual merge for cherry-pick
* Initial working prototype for blocking posting of slurs. Moved check from group.js to the chat api. Still needs: to permanently revoke chat privileges, to notify the moderators, a better method for checking for the blacklisted words, and a way to get the real list of words to check.
* Permanently revoke chat privileges when attempting to post a slur.
* Removed console logs
* Created report to be sent to moderators via email
* Do not moderate private groups
* Moved slur check to a generic check for banned words function
* Moved list of slurs to a separate file, fixed misplacement of return in ContainsBannedWords() function
* Slurs are blocked in both public and private groups
* Added code to send a slack message for slurs
* Fixed formatting issues
* Incorporated tectContainsBannedWords() function from PR 8197, added an argument to specify the list of banned words to check
* Added initial tests for blocking slurs and revoking chat priviliges
* Uncommented line to save revoked privileges
* Check that privileges are revoked in private groups
* Moved code to email/slack mods to chat api file
* Switched to BadRequest instead of NotFound error
* Restore chat privileges after test
* Using official placeholder slur
* Fixed line to export sendSubscriptionNotification function for slack
* Replaced muteUser function in user methods with a single line in the chat controller file
* Reset chatRevoked flag to false in a single line
* Switched method of setting chatRevoked flag so that it is updated locally and in the database
* Removed some code that got re-added after rebase
* Tests for automatic slur muting pass but are incomplete (do not check that chatRevoked flag is true)
* Moved list of banned slurs to server side
* Added warning to bannedSlurs file
* Test chat privileges revoked when posting slur in public chat
* Fix issues left over after rebase (I hope)
* Added code to test for revoked chat privileges after posting a slur in a private group
* Moved banned slur message into locales message
* Added new code to check for banned slurs (parallels banned words code)
* Fixed AUTHOR_MOTAL_URL in sendTxn for slur blocking
* Added tests that email sent on attempted slur in chat post
* Created context for slur-related-tests, fixed sandboxing of email. Successfully tests that email.sendTxn is called, but the email content test fails
* commented out slack (for now) and cleaned up tests of sending email
* Successfully tests that slur-report-to-mods email is sent
* Slack message is sent, and testing works, but some user variables seem to only work when found in chat.js and passed to slack
* Made some fixes for lint, but not sure what to do about the camel case requirement fail, since that's how they're defined in other slack calls
* Slack tests pass, skipped camelcase check around those code blocks
* Fixed InternalServerError caused by slack messaging
* Updated chat privileges revoked error
* fix(locale): typo correction
* Fixed release pets/mounts achievements when fully earned and added unit tests for these changes
* Fixed release pets/mounts achievements to award only when fully earned and added unit tests for these changes, also fixed linting issues
* Updated variable assignments to make more readable
* Revised releaseBoth/Pets/Mounts to include null or undefined checks, also updated unit tests
* fixed integration tests
* For habit reset logic, changed day check calculation to use user’s timezone instead of server time.
Added unit tests to check following cases:
- Weekly habit reset: Server tz is Sunday, User tz is Monday
- Weekly habit reset: Server tz is Monday, User tz is Sunday
- Monthly habit reset: Server tz is 1st of month, User tz is 2nd of month
- Monthly habit reset: Server tz is end of prev month, User tz is 1st of month
* use moment().zone() instead of utcOffset()
* typo
* Fixed check for daysMissed, added logic for CDS
Added test for CDS, fixed previous tests
* add possibility for group to block members from getting gems
* fixes
* fix tests
* adds some tests
* unit tests
* finish unit tests
* remove old code
* Translation string for error notification
* Use function instead of a link for paypal
* Inject notification service, function to check the amount of gems to purchase, function to handle payments with paypal
* Throw error if amount of gems is zero or negative
* Add condition to raise error if amount is negative
* Added gem errors for gifts 0 or less
* Fixed linting and broken test
* Fixed test syntax
* Added back needed strings
* Fixed group locales
* test: test that admin users can update guilds
* test: test admin removeMember privileges
* fix: allow admins to edit guilds
* fix: add edit guild options for admins
* test: test that admin can't remove current leader
* Add error msg for removing current leader
* Taskwoods Quest Line (#8156)
* feat(content): Gold Quest 2016-10
* chore(news): Bailey
* chore(i18n): update locales
* chore(sprites): compile
* 3.49.0
* chore: update express
* Fix for the ReDOS vulnerability
habitica is currently affected by the high-severity [ReDOS vulnerability](https://snyk.io/vuln/npm:tough-cookie:20160722).
Vulnerable module: `tough-cookie`
Introduced through: ` request`
This PR fixes the ReDOS vulnerability by upgrading ` request` to version 2.74.0
Check out the [Snyk test report](https://snyk.io/test/github/HabitRPG/habitica) to review other vulnerabilities that affect this repo.
[Watch the repo](https://snyk.io/add) to
* get alerts if newly disclosed vulnerabilities affect this repo in the future.
* generate pull requests with the fixes you want, or let us do the work: when a newly disclosed vulnerability affects you, we'll submit a fix to you right away.
Stay secure,
The Snyk team
* Documentation - coupon
closes#8109
* fix(client): Allow member hp to be clickable
fixes#8016closes#8155
* chore(npm): shrinkwrap
* test: test isAbleToEditGroup
* Add isAbleToEditGroup to groupsCtrl
* Remove unnecessary ternary
* Fix linting
* Move edit permission logic out to groupsCtrl
* fix: change ternary to boolean
* Fix linting
* Fixed merge issues
* use new email template when subscription is cancelled from joining a group plan
* use new email template when subscription is cancelled from joining a group plan - needs more code, tests
* change from sending new email as a cancel-subscription option to sending as a group plan join email
Uses a new group-member-join email template instead of old group-member-joining because new template includes mandril conditional merge tags.
Also adds tests and comments. Edits some comments for accuracy and typo fixes.
* adapt group-member-join email template for manual cancel message for iOS and Android subscriptions
* save test user so its profile name can be read by calls to sendTxn
* add documentation for the user model cancelSubscription function
* add constants for strings passed to mandrill email templates
* Use “now” for calculation of the subscription end date instead of plan.dateUpdated
* add test to show previously incorrect logic does not affect sub end date.
* Added image
* Added new achievement to user schema
* Added new achievement to content
* Added new achievement to libs
* Added achievement text to locale
* Added achievement to notification model and controller
* Grant achievement on joining or creating first challenge
* Added achievement to modal template
* Compiled new sprites
* Added integration tests
* Fix linting error
* Add card and achievement sprite for Congrats card
* Add data regarding Congrats card
* Add Get Well card
* Add Get Well images
* Add schema
* Remove `if (!target.flags) target.flags = {};` code from cards
* Remove white backgrounds for congrats sprites
* add inital tests for cards
* Fix card tests
* Fix invalid urls in tests
* Update POST-user_class_cast_spellId.test.js
* Update POST-user_class_cast_spellId.test.js
* Update POST-user_class_cast_spellId.test.js
* Update congrats card sprite
* Fix card logic
* Fix user schema
* Change achievement values for new cards to Number
* Resize congrats and getwell cards
This will make them be sized properly
* Separate Market from Drops
* Extract cards to new section
* fix(sprites): revert spritesheet changes
* Add flags if target does not have them
* Make flags.chatRevoked prevent sending private messages (issue #7971)
* Disallow sending gems when messages aren't allowed.
* Created function to check for objections to an interaction to user model and wired it into the API (issue #7971)
* Fixes for issues raised by reviewers.
* Added allowed values to apidoc for api.getObjectionsToInteraction.
* Refactoring of getObjectionsToInteraction and minor API changes.
* fix(objections): address PR comments
* fix(strings): use US English for base edits
* refactor(test): typos and phrasing
* Fixed rebase.
* Removed commented out mail sending to pass linting. Styles from settings.styl still not propagating to app.css
* fix(feedback): address PR comments
* fix(style): linting errors
* Enabled repeatables
* Added every x to weekly
* Updated new recur logic to work with tests
* Added repeatable tests back
* Added custom day start support
* Moved back to zone function
* Added zone back
* Added nextDue field
* Abstracted set next due logic, set offset, and mapped to ISO
* Removed extra codes
* Removed clone deep
* Added summary local
* Fixed every x weekly
* Prevented edit of repeats on
* Added next due date
* Fixed display of next due dates
* Fixed broken tests
* added next due date as today for weekly
* Fixed integration tests
* Updated common test
* Use user's format
* Allow user to deselect all days during week
* Removed let from front end
* WIP(guilds): AB test pester modal
* WIP(AB-test): guild pester cont'd
* fix(style): linting error
* fix(AB-test): markModified and notif enum
* fix(tests): update AB expectations
* fix(modal): remove extra includes
* feat(achievements): add Joined Guild cheevo
Also removes unused achievement sprites, and properly saves counter used in A/B testing
* fix(style): linting error from conflict
* Added isDue field and isDue set on create
* Added isDue update on update task
* Add isdue calc to score task
* Added isdue calc to cron
* Fixed lint issue
* Added isDue to no set and updated grammar
* Adding code to look over the most recent messages to look for spam from a user
* Adding in translatable error message
* Adding 2 tests for spam detection
* Fixing changes requested for pull request
* Adding unit tests for group and fixing requested changes
* Fixing message and tests
* Forgot to remove this import
* Fixing lint errors
* Cleaning up the code and tests to be more readable
* Fixing lint errors
* Fixed linting issues
* Syntax fixes
* Updated grammar
* Added abiltiy to add group managers
* Added ability to remove managers
* Added ability for managers to add group tasks
* Allower managers to assign tasks
* Allowed managers to unassign tasks
* Allow managers to delete group tasks
* Allowed managers to approve
* Added initial ui
* Added approval view for managers
* Allowed managers to edit
* Fixed lint issues
* Added spacing to buttons
* Removed leader from selection of group managers
* Code review updates
* Ensured approvals are only done once
* Added ability for parties to add managers
* Add notifications to all managers when approval is requests
* Removed tasks need approval notifications from all managers when task is approve
* Fixed linting issues
* Hid add managers UI from groups that are not subscribed
* Removed let from front end
* Fixed issues with post task url params
* Fixed string locales
* Removed extra limited strings
* Added cannotedit tasks function
* Added limit fields and notification check by taskId
* Localized string and other minor issues
* Added manager and leader indicator
* Added group notifications refresh on sync
* Added close button for group notifications
* Removed group approval notifications when manager is removed
* Moved leader/manager indicators to after hp
* Added manager fields to groups
* Spelling and syntax fixes
* Prevented ios and android subs from being upgrade to group plans
* Add admin email sender
* Updated admin email
* Updated get user email
* Fixed grammar issue
* Added block when user types a swear word listed in banned words
* Moved banned words check to server
* Removed unused code
* Moved banned words to separate file and fixed grammar.
* Updated chat test
* Changed error to BadRequest
* Fixed regex matching
* Updated test banned word
* Moved banned words and cached regex
* Updated banned word message
* Add ban filter only for tavern
* Added tavern id constant
* Added more tests for banned words
* Added warning to banned words
* Added alert
* Added new regex to capture markdown
* Fixed lint, spelling and importing
* Added email invite limit
* change error message for sending too many invitations to instruct them to email us
* fix test error message to use variable in locales string
* add comment to warn about keeping INVITES_LIMIT low
If INVITES_LIMIT is allowed to be greater than MAX_EMAIL_INVITES_BY_USER
then the inviter can send more than MAX_EMAIL_INVITES_BY_USER invitations
at once.
* Fix User > Profile showing {getProgressDisplay()}
* Remove bad nextRewardAt check
* 1st iteration of issue #8385 - more pending
* #8385 config and jade fixes, tests pending
* #8385 fixing lint errors
* Fix faqs string and test
* Fix faq.jade and add workaround for faq.js
* Fixing accidental checking for faq.js
* fix emails in faq.js
* fetch emails once in auth.js
* Fixing community manager email in auth.js
* Added a field in Party page with members count and maximum members in party
* Added information of invitations counter
* Limited party to 2 members on server (API)
* Fixed english text
* Consider current number of invitations in the party
* Moved PARTY_LIMIT_MEMBERS to common folder
* Access the PARTY_LIMIT_MEMBERS through groupsCtrl
* Some corrections
* Hide invite button when invite limit is reached
* Added missing trailing comma
* Do not test 'returns only first 30 invites' in a party anymore, but in a guild: party is limited to 30 members, so it would always fail
* Test: allow 30 members in a party
* Test: do not allow 30+ members in a party
* Improved 'allow 30 members in a party' test
* Test: 'allow 30+ members in a guild'
* Added missing trailing comma
* Code style corrections
* Fixed new line position
* Party limit check done inside Group.validateInvitations function
* Improved members count query
* Fixed tests
* Rewrite tests
* Removed import of BadRequest: value became unused
* Added 'await' to remaining 'Group.validateInvitations' functions
* Fixed tests that would always success
* Fixed task sorting
* Add sync when group task is deleted
* Added sync when user tasks reorder
* Abstracted show logic and removed task grouping from group page
* Fixed scope typo
* Localized the default challenge short name
* Removed default shortName
* Fixed test for challenge shortName
* Added subscriptions to all members when group subs
* Added unsub when group cancels
* Give user a subscription when they join a subbed group
* Removed subscription when user leaves or is removed from group
* Fixed linting issues:
* Added tests for users with a subscription being upgraded to group plan
* Added tests for checking if existing recurring user sub gets updated during group plan. Added better merging for plans
* Added test for existing gift subscriptions
* Added additional months to user when they have an existing recurring subscription and get upgraded to group sub
* Adds test for user who has cancelled with date termined in the future
* Added test to ensure date termined is reset
* Added tests for extra months carrying over
* Added test for gems bought field
* Add tests to for fields that should remain when upgrading
* Added test for all payment methods
* Added prevention for when a user joins a second group plan
* Fixed subscribing tests
* Separated group plan payment tests
* Added prevention of editing a user with a unlimited sub
* Add tests to ensure group keeps plan if they are in two and leave one
* Ensured users with two group plans do not get cancelled when on group plan is cancelled
* Ensured users without group sub are untouched when group cancels
* Fixed lint issues
* Added new emails
* Added fix for cron tests
* Add restore to stubbed methods
* Ensured cancelled group subscriptions are updated
* Changed group plan exist check to check for date terminated
* Updated you cannont delete active group message
* Removed description requirement
* Added upgrade group plan for Amazon payments
* Fixed lint issues
* Fixed broken tests
* Fixed user delete tests
* Fixed function calls
* Hid cancel button if user has group plan
* Hide difficulty from rewards
* Prevented add user functions to be called when group plan is cancelled
* Fixed merge issue
* Correctly displayed group price
* Added message when you are about to join canclled group plan
* Fixed linting issues
* Updated tests to have no redirect to homes
* Allowed leaving a group with a canceld subscription
* Fixed spelling issues
* Prevented user from changing leader with active sub
* Added payment details title to replace subscription title
* Ensured we do not count leader when displaying upcoming cost
* Prevented party tasks from being displayed twice
* Prevented cancelling and already cancelled sub
* Fixed styles of subscriptions
* Added more specific mystery item tests
* Fixed test to refer to leader
* Extended test range to account for short months
* Fixed merge conflicts
* Updated yarn file
* Added missing locales
* Trigger notification
* Removed yarn
* Fixed locales
* Fixed scope mispelling
* Fixed line endings
* Removed extra advanced options from rewards
* Prevent group leader from leaving an active group plan
* Fixed issue with extra months applied to cancelled group plan
* Ensured member count is calculated when updatedGroupPlan
* Updated amazon payment method constant name
* Added comment to cancel sub user method
* Fixed smantic issues
* Added unite test for user isSubscribed and hasNotCancelled
* Add tests for isSubscribed and hasNotCanceled
* Changed default days remaining to 2 days for group plans
* Fixed logic with adding canceled notice to group invite
* Added initial should do weekly tests
* Added support back in for days of the week and every x day
* Added better week day mapper
* Added initial monthly
* Added every x months
* Added yearlies
* Fixed every nth weekdy of month
* Fixed tests to check every x week on weekday
* Began combining x month with nth weekday
* Added every x month combined with date and weekday
* Fixed lint issues
* Saved moment-recurr to package.json
* Added new repeat fields
* Added UI for repeatables
* Ensured only dalies are affected by summary
* Added local strings
* Updated npm shrinkwrap
* Shared day map constant
* Updated shrinkwrap
* Added ui back
* Updated copy of test cases
* Added new translation strings
* Updated shrinkwrap
* Fixed broken test
* Made should do tests static for better consitency
* Fixed issue with no repeat
* Fixed line endings
* Added frequency enum values
* Fixed spacing
* Added setting and modal for score notes
* Added persistent score notes
* Fixed linting issues and documented new field
* Added max length to task score notes
* Added check for score notes existence
* Combined tasks perferences
* Leaving a group or a guild no longer removes the user from the challenges of that group or guild.
* Updating api docs for leaving group to take into account the default path no longer leaving challenges when leaving a group.
* Updating api docs for leaving group to take into account the default path no longer leaving challenges when leaving a group.
* refactored according to blade's comments to not be a breaking change. The api now accepts a body parameter to specify wether the user
should remain in the groups challenges or leave them. The change also adds more tests around this behavior to confirm that it works
as expected.
* Added support for grouping tasks by chllenge
* Fixed tests and updated default challenge model name
* Fixed broken member test
* Updated setting string
* Changed to shortName
* Began abstracting task grouping
* Added initial task directive code
* Added new directives to help with grouping of tasks
* Removed random console.log
* Clean version of PR 8175
The original PR for this was here:
https://github.com/HabitRPG/habitica/pull/8175
Unfortunately while fixing a conflict in tasks.json, I messed up the rebase and wound up pulling in too many commits and making a giant mess. Sorry. :P
* Fixing test failure
This test seems to occasionally start failing (another coder reported the same thing happening to them in the blacksmiths’ guild) because the order in which the tasks are created can sometimes not match the order in the array. So I have sorted the tasks array after creation by the task name to ensure a consistent ordering, and slightly reordered the expect statements to match.
* Support subscription payment through Google Play Store
* minor fixes to iap subscriptions
* Support subscription payment through Google Play Store
* minor fixes to iap subscriptions
* revert change to test
* add unit tests for google payments
* add integration tests for google payments
* change config formatting for play api
* fix typo in file name
* fix typo in example config
* Improve google payment tests
* fix linter errors
* start migrating to bcrypt
* added method to convert the password to bcrypt when logging in, added method to compare password without knowing the hashing algorhytm, remove default
* travis: try to upgrade to container based infrastructure
* travis: add deps to build bcrypt.js
* travis: add deps to build bcrypt.js
* travis: add deps to build bcrypt.js
* travis: add deps to build bcrypt.js
* use bcryptjs until bcrypt can be installed on travis, see https://github.com/kelektiv/node.bcrypt.js/issues/476
* correct sha1 unit tests
* try different mongodb repo
* try without mognodb services
* try again with bcrypt
* disable request logging in travis
* migrate missing routes
* simplify code
* remove bcryptjs
* fix typo
* fix typo
* fix typo in comment
* add unit tests for new passwords utility emthods
* travis: back to old infrastructure, containers often have timeouts
* add integration test for passwordHashMethod
* update shrinkwrap
* clarify code and add comments
* add integration tests
* fix linting
* fix integration tests
* spells: searing brightness should not affect challenge tasks
* fixed other incorrect group vs challenge task exclusions
* fixed /tasks/clearCompletedTodos test
didn't account for the new group task
* fixed comment omission in tasks/clearCompletedTodos
* Moved amazon tests to folder
* Abstracted amazon payment code and added initial test
* Abstracted cancel and subscribe logic to amazon payment lib
* Added arg checks to checkout
* Added constants. Added more subscription test
* Added with arg checks to cancel
* Fixed linting issues
* Added integration tests for amazon subscribe cancel
* Added integration test for amazon checkout
* Added integration test for amazon subscribe
* Added coupon unit test
* Fixed lint
* Fixed minor test issue and changed header expectations
* Fixed line endings
* Added notification for approval request in the group leaders language
* Added test for group task meta actions. Added sync when user claims
* Added tests for group task actions. Ensured assigned members are synce when added or removed
* Fixed approval required toggle
* Added support for users with comma in their name
* Fixed sync issue when user is approved and reloads the website
* Added advance options for group rewards
* Added back ticks to group claim message
* Fixed disappearing tasks that need approval
* Up chat limit to 400 for subbed groups
* Fixed line endings
* Updated activie subscription check
* Added group isSubscribed function
* Changed to isAfter
* Added move route for group tasks
* Added group task reorder to front end
* Added syncing with group task order
* Fixed linting issues
* Added missing exec and abstracted move code
* Added unit test for moveTask
* Adding new method to user schema that pushes a new notification to the database with an update operation instead of a save. fixes#8264
* fixing test text
* changing the addUserNotificationUpdate method to a static method as requested.
* Renaming to push notification
* fixing comment documentation based on pr comments.
* Changed the update statement to do a multi update and added a validation step. Added tests for both these cases.
* Updating pushNotification method to allow a query to be passed instead of an array of userIds to make it more flexible.
* Removing createdAt field from tests as it's no longer used.
* Removing only from test suite
* fix: throws an error when the server receives a post chat request with a message containing only whitespace.
* Adding a test confirming behavior around messages that only contain newlines.
* Removing accidental only that was left on a test
* avoid setting profile name to not found
* only set profile name when empty
* profile.name is required
* set profile name before validation
* fix and add tests
* adding quest owner specific rewards. closes#2715
* Updating model to prevent this from being a breaking change.
* Removing duplicate translatable string and readding accidentally deleted portion
* capitalizing according to pr.
* fixing according to comments on pr
* removing final mistakes
* fixing whitespace
* re-adding the onlyOwner field that got deleted when the index.js file was moved and fixed console errors.
* moving cleaning of empty obejct for quest owner updates into quest owner updates method
* Fixing so tests pass by updating variable name and removing unnecessary parameter definition.
* adding a new test and refactoring client side code to use controller method.
* Added all ui components back
* Added group ui items back and initial group approval directive
* Added approval list view with approving functionality
* Added notification display for group approvals
* Fixed linting issues
* Removed expectation from beforeEach
* Moved string to locale
* Added per use group plan for stripe
* Added tests for stripe group plan upgrade
* Removed paypal option
* Abstract sub blocks. Hit group sub block from user settings page. Added group subscriptin beneifts display
* Fixed lint issue
* Added pricing and adjusted styles
* Moved text to translations
* Added group email types
* Fixed typo
* Fixed group plan abstraction and other style issues
* Fixed email unit test
* Added type to group plan to filter our group plans
* Removed dev protection from routes
* Removed hard coding and fixed upgrade plan
* Added error when group has subscription and tries to remove
* Fixed payment unit tests
* Added custom string and moved subscription check up in the logic
* Added ability for old leader to delete subscription the created
* Allowed old guild leader to edit their group subscription
* Fixed linting and tests
* Added group sub page to user sub settings
* Added approval and group tasks requests back. Hid user group sub on profile
* Added group tasks sync after adding to allow for editing
* Fixed promise chain when resolving group
* Added approvals to group promise chain
* Ensured compelted group todos are not delted at cron
* Updated copy and other minor styles
* Added group field to tags and recolored group tag.
* Added chat message when task is claimed
* Preventing task scoring when approval is needed
* Added approval requested indicator
* Updated column with for tasks on group page
* Added checklist sync on assign
* Added sync for checklist items
* Added checkilist sync when task is updated
* Added checklist sync remove
* Sanatized group tasks when updated
* Fixed lint issues
* Added instant scoring of approved task
* Added task modal
* Fixed editing of challenge and group tasks
* Added cancel button
* Added add new checklist option to update sync
* Added remove for checklist
* Added checklist update
* Added difference check and sync for checklist if there is a diff
* Fixed task syncing
* Fixed linting issues
* Fixed styles and karma tests
* Fixed minor style issues
* Fixed obj transfer on scope
* Fixed broken tests
* Added new benefits page
* Updated group page styles
* Updated benefits page style
* Added translations
* Prevented sync with empty trask list
* Added task title to edit modal
* Added new group plans page and upgrade redirect
* Added group plans redirect to upgrade
* Fixed party home page being hidden and home button click
* Fixed dynamic changing of task status and grey popup
* Fixed tag editing
* Hid benifites information if group has subscription
* Added quotes to task name
* Fixed issue with assigning multiple users
* Added new group plans ctrl
* Hid menu from public guilds
* Fixed task sync issue
* Updated placeholder for assign field
* Added correct cost to subscribe details
* Hid create, edit, delete task options from non group leaders
* Prevented some front end modifications to group tasks
* Hid tags option from group original task
* Added refresh for approvals and group tasks
* Prepend new group tasks
* Fix last checklist item sync
* Fixed casing issue with tags
* Added claimed by message on hover
* Prevent user from deleting assigned task
* Added single route for group plan sign up and payments
* Abstracted stripe payments and added initial tests
* Abstracted amazon and added initial tests
* Fixed create group message
* Update group id check and return group
* Updated to use the new returned group
* Fixed linting and promise issues
* Fixed broken leave test after merge issue
* Fixed undefined approval error and editing/deleting challenge tasks
* Add pricing to group plans, removed confirmation, and fixed redirect after payment
* Updated group plan cost text
* included privateMessageGiftIntro in privateMessageGiftGemsMessage to take care of spacing error and make it easier for translators
* fixed spacing error in gems gift message and adjusted relevant tests
* removed privateMessageGiftIntro and privateMessageGiftSubscriptionMessage since they are no longer in use
* transferGems: use receiver language translation for PM strings #7722
* chore(test): DRY up transfer gems test
* chore(test): Allow check for language in translation assertion
* chore(test): Add test that member locales are used in transfer gems msg
* sendMessage: optionally take also the message in sender's language
when present, it is stored in the sender's inbox instead of the version
in the target language.
* transferGems: prepare pm in both languages #7722
* sendMessage: take an object for the second parameter instead
* payments: made two more gift strings translatable
* buyGems: send both translations for gifted gems
* buyGems: send push notifications in target user's locale
* createSubscription: send both translations for gifted subs
* createSubscription: send push notifications in target user's locale
* transferGems: send push notifications in target user's locale
* tests: adjust payment tests for translation changes
* added function doc for sendMessage
* tests: added bilingual test for buyGems
* feature: updating group.removeMember api to send an email to a user when an invite was rescinded or when no message was provided by the performing user.
* Adding validation that the email is being sent to the right user.
* fixing linting error
* pull apart achievements into different subcategories
* achievs previously hidden to others if unachieved are now always shown
* achievs previously always hidden if unachieved are now always shown
* pull apart ultimate gear achievs
* add achiev wrapper mixin
* add achiev mixin for simple counts
* add achiev mixin for singular/plural achievs
* add simpleAchiev mixin and support attributes
* always hide potentially unearnable achievs if unearned
* contributor achiev now uses string interpolation for readMore link
* transition to basic achiev grid layout
* fix npc achievement img bug introduced in c90f7e2
* move surveys and contributor achievs into special section so it is never empty
* double size of achievs in achievs grid
* achievs in grid are muted if unachieved (includes recompiled sprites)
* fix streak notification strings
* add counts to achievement badges for applicable achieved achievs
* list achievements by api
* fix achievement strings in new api
* unearned achievs now use dedicated (WIP) 'unearned' badge instead of muted versions of the normal badges
* fix & cleanup achievements api
* extract generation of the achievements result to a class
* clean up achievement counter css using existing classes
* simplify exports of new achievementBuilder lib
* remove class logic from achievementBuilder lib
* move achievs to common, add rebirth achiev logic, misc fixes
* replace achievs jade logic with results of api call
* fix linting errors
* achievs lib now returns achievs object subdivided by type (basic/seasonal/special
* add tests for new achievs lib
* fix linting errors
* update controllers and views for updated achievs lib
* add indices to achievements to preserve intended order
* move achiev popovers to left
* rename achievs lib to achievements
* adjust positioning of achieve popovers now that stats and achievs pages
are separate
* fix: achievements api correctly decides whether to append extra string for master and triadBingo achievs
* revert compiled sprites so they don't bog down the PR
* pull out achievs api integration tests
* parameterize ultimate gear achievements' text string
* break out static achievement data from user-specific data
* reorg content.achievements to add achiev data in related chunks
* cleanup, respond to feedback
* improve api documentation
* fix merge issues
* Helped Habit Grow --> Helped Habitica Grow
* achievement popovers are muted if the achiev is unearned
* fix singular achievement labels / achievement popover on click
* update apidoc for achievements (description, param-type, successExample, error-types)
* fix whitespace issues in members.js
* move html to a variable
* updated json example
* fix syntax after merge
* upgrade node to version 6
* upgrade npm to v4
* update shrinkwrap
* use npm 4 in travis
* use mongoose 4.6.4
* update shrinkwrap
* fix async test and upgrade mongoose
* fix amazon test
* remove debugging code
* working tests with separate server
* update coupon code
* mupdate mongoose
* nvm: relax node version in .nvmrc
* fix: confirm no user objects reference a group before deleting it when the member count reaches 0
* Updating mongo queries to return promises and use the select statement.
* Implementing retries on failed user updates when finishing a quest. fixes#8035
* Refactoring mongo db retries to use the same as code path as original call and moving retries to count based over time based.
* Adding tests for retry logic and updating retries to happen recursively
* Moving callbacks to promises and other tweaks according to pr.
* Chaging mongoose promise to use .catch() functionality
* If all retries fail, the system will now throw an error instead of returning an error message.
* New notification feature that notifies a user when their group invite is accepted. fixes#7788
* Updating to a modal instead of a popup notification
* Making a generic modal template and using it for notifications of group invitation acceptance.
* Working with paglias's comments for doing translation server side.
* Final changes based on pr comments.
* Send a message to the party chat when a quest is aborted
* Added test cases for sending a message to party when quest is aborted
* Restore Group.prototype.sendChat after aborted quest test
This test seems to occasionally start failing (another coder reported the same thing happening to them in the blacksmiths’ guild) because the order in which the tasks are created can sometimes not match the order in the array. So I have sorted the tasks array after creation by the task name to ensure a consistent ordering, and slightly reordered the expect statements to match.
* Added all ui components back
* Added group ui items back and initial group approval directive
* Added ability to mark tasks as requires approval. Added approvals ctrl. Added get approvals method to tasks service
* Added approval list view with approving functionality
* Added error to produce message when task requests approval
* Added notification display for group approvals
* Fixed notification read and adding task
* Fixed syncing with group approval required
* Added group id to notifications for redirect on client side
* Fixed approval request tests
* Fixed linting issues
* Removed expectation from beforeEach
* Moved string to locale
* Added eslint ignore
* Updated notification for group approved, added new icons, and updated styles
* Hid group plan ui
* Added payment to groups and pay with group plan with Stripe
* Added edit card for Stripe
* Added stripe cancel
* Added subscribe with Amazon payments
* Added Amazon cancel for group subscription
* Added group subscription with paypal
* Added paypal cancel
* Added ipn cancel for Group plan
* Added a subscription tab and hid only the task tab when group is not subscribed
* Fixed linting issues
* Fixed tests
* Added payment unit tests
* Added back refresh after stripe payment
* Fixed style issues
* Limited grouop query fields and checked access
* Abstracted subscription schema
* Added year group plan and more access checks
* Maded purchase fields private
* Removed id and timestampes
* Added else checks to ensure user subscription is not altered. Removed active field from group model
* Added toJSONTransform function
* Moved plan active check to other toJson function
* Added check to see if purchaed has been populated
* Added purchase details to private
* Added correct data usage when paying for group sub