-
Notifications
You must be signed in to change notification settings - Fork 340
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove pictrsDeleteToast
usage from PostForm
#1284
Changes from all commits
d75e436
12298c3
44e45bb
aa48adc
f86b9ed
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -25,7 +25,6 @@ import { | |
isImage, | ||
myAuth, | ||
myAuthRequired, | ||
pictrsDeleteToast, | ||
relTags, | ||
setupTippy, | ||
toast, | ||
|
@@ -73,6 +72,7 @@ interface PostFormState { | |
suggestedPostsRes: RequestState<SearchResponse>; | ||
metadataRes: RequestState<GetSiteMetadataResponse>; | ||
imageLoading: boolean; | ||
imageDeleteUrl: string; | ||
communitySearchLoading: boolean; | ||
communitySearchOptions: Choice[]; | ||
previewMode: boolean; | ||
|
@@ -86,6 +86,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> { | |
form: {}, | ||
loading: false, | ||
imageLoading: false, | ||
imageDeleteUrl: "", | ||
communitySearchLoading: false, | ||
previewMode: false, | ||
communitySearchOptions: [], | ||
|
@@ -269,6 +270,17 @@ export class PostForm extends Component<PostFormProps, PostFormState> { | |
{url && isImage(url) && ( | ||
<img src={url} className="img-fluid" alt="" /> | ||
)} | ||
{this.state.imageDeleteUrl && ( | ||
<button | ||
className="btn btn-danger btn-sm mt-2" | ||
onClick={linkEvent(this, this.handleImageDelete)} | ||
aria-label={i18n.t("delete")} | ||
data-tippy-content={i18n.t("delete")} | ||
> | ||
<Icon icon="x" classes="icon-inline mr-1" /> | ||
{capitalizeFirstLetter(i18n.t("delete"))} | ||
</button> | ||
)} | ||
{this.props.crossPosts && this.props.crossPosts.length > 0 && ( | ||
<> | ||
<div className="my-1 text-muted small font-weight-bold"> | ||
|
@@ -553,7 +565,15 @@ export class PostForm extends Component<PostFormProps, PostFormState> { | |
} | ||
|
||
handlePostUrlChange(i: PostForm, event: any) { | ||
i.setState(s => ((s.form.url = event.target.value), s)); | ||
const url = event.target.value; | ||
|
||
i.setState({ | ||
form: { | ||
url, | ||
}, | ||
imageDeleteUrl: "", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If |
||
}); | ||
|
||
i.fetchPageTitle(); | ||
} | ||
|
||
|
@@ -644,18 +664,35 @@ export class PostForm extends Component<PostFormProps, PostFormState> { | |
if (res.state === "success") { | ||
if (res.data.msg === "ok") { | ||
i.state.form.url = res.data.url; | ||
pictrsDeleteToast(file.name, res.data.delete_url as string); | ||
i.setState({ imageLoading: false }); | ||
i.setState({ | ||
imageLoading: false, | ||
imageDeleteUrl: res.data.delete_url as string, | ||
}); | ||
} else { | ||
toast(JSON.stringify(res), "danger"); | ||
} | ||
} else if (res.state === "failed") { | ||
console.error(res.msg); | ||
toast(res.msg, "danger"); | ||
i.setState({ imageLoading: false }); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Caught an infinite loading bug here, this resolves it. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thank you! |
||
} | ||
}); | ||
} | ||
|
||
handleImageDelete(i: PostForm) { | ||
const { imageDeleteUrl } = i.state; | ||
|
||
fetch(imageDeleteUrl); | ||
|
||
i.setState({ | ||
imageDeleteUrl: "", | ||
imageLoading: false, | ||
form: { | ||
url: "", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Clearing the |
||
}, | ||
}); | ||
} | ||
|
||
handleCommunitySearch = debounce(async (text: string) => { | ||
const { selectedCommunityChoice } = this.props; | ||
this.setState({ communitySearchLoading: true }); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using
this.state.imageDeleteUrl
for visibility of this button ensures it only appears alongside uploaded images. It's cleared upon change ofform.url
, so should be safe.