diff --git a/packages/app/src/components/PostCard/index.jsx b/packages/app/src/components/PostCard/index.jsx
index 71f96d9b..ec44ecb1 100644
--- a/packages/app/src/components/PostCard/index.jsx
+++ b/packages/app/src/components/PostCard/index.jsx
@@ -12,6 +12,25 @@ import useLayoutEffect from "rc-util/lib/hooks/useLayoutEffect"
import "./index.less"
+const mediaTypes = {
+ "jpg": "image",
+ "jpeg": "image",
+ "png": "image",
+ "gif": "image",
+ "mp4": "video",
+ "webm": "video",
+ "ogv": "video",
+ "mov": "video",
+ "avi": "video",
+ "mkv": "video",
+ "ogg": "audio",
+ "mp3": "audio",
+ "wav": "audio",
+ "flac": "audio",
+ "aac": "audio",
+ "m4a": "audio",
+}
+
const ContentFailed = () => {
return
@@ -98,44 +117,54 @@ const PostContent = React.memo((props) => {
additions = additions.map((uri, index) => {
const MediaRender = loadable(async () => {
- // create a basic http request for fetching the file media type
- const request = new Request(uri, {
- method: "HEAD",
- })
+ let extension = null
- // fetch the file media type
- const mediaType = await fetch(request)
- .then(response => response.headers.get("content-type"))
- .catch((error) => {
- console.error(error)
- return null
- })
+ try {
+ // get media type by parsing the uri
+ const mediaTypeExt = /\.([a-zA-Z0-9]+)$/.exec(uri)
- if (!mediaType) {
+ if (mediaTypeExt) {
+ extension = mediaTypeExt[1]
+ } else {
+ // try to get media by creating requesting the uri
+ const response = await fetch(uri, {
+ method: "HEAD",
+ })
+
+ extension = response.headers.get("content-type").split("/")[1]
+ }
+
+ const mediaType = mediaTypes[extension]
+
+ if (!mediaType) {
+ return () =>
+ }
+
+ switch (mediaType.split("/")[0]) {
+ case "image": {
+ return () =>

+ }
+ case "video": {
+ return () =>
+ }
+ case "audio": {
+ return () =>
+ }
+
+ default: {
+ return () =>
+ Unsupported media type [{mediaType}/{mediaTypeExt}]
+
+ }
+ }
+ } catch (error) {
+ console.error(error)
return () =>
}
-
- switch (mediaType.split("/")[0]) {
- case "image": {
- return () =>

- }
- case "video": {
- return () =>
- }
- case "audio": {
- return () =>
- }
-
- default: {
- return () =>
- Unsupported media type [{mediaType}]
-
- }
- }
})
return
{
})
-
return
{message}
- {additions &&
+ {additions.length > 0 &&
@@ -214,7 +242,7 @@ const PostActions = (props) => {
Delete
}
- trigger={['click']}
+ trigger={["click"]}
>
diff --git a/packages/app/src/components/PostCard/index.less b/packages/app/src/components/PostCard/index.less
index 022574ac..feb6c8ae 100644
--- a/packages/app/src/components/PostCard/index.less
+++ b/packages/app/src/components/PostCard/index.less
@@ -144,23 +144,34 @@
.additions {
width: 100%;
+ height: 28vh;
.addition {
width: 100%;
+ height: 100%;
// fixtures for media content
img {
width: 100%;
border-radius: 12px;
+
+ user-select: none;
+ -webkit-user-drag: none;
}
video {
- border-radius: 12px;
width: 100%;
+ border-radius: 12px;
+
+ user-select: none;
+ -webkit-user-drag: none;
}
audio {
width: 100%;
+
+ user-select: none;
+ -webkit-user-drag: none;
}
}
}
@@ -308,4 +319,34 @@
// .actionsIndicator {
// opacity: 0;
// }
+}
+
+.adm-swiper-track-inner {
+ display: flex;
+ align-items: center;
+
+ height: 100%;
+ width: 100%;
+
+ user-select: none;
+ -webkit-user-drag: none;
+
+ .adm-swiper-slide {
+ display: flex;
+ align-items: center;
+
+ user-select: none;
+ -webkit-user-drag: none;
+
+ .adm-swiper-item {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ height: fit-content;
+
+ user-select: none;
+ -webkit-user-drag: none;
+ }
+ }
}
\ No newline at end of file