aws-amplify / amplify-js

A declarative JavaScript library for application development using cloud services.
https://docs.amplify.aws/lib/q/platform/js
Apache License 2.0
9.42k stars 2.12k forks source link

google login with cognito fails the first time but works on second try #9976

Closed aniketkambli closed 1 year ago

aniketkambli commented 2 years ago

Before opening, please confirm:

JavaScript Framework

React

Amplify APIs

Authentication

Amplify Categories

auth

Environment information

System: OS: Windows 10 10.0.22000 CPU: (12) x64 AMD Ryzen 5 5600U with Radeon Graphics Memory: 2.50 GB / 14.83 GB Binaries: Node: 16.15.0 - C:\Program Files\nodejs\node.EXE Yarn: 1.22.4 - C:\Program Files (x86)\Yarn\bin\yarn.CMD npm: 8.8.0 - C:\Program Files\nodejs\npm.CMD Browsers: Edge: Spartan (44.22000.120.0), Chromium (102.0.1245.33) Internet Explorer: 11.0.22000.120 npmPackages: @apollo/client: ^3.5.10 => 3.5.10 @apollo/client/cache: undefined () @apollo/client/core: undefined () @apollo/client/errors: undefined () @apollo/client/link/batch: undefined () @apollo/client/link/batch-http: undefined () @apollo/client/link/context: undefined () @apollo/client/link/core: undefined () @apollo/client/link/error: undefined () @apollo/client/link/http: undefined () @apollo/client/link/persisted-queries: undefined () @apollo/client/link/retry: undefined () @apollo/client/link/schema: undefined () @apollo/client/link/subscriptions: undefined () @apollo/client/link/utils: undefined () @apollo/client/link/ws: undefined () @apollo/client/react: undefined () @apollo/client/react/components: undefined () @apollo/client/react/context: undefined () @apollo/client/react/hoc: undefined () @apollo/client/react/hooks: undefined () @apollo/client/react/parser: undefined () @apollo/client/react/ssr: undefined () @apollo/client/testing: undefined () @apollo/client/testing/core: undefined () @apollo/client/utilities: undefined () @apollo/client/utilities/globals: undefined () @atlaskit/avatar-group: ^8.5.5 => 8.5.5 @aws-amplify/api-graphql: ^2.2.15 => 2.2.15 (1.3.3) @babel/core: ^7.12.16 => 7.12.16 (7.10.4, 7.9.0, 7.8.4) @babel/plugin-proposal-decorators: ^7.16.4 => 7.16.4 (7.8.3) @babel/preset-env: ^7.12.16 => 7.12.16 (7.10.4, 7.9.0) @babel/preset-react: ^7.12.13 => 7.12.13 (7.10.4, 7.9.1) @babel/preset-typescript: ^7.12.16 => 7.12.16 (7.9.0) @chakra-ui/react: ^1.7.4 => 1.7.4 @createnl/grouped-checkboxes: ^1.1.2 => 1.1.2 @cucumber/cucumber: ^7.2.1 => 7.2.1 @cucumber/pretty-formatter: ^1.0.0-alpha.0 => 1.0.0-alpha.0 @date-io/date-fns: ^1.3.13 => 1.3.13 @emotion/react: ^11.4.1 => 11.4.1 @emotion/styled: ^11.3.0 => 11.3.0 (10.0.27) @fortawesome/fontawesome-svg-core: ^1.2.36 => 1.2.36 @fortawesome/free-solid-svg-icons: ^5.15.4 => 5.15.4 @fortawesome/react-fontawesome: ^0.1.15 => 0.1.15 @iconify/react: ^3.1.3 => 3.1.3 @iconify/react/offline: undefined () @material-ui/core: ^4.12.3 => 4.12.3 @material-ui/icons: ^4.5.1 => 4.9.1 @material-ui/lab: ^4.0.0-alpha.48 => 4.0.0-alpha.56 @material-ui/pickers: ^3.2.8 => 3.2.10 @material-ui/styles: ^4.7.1 => 4.10.0 (4.11.4) @material-ui/utils: ^4.11.2 => 4.11.2 (4.10.2) @material/mwc-icon-button: ^0.25.1 => 0.25.1 @mui/icons-material: ^5.0.1 => 5.0.1 @mui/material: ^5.0.1 => 5.0.1 @mui/styled-engine-sc: ^5.0.0 => 5.0.0 @mui/styles: ^5.2.3 => 5.2.3 @nivo/line: ^0.73.0 => 0.73.0 @playlyfe/gql: ^2.6.2 => 2.6.2 @react-icons/all-files: ^4.1.0 => 4.1.0 @reduxjs/toolkit: ^1.7.2 => 1.7.2 @reduxjs/toolkit-query: 1.0.0 @reduxjs/toolkit-query-react: 1.0.0 @storybook/addon-actions: ^5.2.8 => 5.3.19 @storybook/addon-info: ^5.2.8 => 5.3.19 @storybook/addon-knobs: ^5.2.8 => 5.3.19 @storybook/addon-links: ^5.2.8 => 5.3.19 @storybook/addon-storysource: ^5.2.8 => 5.3.19 @storybook/addon-viewport: ^5.2.8 => 5.3.19 @storybook/addons: ^5.2.8 => 5.3.19 @storybook/react: ^5.2.8 => 5.3.19 @testing-library/jest-dom: ^4.2.4 => 4.2.4 @testing-library/react: ^9.3.2 => 9.5.0 @testing-library/user-event: ^7.1.2 => 7.2.1 @types/cucumber: ^7.0.0 => 7.0.0 @types/cucumber-html-reporter: ^5.0.1 => 5.0.1 @types/enzyme: ^3.10.4 => 3.10.5 @types/enzyme-adapter-react-16: ^1.0.5 => 1.0.6 @types/expect: ^24.3.0 => 24.3.0 @types/history: ^4.1.0 => 4.7.11 (4.7.6) @types/jest: ^24.0.23 => 24.9.1 @types/lodash: ^4.14.149 => 4.14.157 (4.14.173) @types/mark.js: ^8.11.7 => 8.11.7 @types/node: ^12.0.0 => 12.20.38 (10.17.26, 17.0.31, 14.0.14, 13.13.50) @types/query-string: ^6.3.0 => 6.3.0 @types/react: ^16.9.0 => 16.9.41 (16.14.21, 16.14.2) @types/react-big-calendar: ^0.22.3 => 0.22.4 @types/react-csv: ^1.1.2 => 1.1.2 @types/react-datepicker: ^2.11.0 => 2.11.1 @types/react-dom: ^16.9.0 => 16.9.14 (16.9.8) @types/react-helmet: ^6.1.5 => 6.1.5 @types/react-image-crop: ^8.1.2 => 8.1.2 @types/react-material-ui-form-validator: ^2.0.5 => 2.0.5 @types/react-otp-input: ^2.0.0 => 2.0.0 @types/react-redux: ^7.1.5 => 7.1.9 @types/react-router-dom: ^5.1.3 => 5.1.5 @types/react-scroll: ^1.8.2 => 1.8.2 @types/react-select: ^3.0.11 => 3.0.14 @types/react-test-renderer: ^16.9.1 => 16.9.2 @types/reactstrap: ^8.2.0 => 8.4.3 @types/redux-mock-store: ^1.0.2 => 1.0.2 @types/uuid: ^3.4.6 => 3.4.9 (8.3.0) @typescript-eslint/eslint-plugin: ^2.11.0 => 2.34.0 @typescript-eslint/parser: ^2.11.0 => 2.34.0 ag-charts-community: ^4.2.0 => 4.2.0 ag-charts-react: ^5.0.0 => 5.0.0 amazon-cognito-identity-js: ^4.4.0 => 4.4.0 (5.2.3, 4.6.3) antd: ^4.16.13 => 4.16.13 apollo-server-express: ^2.15.0 => 2.15.1 apollo-server-koa: ^2.14.0 => 2.15.1 aws-amplify: ^3.0.19 => 3.0.19 aws-sdk: ^2.745.0 => 2.745.0 axios: ^0.19.2 => 0.19.2 (0.21.4, 0.21.1, 0.19.0) babel-cli: ^6.26.0 => 6.26.0 babel-eslint: ^10.0.3 => 10.1.0 (10.0.3) babel-jest: ^26.6.3 => 26.6.3 (24.9.0) babel-loader: ^8.0.6 => 8.1.0 (8.0.6) babel-preset-env: ^1.7.0 => 1.7.0 body-parser: ^1.19.0 => 1.19.0 bootstrap: ^4.4.1 => 4.5.0 bootstrap-icons: ^1.5.0 => 1.5.0 caniuse-api: ^3.0.0 => 3.0.0 caniuse-lite: ^1.0.30001202 => 1.0.30001202 (1.0.30001280, 1.0.30001094, 1.0.30001282) chakra-otp-input: ^0.3.6 => 0.3.6 chart.js: ^3.5.0 => 3.6.0 chart.js-auto: undefined () chart.js-helpers: undefined () codemirror-graphql: ^0.12.1 => 0.12.4 cross-env: ^7.0.2 => 7.0.3 cucumber: ^7.0.0-rc.0 => 7.0.0-rc.0 cucumber-html-reporter: ^5.4.0 => 5.5.0 cucumber-pretty: ^6.0.0 => 6.0.0 date-fns: ^2.0.0-beta.5 => 2.14.0 (2.24.0) enzyme: ^3.10.0 => 3.11.0 enzyme-adapter-react-16: ^1.15.1 => 1.15.2 enzyme-to-json: ^3.4.3 => 3.5.0 eslint: ^6.7.2 => 6.8.0 eslint-config-airbnb: ^18.0.1 => 18.2.1 eslint-config-prettier: ^6.7.0 => 6.15.0 eslint-config-react-app: ^5.1.0 => 5.2.1 eslint-import-resolver-typescript: ^2.0.0 => 2.0.0 eslint-plugin-flowtype: ^4.5.2 => 4.7.0 (4.6.0) eslint-plugin-graphql: ^4.0.0 => 4.0.0 eslint-plugin-import: ^2.19.1 => 2.22.0 (2.20.0) eslint-plugin-json: ^2.0.1 => 2.1.1 eslint-plugin-jsx-a11y: ^6.2.3 => 6.3.1 (6.2.3) eslint-plugin-prettier: ^3.1.1 => 3.1.4 eslint-plugin-react: ^7.17.0 => 7.20.3 (7.18.0) eslint-plugin-react-hooks: ^4.0.4 => 4.0.4 (1.7.0) expect: ^26.6.2 => 26.6.2 (24.9.0) express: ^4.17.1 => 4.17.1 faker: ^4.1.0 => 4.1.0 firebase: ^7.14.1 => 7.24.0 firebase/analytics: undefined () firebase/app: undefined () firebase/auth: undefined () firebase/database: undefined () firebase/firestore: undefined () firebase/firestore/memory: undefined () firebase/functions: undefined () firebase/installations: undefined () firebase/messaging: undefined () firebase/performance: undefined () firebase/remote-config: undefined () firebase/storage: undefined () flagsmith: ^1.7.2 => 1.7.2 (1.7.4) flagsmith-react: ^1.2.4 => 1.2.4 framer-motion: ^4.1.17 => 4.1.17 fusioncharts: ^3.17.0 => 3.17.0 graphql: ^16.3.0 => 16.3.0 (14.0.0, 14.5.0, 0.9.6, 14.6.0) graphql-subscriptions-client: ^0.16.2 => 0.16.2 graphql-ws: ^5.6.2 => 5.6.2 jest: ^24.9.0 => 24.9.0 jest-transform-css: ^2.0.0 => 2.1.0 jest-transform-stub: ^2.0.0 => 2.0.0 json-server: ^0.16.1 => 0.16.3 jwt-decode: ^3.1.2 => 3.1.2 koa: ^2.12.0 => 2.13.4 (2.13.0) mark.js: ^8.11.1 => 8.11.1 material-ui: ^0.20.2 => 0.20.2 material-ui-color-picker: ^3.5.0 => 3.5.1 memo-parser: 0.2.1 moment: ^2.26.0 => 2.29.1 node-schedule: ^2.1.0 => 2.1.0 nodemon: ^2.0.4 => 2.0.7 npm-run-all: ^4.1.5 => 4.1.5 nvm: ^0.0.4 => 0.0.4 prettier-linter-helpers: ^1.0.0 => 1.0.0 prop-types: ^15.7.2 => 15.7.2 puppeteer: ^9.0.0 => 9.0.0 puppeteer-extra: ^2.1.3 => 2.1.6 puppeteer-extra-plugin-stealth: ^2.2.2 => 2.9.0 react: ^17.0.2 => 17.0.2 (16.14.0) react-apollo: ^3.1.3 => 3.1.5 react-big-calendar: ^0.23.0 => 0.23.0 react-bootstrap: ^1.0.0-beta.16 => 1.4.0 react-bootstrap/AbstractNav: undefined () react-bootstrap/AbstractNavItem: undefined () react-bootstrap/Accordion: undefined () react-bootstrap/AccordionCollapse: undefined () react-bootstrap/AccordionContext: undefined () react-bootstrap/AccordionToggle: undefined () react-bootstrap/Alert: undefined () react-bootstrap/Badge: undefined () react-bootstrap/BootstrapModalManager: undefined () react-bootstrap/Breadcrumb: undefined () react-bootstrap/BreadcrumbItem: undefined () react-bootstrap/Button: undefined () react-bootstrap/ButtonGroup: undefined () react-bootstrap/ButtonToolbar: undefined () react-bootstrap/Card: undefined () react-bootstrap/CardColumns: undefined () react-bootstrap/CardContext: undefined () react-bootstrap/CardDeck: undefined () react-bootstrap/CardGroup: undefined () react-bootstrap/CardImg: undefined () react-bootstrap/Carousel: undefined () react-bootstrap/CarouselCaption: undefined () react-bootstrap/CarouselItem: undefined () react-bootstrap/CloseButton: undefined () react-bootstrap/Col: undefined () react-bootstrap/Collapse: undefined () react-bootstrap/Container: undefined () react-bootstrap/Dropdown: undefined () react-bootstrap/DropdownButton: undefined () react-bootstrap/DropdownItem: undefined () react-bootstrap/DropdownMenu: undefined () react-bootstrap/DropdownToggle: undefined () react-bootstrap/ElementChildren: undefined () react-bootstrap/Fade: undefined () react-bootstrap/Feedback: undefined () react-bootstrap/Figure: undefined () react-bootstrap/FigureCaption: undefined () react-bootstrap/FigureImage: undefined () react-bootstrap/Form: undefined () react-bootstrap/FormCheck: undefined () react-bootstrap/FormCheckInput: undefined () react-bootstrap/FormCheckLabel: undefined () react-bootstrap/FormContext: undefined () react-bootstrap/FormControl: undefined () react-bootstrap/FormFile: undefined () react-bootstrap/FormFileInput: undefined () react-bootstrap/FormFileLabel: undefined () react-bootstrap/FormGroup: undefined () react-bootstrap/FormLabel: undefined () react-bootstrap/FormText: undefined () react-bootstrap/Image: undefined () react-bootstrap/InputGroup: undefined () react-bootstrap/Jumbotron: undefined () react-bootstrap/ListGroup: undefined () react-bootstrap/ListGroupItem: undefined () react-bootstrap/Media: undefined () react-bootstrap/Modal: undefined () react-bootstrap/ModalBody: undefined () react-bootstrap/ModalContext: undefined () react-bootstrap/ModalDialog: undefined () react-bootstrap/ModalFooter: undefined () react-bootstrap/ModalHeader: undefined () react-bootstrap/ModalTitle: undefined () react-bootstrap/Nav: undefined () react-bootstrap/NavContext: undefined () react-bootstrap/NavDropdown: undefined () react-bootstrap/NavItem: undefined () react-bootstrap/NavLink: undefined () react-bootstrap/Navbar: undefined () react-bootstrap/NavbarBrand: undefined () react-bootstrap/NavbarCollapse: undefined () react-bootstrap/NavbarContext: undefined () react-bootstrap/NavbarToggle: undefined () react-bootstrap/Overlay: undefined () react-bootstrap/OverlayTrigger: undefined () react-bootstrap/PageItem: undefined () react-bootstrap/Pagination: undefined () react-bootstrap/Popover: undefined () react-bootstrap/PopoverContent: undefined () react-bootstrap/PopoverTitle: undefined () react-bootstrap/ProgressBar: undefined () react-bootstrap/ResponsiveEmbed: undefined () react-bootstrap/Row: undefined () react-bootstrap/SafeAnchor: undefined () react-bootstrap/SelectableContext: undefined () react-bootstrap/Spinner: undefined () react-bootstrap/SplitButton: undefined () react-bootstrap/Switch: undefined () react-bootstrap/Tab: undefined () react-bootstrap/TabContainer: undefined () react-bootstrap/TabContent: undefined () react-bootstrap/TabContext: undefined () react-bootstrap/TabPane: undefined () react-bootstrap/Table: undefined () react-bootstrap/Tabs: undefined () react-bootstrap/ThemeProvider: undefined () react-bootstrap/Toast: undefined () react-bootstrap/ToastBody: undefined () react-bootstrap/ToastContext: undefined () react-bootstrap/ToastHeader: undefined () react-bootstrap/ToggleButton: undefined () react-bootstrap/ToggleButtonGroup: undefined () react-bootstrap/Tooltip: undefined () react-bootstrap/createChainedFunction: undefined () react-bootstrap/createWithBsPrefix: undefined () react-bootstrap/divWithClassName: undefined () react-bootstrap/helpers: undefined () react-bootstrap/triggerBrowserReflow: undefined () react-bootstrap/types: undefined () react-bootstrap/usePopperMarginModifiers: undefined () react-bootstrap/useWrappedRefWithWarning: undefined () react-chartjs-2: ^3.0.4 => 3.0.4 react-countdown: ^2.3.2 => 2.3.2 react-csv: ^2.0.3 => 2.0.3 react-datepicker: ^2.14.1 => 2.16.0 react-dom: ^16.12.0 => 16.14.0 react-fusioncharts: ^3.1.2 => 3.1.2 react-helmet: ^6.1.0 => 6.1.0 react-icons: ^4.2.0 => 4.2.0 react-image-crop: ^10.0.0 => 10.0.0 react-input-switch: ^2.2.2 => 2.2.2 react-js-pagination: ^3.0.3 => 3.0.3 react-loading: ^2.0.3 => 2.0.3 react-loading-skeleton: ^2.2.0 => 2.2.0 react-loadingg: ^1.6.2 => 1.7.2 react-material-ui-form-validator: ^2.0.9 => 2.1.1 react-native-switch-toggle: ^2.2.1 => 2.2.1 react-otp-input: ^2.3.0 => 2.3.0 react-papaparse: ^3.18.1 => 3.18.1 react-perfect-scrollbar: ^1.5.3 => 1.5.8 react-redux: ^7.1.3 => 7.2.2 react-router-dom: ^5.1.2 => 5.2.0 react-script-tag: ^1.1.2 => 1.1.2 react-scripts: 3.4.0 => 3.4.0 react-scroll: ^1.8.1 => 1.8.1 react-smooth: ^2.0.0 => 2.0.0 react-swipeable-views: ^0.14.0 => 0.14.0 react-switch: ^6.0.0 => 6.0.0 react-test-renderer: ^16.12.0 => 16.14.0 reactstrap: ^8.2.0 => 8.8.1 recharts: ^2.0.10 => 2.0.10 redux: ^4.0.5 => 4.0.5 (4.1.2) redux-mock-store: ^1.5.4 => 1.5.4 semantic-ui-react: ^0.88.2 => 0.88.2 sinon: ^8.1.0 => 8.1.1 (7.5.0) styled-components: ^5.3.1 => 5.3.1 (4.4.1) styled-components/macro: undefined () styled-components/native: undefined () styled-components/primitives: undefined () subscriptions-transport-ws: ^0.11.0 => 0.11.0 (0.9.18) ts-jest: ^24.2.0 => 24.3.0 ts-node: ^9.1.1 => 9.1.1 tslib: ^2.3.1 => 2.3.1 (1.14.1, 2.0.3, 2.1.0) tslint: ^5.20.1 => 5.20.1 typescript: ^4.1.0 => 4.5.5 npmGlobalPackages: npm: 8.8.0 pnpm: 7.1.9 yarn-upgrade-all: 0.7.1

Describe the bug

I have a react app with google login integrated in it which has a pre-signup trigger for a lambda which links Cognito user with google user and vice versa i.e. if user had previously signed up with email/password and now the user is trying to login with google then link them using Cognito's AdminLinkUser API and if user is logging in for the first time then create one user and link it with the google account.

When i login with google for the first time it shows the o-auth consent screen and after selecting an email the o-auth flow fails and i get an error as Already found an entry for username Google_XXX.

The only solution is to repeat the auth flow once again wherein the user is shown the consent o-auth screen again and after selecting the email he is successfully logged in and i get back a access token. Successive log-ins works fine on first attempt.

What I want is the user to be logged in the first time itself and not repeat the o-auth flow again, Is there any other workaround for this issue ?

Expected behavior

User is logged in after selecting email on the first consent screen

Reproduction steps

  1. Setup amplify with react.
  2. Add google as IDP in cognito.
  3. Add presign-up trigger lambda as mentioned above.
  4. Login from the react app

Code Snippet

Amplify configuration in react app:

Amplify.configure({ Auth: { mandatorySignId: true, region: config.cognito.REGION, userPoolId: config.cognito.USER_POOL_ID, userPoolWebClientId: config.cognito.APP_CLIENT_ID, oauth: { domain: 'xxx', scope: ['phone', 'email', 'openid', 'profile', 'aws.cognito.signin.user.admin'], redirectSignIn: 'http://localhost:3000/googleNewRegistration', redirectSignOut: 'http://localhost:3000/login', responseType: 'code', }, }, });

Code to signin the user : const signIn = async () => { await Auth.federatedSignIn({ provider: CognitoHostedUIIdentityProvider.Google, }); };

Log output

No response

aws-exports.js

No response

Manual configuration

No response

Additional configuration

No response

Mobile Device

No response

Mobile Operating System

No response

Mobile Browser

No response

Mobile Browser Version

No response

Additional information and screenshots

No response

runabh commented 2 years ago

An updates on this issue?

bunditta-p commented 2 years ago

Any chance to resolve this or any updates? I also have same issue.

AdiPomelo commented 2 years ago

i am a iOS dev and facing the same problem.

aniketkambli commented 2 years ago

@bunditta-p @AdiPomelo Catch the error thrown by cognito i.e. Already found an entry for username Google_XXX and then restart the auth flow i.e. call Auth.signIn() again which shows the consent screen again to the user and this time he can login. This only happens the first time and not always, another solution from the UX perspective would be to show the user a message as "Successfully linked/registered the accounts , please login" before showing the oauth consent screen for the second time. Hope this helps !

aniketkambli commented 2 years ago

https://bobbyhadz.com/blog/aws-amplify-already-found-entry

bunditta-p commented 2 years ago

@bunditta-p @AdiPomelo Catch the error thrown by cognito i.e. Already found an entry for username Google_XXX and then restart the auth flow i.e. call Auth.signIn() again which shows the consent screen again to the user and this time he can login. This only happens the first time and not always, another solution from the UX perspective would be to show the user a message as "Successfully linked/registered the accounts , please login" before showing the oauth consent screen for the second time. Hope this helps !

@aniketkambli Thanks for the solution! I already done catch the error thrown but it not the best way to handle an error. The solution was just workaround while we cannot do anything other than this. The best way is to fix at amplify not to send us Already found an entry for username xxxx for the first time so we don't have to tricky handle user to login second time.

abdallahshaban557 commented 2 years ago

Hello everyone, thank you for the workarounds that are mentioned on this issue. We are going to investigate this further to minimize the need to do these workarounds in the future!

aniketkambli commented 2 years ago

Login with Slack is also giving the exact same issue and the only workaround is to repeat the OAuth flow which is not good from the UX perspective and in Slack the user has to allow the permission twice

tannerabread commented 1 year ago

Just noting here in case anyone else finds this issue, this is a known problem from the Cognito side and is on their radar. Currently there is no timeline on when it will be fixed but will update this issue if I hear anything further

mike247 commented 1 year ago

Making the user log in twice is not an acceptable work around. Are there any updates on when this will be fixed?

abdallahshaban557 commented 1 year ago

Cognito has recently resolved an issue with linking federated users to an existing user profile in Cognito User Pools. As a result, your Amplify application can now merge user identities from 3rd party social identity providers to a Cognito user in a user pool using the Pre sign-up Lambda trigger. You can use the AdminLinkProviderForUser API from Cognito to set up custom logic to determine how your user identities get merged. To learn more about the use of this feature, you can check out the following documentation pages.

We will work on resources to share with you to explain how to integrate this feature into your Amplify app.

nadetastic commented 1 year ago

Following up here, I've tested this and can confirm that the user is not forced to login twice. Please let me know if you are still facing this issue.

@mike247 @aniketkambli @bunditta-p

Thanks!

nadetastic commented 1 year ago

Related to #5104