Commit Graph

56950 Commits

Author SHA1 Message Date
Loïc Guitaut
584424594e DEV: Replace params by the contract object in services
This patch replaces the parameters provided to a service through
`params` by the contract object.

That way, it allows better consistency when accessing input params. For
example, if you have a service without a contract, to access a
parameter, you need to use `params[:my_parameter]`. But with a contract,
you do this through `contract.my_parameter`. Now, with this patch,
you’ll be able to access it through `params.my_parameter` or
`params[:my_parameter]`.

Some methods have been added to the contract object to better mimic a
Hash. That way, when accessing/using `params`, you don’t have to think
too much about it:
- `params.my_key` is also accessible through `params[:my_key]`.
- `params.my_key = value` can also be done through `params[:my_key] =
  value`.
- `#slice` and `#merge` are available.
- `#to_hash` has been implemented, so the contract object will be
  automatically cast as a hash by Ruby depending on the context. For
  example, with an AR model, you can do this: `user.update(**params)`.
2024-10-25 14:48:34 +02:00
dependabot[bot]
c7db44cfe7
Build(deps): Bump excon from 0.112.0 to 1.0.0 (#29408)
Bumps [excon](https://github.com/excon/excon) from 0.112.0 to 1.0.0.
- [Changelog](https://github.com/excon/excon/blob/master/changelog.txt)
- [Commits](https://github.com/excon/excon/compare/v0.112.0...v1.0.0)

---
updated-dependencies:
- dependency-name: excon
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-25 14:35:44 +02:00
chapoi
8ac1f6ad9a
UX: Visual adjustments to login/signup forms (#28680)
This adds several improvements to the signup/login forms. Some of them include:

- Added a minimal signup progress bar design for mobile.
- Made the signup/login modals full height on mobile.
- Improved the activation, account creation, and login-required pages on mobile.
- Removed the subheader and emoji from the welcome component.
- Removed most input instructions.
- Used consistent font size for text below the inputs.
- Displayed input instructions only when the field is focused.
- Improved the vertical alignment of input labels.
- Increased the spacing between inputs.
- Fixed label positioning for custom fields.
- Moved the "(optional)" text for the name input outside the instructions.
- Disabled buttons during login to prevent layout shifts.
- Reused the CTA component for modals as well.
- Matched the invite CTA styles with the signup form.

---------

Co-authored-by: Jan Cernik <jancernik12@gmail.com>
Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
2024-10-25 09:34:59 -03:00
Jan Cernik
edd114aee2
DEV: Make experimental_full_page_login not hidden (#29371) 2024-10-25 09:29:30 -03:00
Loïc Guitaut
41584ab40c DEV: Provide user input to services using params key
Currently in services, we don’t make a distinction between input
parameters, options and dependencies.

This can lead to user input modifying the service behavior, whereas it
was not the developer intention.

This patch addresses the issue by changing how data is provided to
services:
- `params` is now used to hold all data coming from outside (typically
  user input from a controller) and a contract will take its values from
  `params`.
- `options` is a new key to provide options to a service. This typically
  allows changing a service behavior at runtime. It is, of course,
  totally optional.
- `dependencies` is actually anything else provided to the service (like
  `guardian`) and available directly from the context object.

The `service_params` helper in controllers has been updated to reflect
those changes, so most of the existing services didn’t need specific
changes.

The options block has the same DSL as contracts, as it’s also based on
`ActiveModel`. There aren’t any validations, though. Here’s an example:
```ruby
options do
  attribute :allow_changing_hidden, :boolean, default: false
end
```
And here’s an example of how to call a service with the new keys:
```ruby
MyService.call(params: { key1: value1, … }, options: { my_option: true }, guardian:, …)
```
2024-10-25 09:57:59 +02:00
Kelv
a89767913d
resolve Rails/ReversibleMigrationMethodDefinition errors (#29412) 2024-10-25 15:13:06 +08:00
dependabot[bot]
b15eb28f77
Build(deps): Bump json from 2.7.2 to 2.7.3 (#29406)
Bumps [json](https://github.com/ruby/json) from 2.7.2 to 2.7.3.
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](https://github.com/ruby/json/compare/v2.7.2...v2.7.3)

---
updated-dependencies:
- dependency-name: json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-25 16:03:11 +11:00
dependabot[bot]
de673cdb60
Build(deps): Bump loofah from 2.22.0 to 2.23.0 (#29404)
Bumps [loofah](https://github.com/flavorjones/loofah) from 2.22.0 to 2.23.0.
- [Release notes](https://github.com/flavorjones/loofah/releases)
- [Changelog](https://github.com/flavorjones/loofah/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flavorjones/loofah/compare/v2.22.0...v2.23.0)

---
updated-dependencies:
- dependency-name: loofah
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-24 23:48:13 +02:00
dependabot[bot]
89cfcef51a
Build(deps): Bump rexml from 3.3.8 to 3.3.9 (#29405)
Bumps [rexml](https://github.com/ruby/rexml) from 3.3.8 to 3.3.9.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.3.8...v3.3.9)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-24 23:48:06 +02:00
David Taylor
7d2aea4d69
DEV: Deprecate uppy-upload-mixin (#29394) 2024-10-24 20:47:25 +01:00
Gabriel Grubba
948f5c0140
DEV: add rake task to annotate plugins in clean DB (#29378) 2024-10-24 15:15:59 -03:00
Penar Musaraj
9b1c6f8384
FIX: remove redundant body scroll lock (#29395)
PR #26784 adds the scroll lock in the modal which renders this second scroll lock for SK component redundant. Having it there in fact causes issues on iPads, where it isn't necessary.
2024-10-24 13:41:08 -04:00
Jan Cernik
d80dcaa261
DEV: Attempt to fix flaky signup spec (#29396) 2024-10-24 13:05:41 -03:00
Guhyoun Nam
82ad7f9d17
DEV: Delete plugin specific webhook event types (#29374)
Background
When creating webhooks on a site without the Discourse Category Experts plugin installed, the category_experts_unapproved_event and category_experts_approved_event webhook events are getting automatically added to webhooks without a way to disable them.

The category_experts_unapproved_event and category_experts_approved_event webhook events are associated with the Discourse Category Experts plugin so I am moving these webhook events into the Category Experts plugin.

Changes
This PR deletes Category Experts plugin specific webhook event types added into core.
2024-10-24 11:02:58 -05:00
Amanda Alves Branquinho
0ecad3a7c9
DEV: Add outlet wrapper for user badges form (#29333)
* DEV: Add outlet wrapper for user badges form

* Add outlet for badge granter table

* add extra args to outlet
2024-10-24 11:10:10 -03:00
Bianca Nenciu
2f1d1cd062
FIX: Skip CSRF check for POST /categories/search (#29392)
This endpoint used to be a GET request, but was changed to POST to allow
larger payloads.

Follow up to commit ebc1763aa5.
2024-10-24 17:06:21 +03:00
Jan Cernik
0983e73c2c
FIX: Enable scroll events in modals for IOS (#29393) 2024-10-24 10:04:03 -04:00
Jan Cernik
ed40c8bfd0
FIX: Remove scroll events for mobile modals (#29391)
* FIX: Remove scroll events for mobile modals
This causes some issues with different devices.
We want to test the side effects of removing this.
2024-10-24 10:18:51 -03:00
Jarek Radosz
587264f9d2
DEV: Remove extraneous spec code (#29386)
namely `js: true`, requiring `rails_helper`, and default `freeze_time` args
2024-10-24 14:15:32 +02:00
David Taylor
f84f7436c5
DEV: Allow parent method to be called using super. in modifyClass (#29389) 2024-10-24 12:11:02 +01:00
David Taylor
4c80beeec9
DEV: Update form-template-field/upload uppy usage (#29367) 2024-10-24 12:05:36 +01:00
David Taylor
8aac0482ac
DEV: Refactor composer-video-thumbnail-uppy (#29370)
- Replaces mixin with uppy-upload lib, and removes duplicated logic
- EmberObject -> plain class
- Moves out of mixin directory
2024-10-24 12:05:16 +01:00
Bianca Nenciu
d37a0d401c
FEATURE: Introduce an optimized style for category page (#29239)
The new style is called `categories_only_optimized` and it is designed
to show only the parent categories, without any subcategories. This
works best for communities with many categories (over a thousand).
2024-10-24 13:46:42 +03:00
Gary Pendergast
cb5e0d358d
DEV: Run db:create in Docker dev container (#29295)
When attempting to [set up the Docker development environment](https://meta.discourse.org/t/install-discourse-for-development-using-docker/102009), I was seeing the following error when running `d/boot_dev --init`:

```
ActiveRecord::NoDatabaseError: We could not find your database: discourse_development. Available database configurations can be found in config/database.yml. (ActiveRecord::NoDatabaseError)
```

Running `db:create` before the `db:migrate` fixed this issue for me. It appears to be safe to run `db:create` even if the database already exists, running `d/rake db:create` locally shows an info message at the database already exists, but doesn't exit with an error.
2024-10-24 12:19:42 +02:00
overgrow
95d8ed59db
PERF: Faster disk space calculation on upload heavy instances (#28307) 2024-10-24 12:11:40 +02:00
Jarek Radosz
ab7547eb7a
DEV: Clean up d-toggle-switch (#29385)
move the template to the bottom, inline `checked`, remove unnecessary `template-lint-disable`
2024-10-24 01:38:55 +02:00
Ella E.
98a3e7d6e2
UX: Consistent styling for admin tables on mobile (#29360)
* UX: Apply admin table classes for consistent mobile styling on custom flags

* UX: Apply admin table classes for consistent mobile styling on custom flags

* UX: Apply admin table classes for consistent mobile styling on backups

* UX: Apply admin table classes for consistent mobile styling on plugins list

* DEV: tweaks on admin table

* UX: Apply admin table classes for consistent mobile styling on chat plugin

* apply prettier

* apply lint

* DEV: removed commented out code

* DEV: removed unnecessary div element

* scroll to the element

* remove the workaround

* revert

* add an extra assertion

* add enabled check

* improve switching

* rm

---------

Co-authored-by: Jarek Radosz <jradosz@gmail.com>
2024-10-23 16:26:21 -06:00
dependabot[bot]
bff9e723e1
Build(deps): Bump google-protobuf from 4.28.2 to 4.28.3 (#29384)
Bumps [google-protobuf](https://github.com/protocolbuffers/protobuf) from 4.28.2 to 4.28.3.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl)
- [Commits](https://github.com/protocolbuffers/protobuf/commits)

---
updated-dependencies:
- dependency-name: google-protobuf
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-24 00:25:35 +02:00
dependabot[bot]
85dbaf4676
Build(deps): Bump execjs from 2.9.1 to 2.10.0 (#29383)
Bumps [execjs](https://github.com/rails/execjs) from 2.9.1 to 2.10.0.
- [Release notes](https://github.com/rails/execjs/releases)
- [Commits](https://github.com/rails/execjs/compare/v2.9.1...v2.10.0)

---
updated-dependencies:
- dependency-name: execjs
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-24 00:24:55 +02:00
dependabot[bot]
ebe1997311
Build(deps-dev): Bump mocha from 2.4.5 to 2.5.0 (#29382)
Bumps [mocha](https://github.com/freerange/mocha) from 2.4.5 to 2.5.0.
- [Changelog](https://github.com/freerange/mocha/blob/main/RELEASE.md)
- [Commits](https://github.com/freerange/mocha/compare/v2.4.5...v2.5.0)

---
updated-dependencies:
- dependency-name: mocha
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-24 00:24:40 +02:00
Kris
d57668a703
DEV: add "topic-list-heading-bottom" plugin outlet (#29377) 2024-10-23 17:54:31 -04:00
Krzysztof Kotlarek
2ec5c2c514
FIX: reword auto action type field for flags (#29361)
Simplified wording for `auto_action_type` flags.
2024-10-24 08:52:19 +11:00
dependabot[bot]
459547e82d
Build(deps-dev): Bump lefthook from 1.8.0 to 1.8.1 (#29380)
Bumps [lefthook](https://github.com/evilmartians/lefthook) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evilmartians/lefthook/compare/v1.8.0...v1.8.1)

---
updated-dependencies:
- dependency-name: lefthook
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-23 23:37:39 +02:00
dependabot[bot]
98bbfa72d5
Build(deps-dev): Bump @types/jquery in the types group (#29379)
Bumps the types group with 1 update: [@types/jquery](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jquery).


Updates `@types/jquery` from 3.5.31 to 3.5.32
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jquery)

---
updated-dependencies:
- dependency-name: "@types/jquery"
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: types
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-23 23:29:32 +02:00
Jarek Radosz
44d1a818a3
DEV: Avoid a hacky workaround in d-toggle-switch specs (#29376) 2024-10-23 23:11:19 +02:00
Kris
d471c01ff6
UX: simplify and shorten new script flow for automations (#29178) 2024-10-23 14:04:17 -04:00
David Taylor
b7f76d99e8
DEV: Delete unused rerender-on-do-not-disturb-change mixin (#29373)
This was used in the old header/user-menu implementation. It can now be removed
2024-10-23 17:16:08 +01:00
Isaac Janzen
87359cf7aa
DEV: Add typeClass to search AssistantItem (#29369)
When rendering the initial search options, we re-use the `AssistantItem` component. 

`AssistantItem` requires that you pass in the required params to define what _type_ of component it will be - category, tag, tag intersection, user, etc. This flexibility is nice, as we can just loop through all `@results` and pass in params, without having to predefine what _type_ of result it is. 

It is is not very good when it comes to seperating the html strucutre of each unique _type_. This is an example of the initial search results: 

<img width="408" alt="Screenshot 2024-10-23 at 9 04 18 AM" src="https://github.com/user-attachments/assets/46795697-6246-4b60-be18-fea200a57baa">

You can see that both categories **and** tags are being rendered. The HTML strcuture looks like so: 

```html
<ul class="search-menu-assistant">
  <li class="search-menu-assistant-item">
    <a class="search-link" href="#"> CATEGORY </a>
  </li>
  <li class="search-menu-assistant-item">
    <a class="search-link" href="#"> CATEGORY </a>
  </li>
  <li class="search-menu-assistant-item">
    <a class="search-link" href="#"> TAG </a>
  </li>
  <li class="search-menu-assistant-item">
    <a class="search-link" href="#"> TAG </a>
  </li>
</ul>
```

There is no way to differentiate between the types, even though some are categories and others tags.

This PR adds a _typeClass_ to each component, that will be a additional class included at the top level of the component HTML structure. 

```html
<ul class="search-menu-assistant">
  <li class="category search-menu-assistant-item">
    <a class="search-link" href="#"> CATEGORY </a>
  </li>
  <li class="category search-menu-assistant-item">
    <a class="search-link" href="#"> CATEGORY </a>
  </li>
  <li class="tag search-menu-assistant-item">
    <a class="search-link" href="#"> TAG </a>
  </li>
  <li class="tag search-menu-assistant-item">
    <a class="search-link" href="#"> TAG </a>
  </li>
</ul>
```
_See `.category` and `.tag` attached to each `search-menu-assistant-item`._ 

This will help us identify which _type_ it is, and allow devs to target and customize each element by _type_.
2024-10-23 09:47:45 -05:00
Jarek Radosz
a59c07fc45
Revert "DEV: Refactor composer-/topic-presence-display (#29262)" (#29368)
This reverts commit 38ab3f2349.
2024-10-23 16:26:08 +02:00
Jarek Radosz
38ab3f2349
DEV: Refactor composer-/topic-presence-display (#29262)
A followup to f05b984208

* modifiers to keep track of components' lifecycles, instead of did-insert/did-update/willDestroy
* proper glimmer-friendly tracking in related models
* caching
* `@outletArgs`
* gjs
2024-10-23 15:31:07 +02:00
David Taylor
c6c09db5b0
DEV: Refactor user-tip to avoid unneeded wrapper element (#29365)
We were using a modifier purely for its lifecycle hooks - not to modify an element. This commit switches to using a helper, which provides a similar lifecycle, but without needing to be attached to an element.
2024-10-23 13:36:04 +01:00
David Taylor
adef7081a2
DEV: Update uppy-image-uploader uppy mixin usage (#29366) 2024-10-23 12:20:18 +01:00
Jarek Radosz
7acf9e6caf
FIX: Invalid raise syntax (#29364) 2024-10-23 11:40:14 +02:00
David Taylor
30eb00ac20
DEV: Update images-uploader uppy usage (#29341)
Also moves this component to the admin bundle. It is only used in the admin panel, and has dependencies on admin-specific i18n strings.
2024-10-23 10:08:09 +01:00
David Taylor
52016e4596
DEV: Update chat-composer-uploads uppy usage (#29339) 2024-10-23 10:07:54 +01:00
David Taylor
51a32de45e
DEV: Modernize uppy-backup-uploader component (#29342)
- remove uppy mixin
- convert to glimmer component
- use gjs authoring format
- move to admin bundle
2024-10-23 10:07:24 +01:00
Kelv
8f9b827d15
DEV: drop password-related columns from users table (#29187) 2024-10-23 13:42:35 +08:00
Krzysztof Kotlarek
cd077ef93b
FIX: visual regression for new features (#29359)
Bug introduced in this PR https://github.com/discourse/discourse/pull/29244

When the experiment toggle button was introduced, new features did not look right when the toggle button was not available.

In addition, the plugin name can be an empty string. In that case, information about new features should be displayed.
2024-10-23 16:16:19 +11:00
Krzysztof Kotlarek
11b62847e7
FEATURE: mandatory fields for compact-list (#29357)
In this PR we introduced mandatory fields for `group-list` https://github.com/discourse/discourse/pull/26612

The same solution should apply to `compact-list`.
2024-10-23 16:16:08 +11:00
Ted Johansson
ca9549b04f
DEV: Clear duplicate admin problem notices (#29358)
In #29272 we added a backwards-compatible way to prevent duplicate problem check trackers. However, there was a mistake in the PR that would instead create duplicate admin notices. As a result, a number of admins now have multiple copies of the same admin notice in their dashboard.

The root cause was fixed in #29329, preventing new duplicates.

This PR is here to clean up notices that were already created.

Admin notices are meant to be ephemeral. Instead of going through hoops to delete duplicates and update the remaining notices' unstructured field with the correct target, it is a lot less error-prone to delete all notices and let the problem check system re-create them.

The real-time checks run every time the dashboard is loaded, so they will appear to never have been deleted. Any notices related to scheduled checks will be added back on the next run. This will happen within at most one hour, and isn't time sensitive.
2024-10-23 13:02:02 +08:00