diff --git a/src/components/Views/Edit.module.scss b/src/components/Views/Edit.module.scss
index f65a9d8a..8fd0dc46 100644
--- a/src/components/Views/Edit.module.scss
+++ b/src/components/Views/Edit.module.scss
@@ -97,3 +97,14 @@
}
}
}
+
+.inputContainer {
+ position: relative;
+
+ .validationError {
+ position: absolute;
+ top: 100%;
+ font-size: small;
+ color: #f00;
+ }
+}
diff --git a/src/components/Views/Edit.tsx b/src/components/Views/Edit.tsx
index 962e9e26..8568045e 100644
--- a/src/components/Views/Edit.tsx
+++ b/src/components/Views/Edit.tsx
@@ -6,9 +6,7 @@ import { Title } from '@solidjs/meta'
import type { Shout, Topic } from '../../graphql/types.gen'
import { apiClient } from '../../utils/apiClient'
import { TopicSelect } from '../Editor/TopicSelect/TopicSelect'
-import { router, useRouter } from '../../stores/router'
-import { openPage } from '@nanostores/router'
-import { translit } from '../../utils/ru2en'
+import { useRouter } from '../../stores/router'
import { Editor } from '../Editor/Editor'
import { Panel } from '../Editor/Panel'
import { useEditorContext } from '../../context/editor'
@@ -32,6 +30,7 @@ export const EditView = (props: EditViewProps) => {
const [isSlugChanged, setIsSlugChanged] = createSignal(false)
setForm({
+ shoutId: props.shout.id,
slug: props.shout.slug,
title: props.shout.title,
subtitle: props.shout.subtitle,
@@ -82,17 +81,21 @@ export const EditView = (props: EditViewProps) => {
[styles.visible]: page().route === 'edit'
})}
>
-
- {formErrors.title}
+
{
try {
await apiClient.updateArticle({
- slug: form.slug,
- article: {
+ shoutId: form.shoutId,
+ shoutInput: {
body: form.body,
topics: form.selectedTopics.map((topic) => topic.slug),
// authors?: InputMaybe>>
diff --git a/src/graphql/mutation/article-publish.ts b/src/graphql/mutation/article-publish.ts
index 582c9086..4e83fe44 100644
--- a/src/graphql/mutation/article-publish.ts
+++ b/src/graphql/mutation/article-publish.ts
@@ -1,7 +1,7 @@
import { gql } from '@urql/core'
export default gql`
- mutation UpdateShoutMutation($slug: String!) {
+ mutation PublishShoutMutation($slug: String!) {
publishShout(slug: $slug) {
error
shout {
diff --git a/src/graphql/mutation/article-update.ts b/src/graphql/mutation/article-update.ts
index 3da0ef20..e4e701e6 100644
--- a/src/graphql/mutation/article-update.ts
+++ b/src/graphql/mutation/article-update.ts
@@ -1,8 +1,8 @@
import { gql } from '@urql/core'
export default gql`
- mutation UpdateShoutMutation($slug: String!, $shout: ShoutInput!) {
- updateShout(slug: $slug, inp: $shout) {
+ mutation UpdateShoutMutation($shoutId: Int!, $shoutInput: ShoutInput!) {
+ updateShout(shoutId: $shoutId, shoutInput: $shoutInput) {
error
shout {
id
diff --git a/src/graphql/types.gen.ts b/src/graphql/types.gen.ts
index 699ff3d8..d671c00c 100644
--- a/src/graphql/types.gen.ts
+++ b/src/graphql/types.gen.ts
@@ -228,7 +228,7 @@ export type MutationDeleteReactionArgs = {
}
export type MutationDeleteShoutArgs = {
- slug: Scalars['String']
+ shout_id: Scalars['Int']
}
export type MutationDestroyTopicArgs = {
@@ -246,8 +246,8 @@ export type MutationMarkAsReadArgs = {
}
export type MutationPublishShoutArgs = {
- inp: ShoutInput
- slug: Scalars['String']
+ shout_id: Scalars['Int']
+ shout_input?: InputMaybe
}
export type MutationRateUserArgs = {
@@ -292,8 +292,8 @@ export type MutationUpdateReactionArgs = {
}
export type MutationUpdateShoutArgs = {
- inp: ShoutInput
- slug: Scalars['String']
+ shout_id: Scalars['Int']
+ shout_input: ShoutInput
}
export type MutationUpdateTopicArgs = {
diff --git a/src/utils/apiClient.ts b/src/utils/apiClient.ts
index 50eaef47..153e4d2d 100644
--- a/src/utils/apiClient.ts
+++ b/src/utils/apiClient.ts
@@ -248,10 +248,14 @@ export const apiClient = {
console.debug('[createArticle]:', response.data)
return response.data.createShout.shout
},
- updateArticle: async ({ slug, article }: { slug: string; article: ShoutInput }): Promise => {
- const response = await privateGraphQLClient
- .mutation(updateArticle, { slug, shout: article })
- .toPromise()
+ updateArticle: async ({
+ shoutId,
+ shoutInput
+ }: {
+ shoutId: number
+ shoutInput: ShoutInput
+ }): Promise => {
+ const response = await privateGraphQLClient.mutation(updateArticle, { shoutId, shoutInput }).toPromise()
console.debug('[updateArticle]:', response.data)
return response.data.updateShout.shout
},