fix: character count should includes spoiler text (#1535)

* fix: character count should includes spoiler text

* fix: draft empty conditions exclude spoiler text
This commit is contained in:
Alex Liu 2023-02-06 01:36:33 +08:00 committed by GitHub
parent 04c4ff5225
commit 2bd8dc2dd5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 3 deletions

View file

@ -35,7 +35,7 @@ const {
dropZoneRef,
} = $(useUploadMediaAttachment($$(draft)))
let { shouldExpanded, isExpanded, isSending, isPublishDisabled, publishDraft, failedMessages, preferredLanguage } = $(usePublish(
let { shouldExpanded, isExpanded, isSending, isPublishDisabled, publishDraft, failedMessages, preferredLanguage, publishSpoilerText } = $(usePublish(
{
draftState,
...$$({ expanded, isUploading, initialDraft: initial }),
@ -74,6 +74,8 @@ const characterCount = $computed(() => {
}).join(' ').length + 1
}
length += stringLength(publishSpoilerText)
return length
})
@ -162,7 +164,7 @@ defineExpose({
<div v-if="draft.params.sensitive">
<input
v-model="draft.params.spoilerText"
v-model="publishSpoilerText"
type="text"
:placeholder="$t('placeholder.content_warning')"
p2 border-rounded w-full bg-transparent

View file

@ -21,6 +21,17 @@ export function usePublish(options: {
const isExpanded = $ref(false)
const failedMessages = $ref<string[]>([])
const publishSpoilerText = $computed({
get() {
return draft.params.sensitive ? draft.params.spoilerText : ''
},
set(val) {
if (!draft.params.sensitive)
return
draft.params.spoilerText = val
},
})
const shouldExpanded = $computed(() => expanded || isExpanded || !isEmpty)
const isPublishDisabled = $computed(() => {
return isEmpty || isUploading || isSending || (draft.attachments.length === 0 && !draft.params.status) || failedMessages.length > 0
@ -41,6 +52,7 @@ export function usePublish(options: {
const payload = {
...draft.params,
spoilerText: publishSpoilerText,
status: content,
mediaIds: draft.attachments.map(a => a.id),
language: draft.params.language || preferredLanguage,
@ -91,6 +103,7 @@ export function usePublish(options: {
isPublishDisabled,
failedMessages,
preferredLanguage,
publishSpoilerText,
publishDraft,
})
}

View file

@ -89,7 +89,6 @@ export const isEmptyDraft = (draft: Draft | null | undefined) => {
return (text.length === 0)
&& attachments.length === 0
&& (params.spoilerText || '').length === 0
}
export interface UseDraft {