Commit Graph

35486 Commits

Author SHA1 Message Date
Fabien "egg" O'Carroll
d4027a4797 Added BookshelfCollectionsRepository
This implements the CollectionRepository interface and can be swapped out with
the existing repository to persist collections to the database.
2023-06-29 01:40:05 +01:00
Fabien "egg" O'Carroll
724c95cd92 Added bookshelf model for collections
We setup the relations and NQL expansions/replacements here rather than in the
repository, we want to keep all the bookshelf code together in one place.
2023-06-29 01:40:05 +01:00
Fabien "egg" O'Carroll
16db3bbf17 Removed deletable property in favour of protected slugs
We couldn't decide on the best way to encode this in the database.
e.g. deletable: true? or type: internal? but type conflicts with the
storage of manual/automatic.

For now we can use this, and add something in future if we're finding problems
2023-06-29 01:40:05 +01:00
Fabien "egg" O'Carroll
cf83d169db Added use of a slug generator to offload calculation of slugs
When we end up wiring this to the database, this generator will also ensure
uniqueness by appending/incrementing a number on the end of the slug. Long term
it would be good to offload this to a shared slug service, this could also
ensure that slugs are unique globally or between multiple tables, if desired
2023-06-29 01:40:05 +01:00
Fabien "egg" O'Carroll
0a3e36cd62 Ensured uniqueness of slug in collections
We require that slugs are unique as slugs can/are used for routing purposes and
act as an identifier for a resource. As this is a core business rule, we want
to encode it in the entity so that it can be unit tested, and be enforced
regardless of underlying persistence layer
2023-06-29 01:40:05 +01:00
Fabien "egg" O'Carroll
d29f512823 Required titles for collections
We don't want to allow collections to be created without a title, and we need
to encoe that business rule in the entity.
2023-06-29 01:40:05 +01:00
Fabien "egg" O'Carroll
0cfa236570 Fixed visibility of internal _posts member
The _posts member is supposed to be an iternal property to store the data used
by the `posts` getter/setter
2023-06-29 01:40:05 +01:00
Fabien "egg" O'Carroll
633cecdf75 Fixed createCollection not waiting for save
This can cause race conditions when writing e2e tests in the case of to the API
responding before persisting the data
2023-06-29 01:40:05 +01:00
Fabien "egg" O'Carroll
283cae9a59 Fixed "Full Offline Dev" launch config
Each flag needs to be a separate entry in the args array.
2023-06-29 01:40:05 +01:00
Fabien "egg" O'Carroll
9771e1f5c1 Renamed collections service wrapper to service.js
This follows our existing patterns and protects us from th eslint max line rule
when wiring up dependencies. The rule is designed to keep logic out of glue
code, and this file won't have logic, just lots of deps.
2023-06-29 01:40:05 +01:00
Sodbileg Gansukh
d0bea0d607 Released Announcement-Bar v1.1.7 2023-06-29 08:35:07 +08:00
Sodbileg Gansukh
e8e2077548 Added box-sizing to the announcement bar
no issues

- it overrides the default content-box behavior and prevents the bar becoming taller than it should be
2023-06-29 08:33:39 +08:00
renovate[bot]
98a8727538 Update peter-evans/create-or-update-comment digest to be902ae 2023-06-28 16:23:45 +02:00
Eric S. Londres
47b76925a0 Update README.md 2023-06-28 16:23:34 +02:00
renovate[bot]
58b54333a5 Update dependency typescript to v5.1.5 2023-06-28 16:21:27 +02:00
renovate[bot]
a04a4293cb Update dependency vite-plugin-css-injected-by-js to v3.1.2 2023-06-28 16:21:00 +02:00
Michael Barrett
636c916715
Fixed leaking pivot fields (#17142)
fixes https://github.com/TryGhost/Team/issues/2657

The `omitPivot` option does not have an affect on a models
`_previousAttributes`. When we serialise a model and want to retrieve
the previous attributes we need to ensure we manually remove the pivot
fields

See
7704fbc5e8/lib/base/model.js (L512)
2023-06-28 13:16:50 +01:00
Simon Backx
5c843545d8 Added comments-ui editor E2E tests
refs https://github.com/TryGhost/Team/issues/3504
2023-06-28 13:08:35 +02:00
Jono M
9c2553a06a
Updated theme upload modal to show gscan errors (#17148)
refs https://github.com/TryGhost/Team/issues/3349
2023-06-28 19:54:21 +12:00
Jono M
768511c7cc
Added tests for more areas of AdminX settings (themes, design, multiselect) (#17134)
refs https://github.com/TryGhost/Team/issues/3349

Tidies up the remaining major pieces which were not covered by tests.
Extends the existing test patterns, although the API mocks are getting a
bit unmanageable.
2023-06-28 14:59:05 +12:00
Daniel Lockyer
12deff4a16 Fixed performance issue when checking theme name
refs 1374e3f70c

- see referenced commit for the explanation
- this bumps GScan to bring in that fix
2023-06-27 17:04:34 +02:00
renovate[bot]
5bcbb2de41 Update storybook monorepo to v7.0.24 2023-06-27 16:56:47 +02:00
Simon Backx
e6fe60ed37 Added E2E test for colorScheme in comments-ui
refs https://github.com/TryGhost/Team/issues/3504
2023-06-27 16:28:53 +02:00
Simon Backx
23fc00ae60 Added E2E tests for comments-ui accent color option
refs https://github.com/TryGhost/Team/issues/3504

This also fixes an issue where the signup button would become transparent when the accent color option was not set
2023-06-27 16:28:53 +02:00
Simon Backx
81970fbe01 Added E2E test for avatarSaturation on comments-ui
refs https://github.com/TryGhost/Team/issues/3504
2023-06-27 16:28:53 +02:00
Simon Backx
331533d724
Migrated Comments-UI to TypeScript (#17129)
refs https://github.com/TryGhost/Team/issues/3504

This migrates comments-ui to TypeScript. Only `App.js` is left to
migrate, but since this isn't using hooks yet, it will need a bigger
rewrite so this will need to happen in a separate PR.
2023-06-27 14:51:37 +02:00
Daniel Lockyer
549e608b27
Released Portal v2.33.4 2023-06-27 09:26:05 +02:00
Daniel Lockyer
6cbfeb232e
Fixed mismatched brackets in French and Uzbek translations
refs https://github.com/TryGhost/Toolbox/issues/603

- these were found by a newly added test and would have resulted in the
  variable strings being left in the final result
2023-06-27 09:03:51 +02:00
Daniel Lockyer
a8801be82a
Added test to check for mismatched brackets in translations
refs https://github.com/TryGhost/Toolbox/issues/603

- this will loop over all locales and translations files to check for
  a mismatched bracket count
2023-06-27 09:01:25 +02:00
Daniel Lockyer
bebf85f84a
Released Portal v2.33.3 2023-06-27 08:22:48 +02:00
Naz
9767e1f591 Fixed PostEditedEvent data mapping
refs https://github.com/TryGhost/Team/issues/3169

- The "current" part of the payload should always have the "id" included to make the data structure easier to use for the event consumer
2023-06-27 12:52:10 +07:00
Naz
5dd6159ac6 Added handling for 'post.edited' Ghost model event
refs https://github.com/TryGhost/Team/issues/3169

- Adds optomized collection update handling for when post.edited model event is emitted.
2023-06-27 12:52:10 +07:00
Naz
a8e5cbcc3d Extracted post matching to filter to separate method
refs https://github.com/TryGhost/Team/issues/3169

- This method is also useful for external services when checking if collection needs any updates or not.
2023-06-27 12:52:10 +07:00
Naz
bb13845773 Added future perf oprimization note
refs 1bc2a604c3 (r1239780571)
2023-06-27 12:52:10 +07:00
Naz
cf48d4ef5c Removed ability to change collection type after creation
refs https://github.com/TryGhost/Team/issues/3169

- Being able to change the collection type comes with extra complications we don't wan to support just yet. This came up as a part of the PR review here - 1bc2a604c3 (r1239783573).
2023-06-27 12:52:10 +07:00
Naz
623599af1e Moved DomainEvents to be injected to Collections
refs https://github.com/TryGhost/Team/issues/3169

- With the new architecture all possible dependencies should be  injected rather than required directly - this applies to the DomainEvents module as well.
2023-06-27 12:52:10 +07:00
Naz
1fb8fb9bd5 Reduced the amount of events Collections listens on
refs https://github.com/TryGhost/Team/issues/3169

- When a not yet mapped event is produced by Ghost model the posts belonging to a collection are recalculated in a brute-force way. This causes a lot of strain on the database and times out some of the tests. Right now we only care about a handful of events, so limited the ones we listen to and will be uncommenting the rest when we have an optimal mapping/handling for them.
2023-06-27 12:52:10 +07:00
Naz
f74588f9c2 Fixed date filtering in collections
refs https://github.com/TryGhost/Team/issues/3169

- To be able to apply NQL filtering on Collection Posts the dates should be serialized to be ISO Date Strings instead of raw Dates. Otherwise, NQL filtering fails to compare Date with a Date String.
2023-06-27 12:52:10 +07:00
Naz
36783e456b Added 'post.added' event handling in Collections
refs https://github.com/TryGhost/Team/issues/3169

- This piece of logic handles the 'post.added' model event mapping to Collection's PostAddedEvent domain event and logic related to updating collections when the new post is added.
2023-06-27 12:52:10 +07:00
Naz
42539b954f Added collection editing method
refs https://github.com/TryGhost/Team/issues/3169

- The collection entity properties used to be modified, which is not a good practice for logic encapsulation. Extracted editing logic to it's own method which can also contain validation logic when wrong data is passed when editing a collection.
2023-06-27 12:52:10 +07:00
Naz
58a18d37ea Introduced PostEvent classes to make event handling less generic
refs https://github.com/TryGhost/Team/issues/3169

- When handling a single generic event the code becomes riddled with if statements to detect correct "data" that is being passed with the event. Switching to have a domain event per model event helps solving this problem and makes code more readable.
2023-06-27 12:52:10 +07:00
Naz
ebd58515bd Refactored post removal from all collections
refs https://github.com/TryGhost/Team/issues/3169

- It's easier to read this way and possibly reusable in the future
2023-06-27 12:52:10 +07:00
Naz
e7a0462877 Added model event to domain event bridge
refs https://github.com/TryGhost/Team/issues/3169

- To make the coupling to Ghost's model events as loose as possible added a bridge that maps model events to domain events. These domain events it what the collections module can subscribe to to make necessary updates.
2023-06-27 12:52:10 +07:00
Naz
2eb7f7dd25 Updated collections event initialization
refs https://github.com/TryGhost/Team/issues/3169

- Ghost model events should not be crossing emitted to outside libraries. The wrapper code is a "glue code" that can still listen to model events but transforms them to specific format that is useful for the collections module
- This hooks up the Ghost model events and transforms them into a "CollectionEvent" format.
2023-06-27 12:52:10 +07:00
Naz
49d831d971 Optimized handling for post.deleted event in collections
refs https://github.com/TryGhost/Team/issues/3428

- I'm taking an approach of adding specialized support for each event one-by-one.
- The post resource deletion event is the most straight forward and works same for both types of collections.
2023-06-27 12:52:10 +07:00
renovate[bot]
2c6f30b4b8 Update dependency @storybook/addon-styling to v1.3.1 2023-06-27 07:33:22 +02:00
Jono M
0d8eb203bf
Updated AdminX search to use centralised configuration (#17106)
refs https://github.com/TryGhost/Team/issues/3349
2023-06-27 08:09:12 +12:00
Jono M
fdef6a30ab
Fixed default recipients behaviour when deselecting all tiers (#17133)
refs https://github.com/TryGhost/Team/issues/3349
2023-06-27 07:56:17 +12:00
Hannah Wolfe
d9785b7d6b
Fixed missing bracket in sv portal.json
no issue

- customer reported seeing the "{{trialEnd}" text in portal, this is because of the missing bracket.
2023-06-26 19:07:53 +01:00
Daniel Lockyer
1bce363bd3
Updated linting and migration comment to improve practices
refs https://github.com/TryGhost/Toolbox/issues/602

- the new regex allows for the filename to contain seconds, which would have
  helped prevent a bug we had with migrations being in the wrong order
- mentioned filename ordering in the migration review comment to bring
  that to the forefront of the mind
2023-06-26 15:29:37 +02:00