diff --git a/frontend/src/metabase-types/types/Card.ts b/frontend/src/metabase-types/types/Card.ts index 475c0cfd67a5b526dc98920c3cd67a40edb8890a..f01e9da33cd09e35084396ee1695039ce2ed4f10 100644 --- a/frontend/src/metabase-types/types/Card.ts +++ b/frontend/src/metabase-types/types/Card.ts @@ -37,6 +37,7 @@ export type SavedCard<Query = DatasetQuery> = UnsavedCard<Query> & { // Only for native queries is_write?: boolean; + action_id?: number; }; export type Card<Query = DatasetQuery> = SavedCard<Query> | UnsavedCard<Query>; diff --git a/frontend/src/metabase/writeback/components/ActionCreator/ActionCreator.tsx b/frontend/src/metabase/writeback/components/ActionCreator/ActionCreator.tsx index 56b1bd04a2eb32c69ff882ad3e8a2ca49df99a7b..5006395141d10081b7f796c9d7f03a6c0793b381 100644 --- a/frontend/src/metabase/writeback/components/ActionCreator/ActionCreator.tsx +++ b/frontend/src/metabase/writeback/components/ActionCreator/ActionCreator.tsx @@ -2,6 +2,7 @@ import React, { useState, useEffect } from "react"; import { t } from "ttag"; import _ from "underscore"; import { connect } from "react-redux"; +import { push } from "react-router-redux"; import Actions from "metabase/entities/actions"; import { getMetadata } from "metabase/selectors/metadata"; @@ -36,6 +37,10 @@ const mapStateToProps = ( actionId: action ? action.id : undefined, }); +const mapDispatchToProps = { + push, +}; + interface ActionCreatorProps { metadata: Metadata; question?: Question; @@ -47,6 +52,7 @@ function ActionCreatorComponent({ metadata, question: passedQuestion, actionId, + push, }: ActionCreatorProps) { const [question, setQuestion] = useState( passedQuestion ?? newQuestion(metadata), @@ -67,8 +73,9 @@ function ActionCreatorComponent({ const afterSave = (action: SavedCard) => { setQuestion(question.setCard(action)); setTimeout(() => setShowSaveModal(false), 1000); - // cannot redirect new action to /action/:id - // because the backend doesnt give us an action id yet + if (!actionId && action.action_id) { + setTimeout(() => push(`/action/${action.action_id}`), 1500); + } }; const handleClose = () => setShowSaveModal(false); @@ -113,5 +120,5 @@ export const ActionCreator = _.compose( Actions.load({ id: (state: State, props: { actionId?: number }) => props.actionId, }), - connect(mapStateToProps), + connect(mapStateToProps, mapDispatchToProps), )(ActionCreatorComponent);