From c39ae06bd4bb553649a015f3d104440f1584402d Mon Sep 17 00:00:00 2001 From: Dessalines Date: Sat, 7 Sep 2019 20:42:01 -0700 Subject: Allow Image uploads through docker pictshare. - Fixes #210 --- ui/src/components/comment-form.tsx | 29 +++++++++++++++++++++++++++-- ui/src/components/post-form.tsx | 28 +++++++++++++++++++++++++++- ui/src/components/post-listing.tsx | 7 ++++++- 3 files changed, 60 insertions(+), 4 deletions(-) (limited to 'ui/src/components') diff --git a/ui/src/components/comment-form.tsx b/ui/src/components/comment-form.tsx index e18a6e3f..837cefb5 100644 --- a/ui/src/components/comment-form.tsx +++ b/ui/src/components/comment-form.tsx @@ -136,7 +136,10 @@ export class CommentForm extends Component { } {this.props.node && } # - # +
+ + +
@@ -154,8 +157,8 @@ export class CommentForm extends Component { i.state.previewMode = false; i.state.commentForm.content = undefined; - i.setState(i.state); event.target.reset(); + i.setState(i.state); if (i.props.node) { i.props.onReplyCancel(); } @@ -177,6 +180,28 @@ export class CommentForm extends Component { handleReplyCancel(i: CommentForm) { i.props.onReplyCancel(); } + + handleImageUpload(i: CommentForm, event: any) { + event.preventDefault(); + let file = event.target.files[0]; + const imageUploadUrl = `/pictshare/api/upload.php`; + const formData = new FormData(); + formData.append('file', file); + fetch(imageUploadUrl, { + method: 'POST', + body: formData, + }) + .then(res => res.json()) + .then(res => { + let url = `${window.location.origin}/pictshare/${res.url}`; + let markdown = (res.filetype == 'mp4') ? `[vid](${url}/raw)` : `![](${url})`; + let content = i.state.commentForm.content; + content = (content) ? `${content} ${markdown}` : markdown; + i.state.commentForm.content = content; + i.setState(i.state); + }) + .catch((error) => alert(error)); + } userSearch(text: string, cb: any) { if (text) { diff --git a/ui/src/components/post-form.tsx b/ui/src/components/post-form.tsx index 2e94e177..1591dde0 100644 --- a/ui/src/components/post-form.tsx +++ b/ui/src/components/post-form.tsx @@ -109,7 +109,10 @@ export class PostForm extends Component { {this.state.suggestedTitle &&
#
} - # +
+ + +
{this.state.crossPosts.length > 0 && <>
#
@@ -266,6 +269,29 @@ export class PostForm extends Component { i.setState(i.state); } + handleImageUpload(i: PostForm, event: any) { + event.preventDefault(); + let file = event.target.files[0]; + const imageUploadUrl = `/pictshare/api/upload.php`; + const formData = new FormData(); + formData.append('file', file); + fetch(imageUploadUrl, { + method: 'POST', + body: formData, + }) + .then(res => res.json()) + .then(res => { + let url = `${window.location.origin}/pictshare/${res.url}`; + if (res.filetype == 'mp4') { + url += '/raw'; + } + + i.state.postForm.url = url; + i.setState(i.state); + }) + .catch((error) => alert(error)); + } + parseMessage(msg: any) { let op: UserOperation = msgOp(msg); if (msg.error) { diff --git a/ui/src/components/post-listing.tsx b/ui/src/components/post-listing.tsx index ccd3ce45..5b83c74e 100644 --- a/ui/src/components/post-listing.tsx +++ b/ui/src/components/post-listing.tsx @@ -4,7 +4,7 @@ import { WebSocketService, UserService } from '../services'; import { Post, CreatePostLikeForm, PostForm as PostFormI, SavePostForm, CommunityUser, UserView, BanType, BanFromCommunityForm, BanUserForm, AddModToCommunityForm, AddAdminForm, TransferSiteForm, TransferCommunityForm } from '../interfaces'; import { MomentTime } from './moment-time'; import { PostForm } from './post-form'; -import { mdToHtml, canMod, isMod, isImage, getUnixTime } from '../utils'; +import { mdToHtml, canMod, isMod, isImage, isVideo, getUnixTime } from '../utils'; import { i18n } from '../i18next'; import { T } from 'inferno-i18next'; @@ -86,6 +86,11 @@ export class PostListing extends Component { {post.url && isImage(post.url) && } + {post.url && isVideo(post.url) && + + }
-- cgit v1.2.3