Ghost/core/server/api
Katharina Irrgang 5b77f052d9
Update Notification improvements (#9123)
closes #5071

- Remove hardcoded notification in admin controller
  - NOTE: update check notifications are no longer blocking the admin rendering
  - this is one of the most import changes
  - we remove the hardcoded release message
  - we also remove adding a notification manually in here, because this will work differently from now on
    -> you receive a notification (release or custom) in the update check module and this module adds the notification as is to our database

- Change default core settings keys
  - remove displayUpdateNotification
    -> this was used to store the release version number send from the UCS
    -> based on this value, Ghost creates a notification container with self defined values
    -> not needed anymore

- rename seenNotifications to notifications
  -> the new notifications key will hold both
     1. the notification from the USC
     2. the information about if a notification was seen or not
  - this key hold only one release notification
  - and n custom notifications

- Update Check Module: Request to the USC depends on the privacy configuration
  - useUpdateCheck: true -> does a checkin in the USC (exposes data)
  - useUpdateCheck: false -> does only a GET query to the USC (does not expose any data)
  - make the request handling dynamic, so it depends on the flag
  - add an extra logic to be able to define a custom USC endpoint (helpful for testing)
  - add an extra logic to be able to force the request to the service (helpful for testing)

- Update check module: re-work condition when a check should happen
  - only if the env is not correct
  - remove deprecated config.updateCheck
  - remove isPrivacyDisabled check (handled differently now, explained in last commit)

- Update check module: remove `showUpdateNotification` and readability
  - showUpdateNotification was used in the admin controller to fetch the latest release version number from the db
  - no need to check against semver in general, the USC takes care of that (no need to double check)
  - improve readability of `nextUpdateCheck` condition

- Update check module: refactor `updateCheckResponse`
  - remove db call to displayUpdateNotification, not used anymore
  - support receiving multiple custom notifications
  - support custom notification groups
  - the default group is `all` - this will always be consumed
  - groups can be extended via config e.g. `notificationGroups: ['migration']`

- Update check module: refactor createCustomNotification helper
  - get rid of taking over notification duplication handling (this is not the task of the update check module)
  - ensure we have good fallback values for non present attributes in a notification
  - get rid of semver check (happens in the USC) - could be reconsidered later if LTS is gone

- Refactor notification API
  - reason: get rid of in process notification store
    -> this was an object hold in process
    -> everything get's lost after restart
    -> not helpful anymore, because imagine the following case
      -> you get a notification
      -> you store it in process
      -> you mark this notification as seen
      -> you restart Ghost, you will receive the same notification on the next check again
      -> because we are no longer have a separate seen notifications object
  - use database settings key `notification` instead
  - refactor all api endpoints to support reading and storing into the `notifications` object
  - most important: notification deletion happens via a `seen` property (the notification get's physically deleted 3 month automatically)
    -> we have to remember a seen property, because otherwise you don't know which notification was already received/seen

- Add listener to remove seen notifications automatically after 3 month
  - i just decided for 3 month (we can decrease?)
  - at the end it doesn't really matter, as long as the windows is not tooooo short
  - listen on updates for the notifications settings
  - check if notification was seen and is older than 3 month
  - ignore release notification

- Updated our privacy document
- Updated docs.ghost.org for privacy config behaviour
- contains a migration script to remove old settings keys
2018-01-09 15:20:00 +01:00
..
authentication.js Improved forwarding model options in the API layer (#9380) 2018-01-09 13:26:09 +01:00
clients.js Moved pipeline/sequence to lib/promise 2017-12-13 22:20:02 +01:00
configuration.js Moved ghost-version to lib 2017-12-14 22:14:55 +01:00
db.js Moved utils constants to lib/constants 2017-12-14 14:13:40 +01:00
index.js Moved utils/url.js to UrlService 2017-12-11 20:05:33 +01:00
invites.js Improved forwarding model options in the API layer (#9380) 2018-01-09 13:26:09 +01:00
mail.js Moved utils constants to lib/constants 2017-12-14 14:13:40 +01:00
notifications.js Update Notification improvements (#9123) 2018-01-09 15:20:00 +01:00
posts.js Moved utils constants to lib/constants 2017-12-14 14:13:40 +01:00
redirects.js Moved validateRedirects helper to data/validation 2017-12-14 11:55:10 +01:00
roles.js Moved utils constants to lib/constants 2017-12-14 14:13:40 +01:00
schedules.js Moved zip folder, read csv and package-json to lib/fs 2017-12-14 22:07:53 +01:00
settings.js Moved utils constants to lib/constants 2017-12-14 14:13:40 +01:00
slack.js Moved utils constants to lib/constants 2017-12-14 14:13:40 +01:00
slugs.js Moved utils constants to lib/constants 2017-12-14 14:13:40 +01:00
subscribers.js Moved zip folder, read csv and package-json to lib/fs 2017-12-14 22:07:53 +01:00
tags.js Moved utils constants to lib/constants 2017-12-14 14:13:40 +01:00
themes.js Moved utils constants to lib/constants 2017-12-14 14:13:40 +01:00
upload.js Moved utils constants to lib/constants 2017-12-14 14:13:40 +01:00
users.js Moved utils constants to lib/constants 2017-12-14 14:13:40 +01:00
utils.js Burn dirty require of api utils 2017-12-14 21:25:51 +01:00
webhooks.js Moved utils constants to lib/constants 2017-12-14 14:13:40 +01:00