Skip to content

Commit 30b02de

Browse files
committed
web,graphql: Fixes
1 parent 020d0e8 commit 30b02de

File tree

8 files changed

+44
-13
lines changed

8 files changed

+44
-13
lines changed

graphql-server/src/queryFactory/dolt/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,7 @@ export class DoltQueryFactory
335335
return this.queryMultiple(
336336
async query => {
337337
await query("BEGIN");
338+
await query("SET @autocommit = 0");
338339

339340
const msg = `Merge branch ${args.fromBranchName}`;
340341
const params = [msg];
@@ -350,9 +351,11 @@ export class DoltQueryFactory
350351
await query(qh.resolveConflicts, [`--${args.conflictResolveType}`]);
351352
await query(qh.getCommitMerge(!!args.author), params);
352353
} else {
354+
await query("ROLLBACK");
353355
throw new Error("expected conflicts but none found");
354356
}
355357

358+
await query("COMMIT");
356359
return true;
357360
},
358361
args.databaseName,

graphql-server/src/queryFactory/doltgres/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,7 @@ export class DoltgresQueryFactory
345345
return this.queryMultiple(
346346
async query => {
347347
await query("BEGIN");
348+
await query("SET autocommit TO 0");
348349

349350
const msg = `Merge branch ${args.fromBranchName}`;
350351
const params = [msg];
@@ -360,9 +361,11 @@ export class DoltgresQueryFactory
360361
await query(qh.resolveConflicts, [`--${args.conflictResolveType}`]);
361362
await query(qh.getCommitMerge(!!args.author), params);
362363
} else {
364+
await query("ROLLBACK");
363365
throw new Error("expected conflicts but none found");
364366
}
365367

368+
await query("COMMIT");
366369
return true;
367370
},
368371
args.databaseName,

web/renderer/components/pageComponents/DatabasePage/ForPullConflicts/ConflictsTable/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ export default function ConflictsTable(props: Props) {
8989
</table>
9090
</InfiniteScroll>
9191
) : (
92-
<p className={css.noChanges}>No conflicts for this table</p>
92+
<p className={css.noChanges}>No data conflicts for this table</p>
9393
)}
9494
</div>
9595
);

web/renderer/components/pageComponents/DatabasePage/ForPulls/PullActions/Merge/ResolveModal.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
import Link from "@components/links/Link";
2-
import { Button, ExternalLink, Modal, Radio } from "@dolthub/react-components";
2+
import {
3+
Button,
4+
ErrorMsg,
5+
ExternalLink,
6+
Modal,
7+
Radio,
8+
} from "@dolthub/react-components";
39
import { ConflictResolveType } from "@gen/graphql-types";
10+
import { ApolloErrorType } from "@lib/errors/types";
411
import { ModalProps } from "@lib/modalProps";
512
import { PullDiffParams } from "@lib/params";
613
import { pullConflicts } from "@lib/urls";
@@ -10,6 +17,7 @@ import css from "./index.module.css";
1017
type Props = ModalProps & {
1118
onClickWithResolve: (resolveType: ConflictResolveType) => Promise<void>;
1219
params: PullDiffParams;
20+
err?: ApolloErrorType;
1321
};
1422

1523
export default function ResolveModal(props: Props) {
@@ -24,7 +32,10 @@ export default function ResolveModal(props: Props) {
2432
onRequestClose={() => props.setIsOpen(false)}
2533
className={css.modal}
2634
button={
27-
<Button onClick={async () => await props.onClickWithResolve(resType)}>
35+
<Button
36+
onClick={async () => await props.onClickWithResolve(resType)}
37+
disabled={!!props.err}
38+
>
2839
Choose {resType.toLowerCase()} and merge
2940
</Button>
3041
}
@@ -56,6 +67,7 @@ export default function ResolveModal(props: Props) {
5667
</ExternalLink>
5768
.
5869
</p>
70+
<ErrorMsg err={props.err} />
5971
</div>
6072
</Modal>
6173
);

web/renderer/components/pageComponents/DatabasePage/ForPulls/PullActions/Merge/index.module.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,4 +157,8 @@
157157
p {
158158
@apply my-3;
159159
}
160+
161+
h3 {
162+
@apply my-0;
163+
}
160164
}

web/renderer/components/pageComponents/DatabasePage/ForPulls/PullActions/Merge/index.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import HeaderUserCheckbox from "@components/HeaderUserCheckbox";
22
import { Button, SmallLoader } from "@dolthub/react-components";
33
import { ConflictResolveType, PullDetailsFragment } from "@gen/graphql-types";
4+
import { ApolloErrorType } from "@lib/errors/types";
45
import { PullDiffParams } from "@lib/params";
56
import { FiGitPullRequest } from "@react-icons/all-files/fi/FiGitPullRequest";
67
import cx from "classnames";
@@ -31,6 +32,7 @@ export default function Merge(props: Props) {
3132
state,
3233
setState,
3334
mergeState,
35+
resolveState,
3436
} = useMergeButton(props.params);
3537
const red = hasConflicts;
3638

@@ -47,7 +49,8 @@ export default function Merge(props: Props) {
4749
disabled={disabled}
4850
onClick={onClick}
4951
onClickWithResolve={onClickWithResolve}
50-
loading={mergeState.loading}
52+
loading={resolveState.loading}
53+
err={resolveState.err}
5154
params={props.params}
5255
/>
5356
{mergeState.err && (
@@ -101,6 +104,7 @@ type MergeButtonProps = {
101104
onClickWithResolve: (resolveType: ConflictResolveType) => Promise<void>;
102105
loading: boolean;
103106
params: PullDiffParams;
107+
err?: ApolloErrorType;
104108
};
105109

106110
function MergeButton(props: MergeButtonProps) {
@@ -118,10 +122,9 @@ function MergeButton(props: MergeButtonProps) {
118122
{props.loading ? "Merging..." : "Resolve conflicts and merge"}
119123
</Button>
120124
<ResolveModal
125+
{...props}
121126
isOpen={modalOpen}
122127
setIsOpen={setModalOpen}
123-
onClickWithResolve={props.onClickWithResolve}
124-
params={props.params}
125128
/>
126129
</>
127130
) : (

web/renderer/components/pageComponents/DatabasePage/ForPulls/PullActions/Merge/useMergeButton.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export default function useMergeButton(params: PullDiffParams) {
3737
const disabled = hasConflicts;
3838

3939
const onClick = async () => {
40-
await merge({
40+
const { success } = await merge({
4141
variables: {
4242
...variables,
4343
author:
@@ -47,13 +47,14 @@ export default function useMergeButton(params: PullDiffParams) {
4747
},
4848
});
4949

50+
if (!success) return;
5051
res.client
5152
.refetchQueries(refetchMergeQueriesCacheEvict)
5253
.catch(console.error);
5354
};
5455

5556
const onClickWithResolve = async (resolveType: ConflictResolveType) => {
56-
await mergeWithResolve({
57+
const { success } = await mergeWithResolve({
5758
variables: {
5859
...variables,
5960
conflictResolveType: resolveType,
@@ -64,6 +65,7 @@ export default function useMergeButton(params: PullDiffParams) {
6465
},
6566
});
6667

68+
if (!success) return;
6769
res.client
6870
.refetchQueries(refetchMergeQueriesCacheEvict)
6971
.catch(console.error);
@@ -80,8 +82,12 @@ export default function useMergeButton(params: PullDiffParams) {
8082
state,
8183
setState,
8284
mergeState: {
83-
loading: res.loading || resolveRes.loading,
84-
err: res.err ?? resolveRes.err,
85+
loading: res.loading,
86+
err: res.err,
87+
},
88+
resolveState: {
89+
loading: resolveRes.loading,
90+
err: resolveRes.err,
8591
},
8692
};
8793
}

web/renderer/lib/refetchQueries.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,6 @@ export const refetchMergeQueriesCacheEvict: RefetchOptions = {
145145
updateCache(cache: TCacheShape) {
146146
[
147147
"docs",
148-
"pullWithDetails",
149-
// We don't include `pull` here to avoid multiple pull logs on merge
150-
"pulls",
151148
"doc",
152149
"rows",
153150
"tableNames",
@@ -158,6 +155,9 @@ export const refetchMergeQueriesCacheEvict: RefetchOptions = {
158155
"branchOrDefault",
159156
"docOrDefaultDoc",
160157
"pullConflictsSummary",
158+
"pullWithDetails",
159+
// We don't include `pull` here to avoid multiple pull logs on merge
160+
"pulls",
161161
].forEach(fieldName => {
162162
cache.evict({ fieldName });
163163
});

0 commit comments

Comments
 (0)