* 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
* 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
* initial work
* new client: working navigation and tasks showing up
* finish header menu and add avatar component
* fix sprites in new client
* initial header version
* initial styling for top menu
* more progress on the header menu
* almost complete menu and avatar
* correctly apply active class for /social and /help
* fix header colors and simplify css
* switch from Roboto to native fonts
* remove small avatar and add viewport
* fixes
* fix user menu with and progress bars
* fix avatar rendeting
* move bars colors to theme
* add site overrides
* fix tests
* shrinkwrap
* fix sprites path
* another try at fixing the sprites path
* another try at fixing the sprites path
* 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