* Wrap user/identity coupled logic in a transaction
Creating a user and then setting an identiy should occur as an all-or-nothing step.
Wrapping this in an ActiveRecord::Transaction ensures that we don't update an identity
unless we succesfully create/update the user first in the same database transaction.
* Allow errors from authenticator service to bubble up
* Address some issues with logic in ActiveRecord::Base.transaction
* Pull out calls to DataDog from transaction.
* Add additional DataDog call in case something goes wrong in the transaction.
* Rename some methods, add some specs.
* Re-raise errors after notifying DataDog
* Add error message to DataDog tags in Authenticator
* Adds Clipboard Async API & makes use of Android Native Bridge interface for write post image copy to clipboard
* Checks for clipboard api support before trying to use it
* Adds support for comment dropdown copy link
* Adds AndroidBridge to globals definition
* Replace cover image div tag with img tag in articles/show
* Make cover images more semantic with img tag and src
* Keep img styling for now
* Replace divs with inline img in _main_stories_feed.html.erb
* Remove div in favor img tag to make more semantic
* Add extra line at file end in _main_stories_feed.html.erb
* Reword img alt text in articles/show.html.erb
* Remove unnecessary styling for cover images from stylesheets
* Remove background image styling for main feed article
* Remove background image styling for article show page
* Adjust padding for main feed article
* Adjust padding for article show page
* Add 100% width to main feed article
* Adjust styling for article show pages
* Add height to article show CSS
* Adjust article show padding to be 0
* Revert div to img change in _main_stories_feed.html.erb
* Revert styling changes for articles.scss
* Add original styling back to article-show.scss
* Add original styling for article show pages back
* Hopefully avoid conflicts due to caching by keeping code
* Adjust team delightful TODO to be more explicit and readily accessible
* Update app/assets/stylesheets/article-show.scss
Co-authored-by: Ben Halpern <bendhalpern@gmail.com>
* feat: make the from in the email to be dynamic
* feat: hardcoded mailer dev.to
* feat: oops hardcoded email addresses in the terms
* chore: remove some whitespace
* update editor guide
* feat: new reply email
* feat: new message mailer
* feat: new follower email
* feat: capitalize the button
* feat: rename the link
* feat: capitalize the button
* feat: generalize the urls
* feat: generalise the url
* feat: dynamic DEV
* feat: update the specs
* feat: DEV digest generalisation part 1
* fix: the method is accessed by tag_url and so the default parameter needs to be set at this level and not at self.tag
* fix: use the tag model instance instead of passing through just the tag name (so that we can use tag_url)
* chore: make code climate happy
* chore: more robocop
* feat: add a default url back for self.tag
* test: fix the feedback helper spec
* fix: spec to be general
* fix: oops :(
* refactor: user_settings_path
* chore: use code_of_conduct_path
* chore: robocop
* chore: use connect path
* chore; use the notifications symbol
* chore: misc path
* feat: simplify url
* feat/fix: change the order of the helpers and use user_url
* chore: user_url
* capitalise
* chore: update article path
* Moves podcast episode metadata to decorator
* Updates the podcast episode metadata to use image_url
* Syntax tweaks, initializeMedia() fix for initialized audio & brought back use strict